Re: Polygons
- To: mathgroup
- Subject: Re: Polygons
- From: twj
- Date: Fri, 5 Jun 92 11:14:44 CDT
In response to the Art Ogawa mail last week about edges of polygons: >You write: >> I have encountered what seems to be a bug when using >> Polygon in 3D-graphics. I am running Mathematica 2.03 >> Enhanced on a Mac IIci. >> The problem is that if a polygon is viewed "edge-on", >> Mathematica gives a Postscript error message instead >> of rendering the graphic. >Welcome to the club. I've encountered the same problem in Mathematica >and reported it to Wolfram himself, and to Tom Wickham-Jones, who >has to do with the implementation of Mathematica's graphics capabilities. >Neither has replied to my note. Perhaps by publicising this problem >on math-group, wri will be made to feel pressure from users... >You've hit upon a way of making Mathematica generate internal PostScript >code that it cannot render, simply by viewing an Edge from an edge-on >viewpoint. Actually this is not the same problem. What happened is that PostScript was made which did not draw anything. Something like Show[ Graphics[]] was rendered. The original mail was the complaint that if there was one polygon edge-on a PostScript message would result. This stated that there were no PostScript drawing instructions in the cell. This is a version of this problem.... tri3 = Polygon[ { {-1, 0,0}, {1,0,0}, {0, 0, -1}}] Show[ Graphics3D[ tri3]] Show[ Graphics3D[ tri3, ViewPoint -> {0,0,2}]] On the Mac the second Show resulted in text in the graphics cell stating that there was nothing to show. Note that if another 3D primitive was included this second object would be seen and no messages produced. In fact there is a problem here which is fixed in V2.1 This error is that even if the Polygon can not be seen there is still a box which may be drawn around the scene depending upon the setting of the Boxed option. In V2.0 if you drew nothing you would not get a box but in V2.1 you will. Thus apart from the drawing of the box this message from the Mac FE is concerned with what should the response of the system to something like Show[ Graphics[]] Theo Gray likens the message which tells you that the cell does not contain any drawing instructions to a comment "This page is intentionally left blank". The behaviour is debatable but it is not definitely an error. Art Ogawa is talking about something completely different. He is talking about how edges of polygons should be rendered. He makes the point that the thickness of the edges of polygons are not given a perspective transformation. Neither is the thickness of lines and nor for that matter is text. Whether or not this is a bug is a matter for debate. First one can note that edges and lines are special objects, they are not shaded acording to the lighting model. Furthermore in many cases there is little difference between the two behaviours. If you want lines to be cylinders you can make them as such and make spheres instead of points. Second if the perspective is to be included this would substantially increase the size of the PostScript which is emitted to represent the picture. Having larger PostScript will use more system resources and will also increasing the time to render the picture. Do you want this to happen in all cases? If we say to people "we will change 3D graphics so that in some cases they look different but in most cases they are unchanged but they will always be slower and use more system resources" what will they say? The final point is that you really can have your cake and eat it. It is quite easy to replace the polygons by a set of polygons some of which will represent the edge. You could easily make this the default behaviour and have the unadulterated object returned. This is one of the strengths of Mathematica graphics, you can easily tailor it to fit your needs. You will anyway have to accept the extra PostScript which this entails and you also must accept the extra Mathematica expressions. Note that in V2.1 these require less memory and there are more tools to eliminate common sub-expressions which will reduce the memory required. Since you can get both types of behaviour I don't there is a problem and I don't this can be called a bug in the renderer.