|
[Date Index]
[Thread Index]
[Author Index]
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/
|
Prev by Date:
Re: A question about algebraic numbers using Mathematica
Next by Date:
Re: Re: Types in Mathematica
Previous by thread:
Re: FixedPoint stops "when elements no longer change"?
Next by thread:
Types in Mathematica, a practical example
|