Re: How to put text on a curved surface?
- To: mathgroup at smc.vnet.net
- Subject: [mg87221] Re: How to put text on a curved surface?
- From: "Fred Klingener" <gigabitbucket at gmail.com>
- Date: Fri, 4 Apr 2008 02:59:59 -0500 (EST)
- References: <fsvels$sto$1@smc.vnet.net>
- Reply-to: "Fred Klingener" <gigabitbucket at gmail.com>
"P_ter" <peter_van_summeren at yahoo.co.uk> wrote in message news:fsvels$sto$1 at smc.vnet.net... >I would like to put "Mathematica" on a curved surface, e.g. a torus. > Can anyone help here? > with friendly greetings, > P_ter Brute force. Not much slower than MeshShading. Make raster of text, compose Polygons on the flat raster grid, apply FaceForm[RGBColor] to each Polygon, and display with Graphics3D: w = 160; h = 40; map = Rasterize["**** Mathematica ****" , "RGBColor" , RasterSize -> {w, h} , Background -> White]; Graphics3D[{EdgeForm[], Table[{FaceForm[map[[i, j]]], Polygon[{{i, j, 0}, {i, j + 1, 0}, {i + 1, j + 1, 0}, {i + 1, j, 0}}]} , {i, 1, h - 1} , {j, 1, w - 1}]} Next, map the 2D raster grid onto the 3D coordinates to on a torus: r = 1.0; r0 = 0.3; fx[i_, j_] := (r - r0 Cos[2 Pi i/40]) Cos[(2 Pi j)/160]; fy[i_, j_] := (r - r0 Cos[2 Pi i/40]) Sin[(2 Pi j)/160]; fz[i_, j_] := r0 Sin[2 Pi i/40]; w = 160; h = 40; map = Rasterize["**** Mathematica ****" , "RGBColor" , Background -> White , RasterSize -> {w, h}]; Graphics3D[{EdgeForm[] , Table[{FaceForm[map[[i, j]]], Polygon[{{fx[i, j], fy[i, j], fz[i, j]} , {fx[i, j + 1], fy[i, j + 1], fz[i, j + 1]} , {fx[i + 1, j + 1], fy[i + 1, j + 1], fz[i + 1, j + 1]} , {fx[i + 1, j], fy[i + 1, j], fz[i + 1, j]}}]} , {i, 1, h - 1} , {j, 1, w - 1}]} ] It could be prettied up some, but it'd still be a pig. Cheers, Fred Klingener