MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Crashing problem with 3d IFS program

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123569] Re: Crashing problem with 3d IFS program
  • From: Heike Gramberg <heike.gramberg at gmail.com>
  • Date: Sun, 11 Dec 2011 03:49:01 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jbq3b6$ihl$1@smc.vnet.net> <201112101228.HAA19271@smc.vnet.net>

It seems that Draw in your package uses ParametricPlot3D to plot the 
shapes. Since the shapes are basically just polyhedra, you only need to 
know the coordinates of the vertices of the shapes. You can then use 
Polygon to draw the faces, e.g. you could do something like

plot[Manifold[p_, c___]] := Graphics3D@Module[{pp, combis, img},
   If[ArrayDepth[p] == 1, pp = {p}, pp = p];
   combis = Tuples[{c}[[All, {2, 3}]]];
   With[{
     faces = {{1, 5, 6, 2}, {1, 2, 4, 3}, {1, 3, 7, 5},
       {8, 7, 3, 4}, {8, 4, 2, 6}, {8, 6, 5, 7}}},
    Table[img = k /. (Thread[{c}[[All, 1]] -> #] & /@ combis);
     GraphicsComplex[img, Polygon /@ faces], {k, pp}]]]

Then to plot g, g2, etc. you could do

(* copy-pasted from previous post *)
OneStepIFS[ifs_][s_] := Flatten[Map[Through[ifs[#]] &, s], 1]
IterateIFS[ifs_, init_, n_] := Nest[OneStepIFS[ifs], {init}, n]
ManifoldIFS[ifs_, Manifold[p_, c___], n_] :=
 Manifold[IterateIFS[ifs, p, n], c]
Clear[Sierpinsky3D, Sierpinsky3DIFS, gr]
pieces = N[{{0, 0, 0}, {0, 0, 1}, {0, 0, 2}, {0, 1, 0}, {0, 1, 2}, {0,
       2, 0}, {0, 2, 1}, {0, 2, 2}, {1, 1/2, 0}, {1, 1/2, 2}, {1, 1.5,
       0}, {1, 1.5, 2}, {2, 1, 0}, {2, 1, 1}, {2, 1, 2}, {-1, 0,
      1/2}, {-1, 2, 1/2}, {-1, 0, 1.5}, {-1, 2, 1.5}, {-2, 0, 1}, {-2,
       1, 1}, {-2, 2, 1}}/4];
Sierpinsky3D[n_][v_] := (1/3)*v + pieces[[n]]
Sierpinsky3DIFS := Array[Sierpinsky3D, Length[pieces]]

gr = plot[
   ManifoldIFS[Sierpinsky3DIFS,
    Manifold[{u/1.01, (1 - u) v + 1, 2*w/1.01}/(4/3)/2, {u, 0, 1}, {v,
       0, 1}, {w, 0, 1}], 2]];
gr3 = plot[
   ManifoldIFS[Sierpinsky3DIFS,
    Manifold[{u/1.01, -(1 - u) v + 1, 2*w/1.01}/(4/3)/2, {u, 0,
      1}, {v, 0, 1}, {w, 0, 1}], 2]];
gr2 = plot[
   ManifoldIFS[Sierpinsky3DIFS,
    Manifold[{-u/1.01, 2*w/1.01, 1 + (1 - u) v}/(4/3)/2, {u, 0,
      1}, {v, 0, 1}, {w, 0, 1}], 2]];
gr4 = plot[
   ManifoldIFS[Sierpinsky3DIFS,
    Manifold[{-u/1.01, 2*w/1.01, 1 - (1 - u) v}/(4/3)/2, {u, 0,
      1}, {v, 0, 1}, {w, 0, 1}], 2]];
gw = Show[{gr, gr2, gr3, gr4}, PlotRange -> All]


Heike

On 10 Dec 2011, at 13:28, Roger Bagula wrote:

> Well with a little effort I got the second level and solved the
> problem.
> These IFS take too much memory. I can get one or two at a time,
> but all four just takes too much memory for Mathematica to handle .
> I looked in the preferences, but I don't see any way to
> increase the Kernal memory to several GB gegabytes?
> Anyway the models are no good for 3d printing at that level of memory:
> 879 megabytes for an obj 3d model
> 429 megabytes for an stl 3d model
> 188.4 for a 3ds 3d model.
>
>
>




  • Prev by Date: Re: Precicely defining plot size
  • Next by Date: Re: While Loop
  • Previous by thread: Re: Crashing problem with 3d IFS program
  • Next by thread: Re: Crashing problem with 3d IFS program