Re: planar polygon plot 2
- To: mathgroup at smc.vnet.net
- Subject: [mg16555] Re: planar polygon plot 2
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Tue, 16 Mar 1999 04:00:24 -0500
- References: <7c6fad$i0s$7@dragonfly.wolfram.com> <7cjmh8$5q9$2@dragonfly.wolfram.com>
- Sender: owner-wri-mathgroup at wolfram.com
In the posting copied below the line *********************** Adam Smith writes >I am not sure what you mean by the shading being off. But try changing the >order of the points. I think the input below will produce what you want. I >found it by trial and error - I don't understand why it makes a difference to >Mathematica. Adam: In 3D the polygon poly = Polygon[{p1,p2,p3,p4....pn}} is shown by 1) drawing the line Line[{p1,p2,p3,p4....pn,p1}] as its edge; 2) drawing the triangles Polygon[{p1,p2,p3}], Polygon[{p1,p3,p4}], .., Polygon[{p1,p(n-1),pn}] with the coloring given to the first one and without edges. Not all planar polygons can be shown satisfactorily in 3D by choosing the first point; for example Show[Graphics3D[ Polygon[{{0,0,0}, {3,0,0},{2,3,0},{2,1,0},{1,1,0},{1,3,0}}], ViewPoint -> {0,0,5}] ( 3D version of Show[Graphics[Polygon[{{0, 0}, {3, 0}, {2, 3}, {2, 1}, {1, 1}, {1, 3}}]]] ) The method that I gave earlier (triangulating from the centroid) does not work for this polygon either. I am grateful to Richard Hsu for letting me know that although my coding of this was working it was also generating warning messages. It turns out that I should have some parentheses to deal with the way (...)& grabs expression on its right: It should have been Show[Graphics3D[ Polygon[ { {0,0,0}, {1,0.5,0}, {2,0,0}, {2,2,0}, {1,1.5,0}, {0,2,0} } ] /.Polygon[lst_]:> ( {Line[#],EdgeForm[], Polygon[ Prepend[#, Plus@@lst/Length[lst]]] }&[Append[lst,First[lst]]] ) ]] instead of Show[Graphics3D[ Polygon[ { {0,0,0}, {1,0.5,0}, {2,0,0}, {2,2,0}, {1,1.5,0}, {0,2,0} } ] /.Polygon[lst_]:> {Line[#],EdgeForm[], Polygon[ Prepend[#, Plus@@lst/Length[lst]]] }&[Append[lst,First[lst]]] ]] The latter is also less efficient --------------------- Allan Hayes Mathematica Training and Consulting Leicester UK www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565 **************************************************************************** ** adam.smith at hillsdale.edu wrote in message <7cjmh8$5q9$2 at dragonfly.wolfram.com>... >In article <7c6fad$i0s$7 at dragonfly.wolfram.com>, > Richard S Hsu <rhsu at U.Arizona.EDU> wrote: >> Hi, >> >> I want to plot a planar polygon in 3D with shading. >> when the polygon is concave, the shading could be wrong. >> >> For a simple example: >> >> Show[ Graphics3D[ Polygon[ { {0,0,0}, {1,0.5,0}, {2,0,0}, >> {2,2,0}, {1,1.5,0}, {0,2,0} } ] ] ]; >> >> I know what Mathematica is doing here, but want to know >> if there is a easy way to get correct shading for general >> 3D planar polygons. >> >> Thanks >> >> > >I am not sure what you mean by the shading being off. But try changing the >order of the points. I think the input below will produce what you want. I >found it by trial and error - I don't understand why it makes a difference to >Mathematica. > >Show[ Graphics3D[ Polygon[ { {1,0.5,0}, {2,0,0}, {2,2,0}, {1,1.5,0}, >{0,2,0},{0,0,0} } ] ]; > >Adam Smith