Re: Incorrect, misleading, "Operate Directly on Graphics" example.
- To: mathgroup at smc.vnet.net
- Subject: [mg80933] Re: Incorrect, misleading, "Operate Directly on Graphics" example.
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Thu, 6 Sep 2007 05:17:12 -0400 (EDT)
- Organization: Uni Leipzig
- References: <fblji3$pji$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
Hi, and (PolyhedronData["SnubDodecahedron"] // Normal) /. Polygon[x : {_, _, _}] :> {Yellow, Opacity[.3], Polygon[x]} does not help Regards Jens Q.E.D. wrote: > I looked at another example, "Operate Directly on Graphics". > It's off the "New in 6" "Dynamic Graphical Input" page, the top right image, > the small/large polyhedrons. > URL: > http://www.wolfram.com/products/mathematica/newin6/content/DynamicGraphicalInput/ > > This looks so neat, just apply a simple rule and you get this > change...except you don't. > > Here's what I tried -- input and evaluate: > > PolyhedronData["SnubDodecahedron"] > > Then cut and paste the graphics object and append: > > /. Polygon[x : {_, _, _}] :> {Yellow, Opacity[.3], Polygon[x]} > > Nothing happens, the resulting graphics object is unchanged. > > So I dug around a bit and came up with a graphics object which is of the > form (a list of polygons) expected by the rule: > > Graphics3D[ > Map[Polygon, > PolyhedronData["SnubDodecahedron", "VertexCoordinates"][[#]] & /@ > PolyhedronData["SnubDodecahedron", "FaceIndices"]]] > > Now cut and paste this special graphics object and again append the rule > given by the "Operate Directly on Graphics" example: > > /. Polygon[x : {_, _, _}] :> {Yellow, Opacity[.3], Polygon[x]} > > And, yes it works, giving the graphics object shown as output by the > example. > > So how do you get this result just using the plain graphics object from > PolyhedronData["SnubDodecahedron"]? > > Here's what I ended up with as a rule: > > /.Polygon[x_] :> {Polygon[Cases[x, Except[{_, _, _}]]], > {Yellow, Opacity[.3], Polygon[Cases[x, {_, _, _}]]}} > > The complexity is necessary due to the way the plain graphics object is > structured. > It keeps an array of shared vertex coordinates and a single polygon object > with a list of index lists into that array. > So the rule breaks the polygon object into two parts, one without triangles > the other with only triangles and the change applied. > This keeps the graphics object small and allows the change to be made > rapidly. > > Q.E.D. > > >