Re: Rendering goes into infinite loop
- To: mathgroup at smc.vnet.net
- Subject: [mg62793] Re: Rendering goes into infinite loop
- From: "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de>
- Date: Mon, 5 Dec 2005 13:40:56 -0500 (EST)
- Organization: Uni Leipzig
- References: <dmtbku$fmc$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi, the graphics has several polygons that overlap complete. This cause Mathematicas painter algoritm to hang up because it can't split the polygons into non-overalping pices. Regards Jens "Steven T. Hatton" <hattons at globalsymmetry.com> schrieb im Newsbeitrag news:dmtbku$fmc$1 at smc.vnet.net... | The following is an example from _The Mathematica GuideBook for | Programming_, chapter 6. I made a few minor modification. For | one, I set the DisplayFunction->Identity. I also changed the | ViewPoint->{1.300, -2.400, 2.000}. It was originally | ViewPoint->{1, 1, 1}. With that value, I found the kernel | went into what appeared to be an infinite loop. I could kill | the kernel and get the front end back, but while the kernel ran, | I could not interact with the front end at all. I suspect this | is Linux specific. Could I get some people to test this to see | if there is a problem on other systems? | | I'm running SuSE 10 on a P4. The display manager doesn't seem to | be the problem. I tried different DMs and windown managers. | | In[1]:= GluedPolygons[n_Integer?(# >= 3&), angle:\[Alpha]_?(Im[N[#]] === 0&), | iter__Integer?(# >= 0&), faceShape:(Polygon | Line), | opts___Rule] := | Module[{c = N[Cos[\[Alpha]]], s = N[Sin[\[Alpha]]], myUnion, \[ScriptR], \[ScriptCapitalR], allm, argch, | makeHole, makeLine, \[ScriptN] = #/Sqrt[#.#]&, \[CurlyEpsilon] = 10^-6}, | myUnion[l_] := Union[l, SameTest -> ((Plus @@ (#.#& /@ (#1 - #2))) < \[CurlyEpsilon]&)]; | | \[ScriptR][point_, rotPoint_, {dir1_, dir2_, dir3_}] := | Module[{\[Delta] = point - rotPoint, parallel, normal}, | parallel = \[Delta].dir1 dir1; | normal = Sqrt[#.#]&[\[Delta] - parallel]; | rotPoint + c normal dir2 + s normal dir3 + parallel]; | | \[ScriptCapitalR][l_] := Module[{dir1, dir2, dir3}, | (* three orthogonal directions *) | dir1 = \[ScriptN][Subtract @@ Take[l, 2]]; | dir2 = \[ScriptN][(Plus @@ l)/Length[l] - (Plus @@ Take[l, 2])/2]; | dir3 = -Cross[dir1, dir2]; | Map[N[\[ScriptR][#, l[[1]], {dir1, dir2, dir3}]]&, l, {-2}]]; | | allm[l_] := Table[RotateLeft[l, i], {i, Length[l] - 1}]; | argch[l_] := Join[Reverse[Take[l, 2]], Reverse[Drop[l, 2]]]; | | makeHole[l_] := | With[{mp = (Plus @@ l)/Length[l], h = Append[#, First[#]]&[l]}, | MapThread[Polygon[Join[#1, Reverse[#2]]]&, | {Partition[h, 2, 1], Partition[mp + 0.8(# - mp)& /@ h, 2, 1]}]]; | | makeLine[l_] := Line[Append[l, First[l]]]; | | Show[Graphics3D[If[faceShape === Polygon, makeHole[#], makeLine[#]]& /@ | Join[{Table[N[{Cos[\[CurlyPhi]], Sin[\[CurlyPhi]], 0}], {\[CurlyPhi], 0, 2Pi - 2Pi/n, 2Pi/n}]}, | | If[iter > 0, Flatten[NestList[myUnion[argch /@ (\[ScriptCapitalR] /@ | Flatten[Join[allm /@ #], 1])]&, Join[argch /@ (\[ScriptCapitalR] /@ #)]&[ | Table[Table[N[{Cos[\[CurlyPhi]], Sin[\[CurlyPhi]], 0}], | {\[CurlyPhi], \[CurlyPhi]0, \[CurlyPhi]0 + 2Pi - 2Pi/n, 2Pi/n}], | {\[CurlyPhi]0, 0, 2Pi - 2Pi/n, 2Pi/n}]], iter - 1], 1], {}]]], opts]] | | In[2]:= g = GluedPolygons[3, 0.729729, 4, Polygon, | Boxed -> False, | SphericalRegion -> True, | ViewPoint->{1.300, -2.400, 2.000}, | DisplayFunction -> Identity]; | | In[3]:= Show[g, DisplayFunction -> $DisplayFunction] | | -- | The Mathematica Wiki: http://www.mathematica-users.org/ | Math for Comp Sci http://www.ifi.unizh.ch/math/bmwcs/master.html | Math for the WWW: http://www.w3.org/Math/ |