Re: 3D Graphics are too slow.
- To: mathgroup at smc.vnet.net
- Subject: [mg90767] Re: 3D Graphics are too slow.
- From: m.r at inbox.ru
- Date: Wed, 23 Jul 2008 05:59:10 -0400 (EDT)
- References: <g61ha9$d11$1@smc.vnet.net>
On Jul 21, 3:27 am, Nayeli Espinosa <nayeli_sha... at yahoo.com.mx>
wrote:
> Hi, I have some days using Mathematica and I can't get used to the progra=
mming syntax. I can plot 3D Fractal Trees but when I increase the number of=
iterations, my program gets to run really very slow. What can I do to opti=
mize this code for a humanly reasonable running speed?
>
> origen = {0, 0, 0}; vi = {1, 0, 0}; vj = {0, 1, 0}; vk = {0, 0, 1=
};
>
> tronco = Cylinder[{origen, vk}, 0.05];
> (*tronco={Red,Line[{origen,vk}]};*)
>
> Manipulate[
> transf = tronco;
> If[tr == False, k = 0, k = 0.5 ];
> For[j = 1, j <= ite, j++,
> transf = {transf,
> Table[Rotate[
> Translate[Rotate[Scale[{transf}, esc, {0, 0, 0}], phi, vi],
> vk], 2 Pi (i - k)/br, vk], {i, 0, br - 1}]}];
>
> Graphics3D[{tronco, transf}],
>
> {{esc, 1, "Escalamiento (0.1 a 1) "}, 0.2,
> 1}, {{phi, Pi/2, "Angulo"}, 0, Pi},
> {{br, 4, "Brazos"}, 2, 4, 1, RadioButton},
> {{tr, False, "Torcimiento"}, {False, True}}, {{ite, 2,
> "Iteraciones"}, 1, 5, 1, RadioButton}]
In your case the transformations can be carried out 'symbolically':
origen = {0, 0, 0}; vi = {1, 0, 0}; vj = {0, 1, 0}; vk = {0, 0, 1};
tronco = Cylinder[{origen, vk}, .05];
f[phi_, i_, br_, tr_, esc_, {{x1_, y1_, z1_}, {x2_, y2_, z2_}}] =
({{x1, y1, z1, 1}, {x2, y2, z2, 1}}.
Transpose@ TransformationMatrix@ Composition[
RotationTransform[2 Pi (i - k)/br, vk],
TranslationTransform[vk],
RotationTransform[phi, vi],
ScalingTransform[{esc, esc, esc}, {0, 0, 0}]]
)[[All, {1, 2, 3}]] /. k -> Boole[tr]/2;
Manipulate[
Graphics3D[{tronco,
Flatten@ NestList[# /. Cylinder[L_, r_] :>
Table[Cylinder[
f[phi, i, br, tr, esc, L], Abs[esc] r],
{i, 0, br - 1}]&,
tronco, ite]},
Boxed -> False],
{{esc, 1, "Escalamiento (0.1 a 1) "}, 0.2, 1},
{{phi, Pi/2, "Angulo"}, 0, Pi},
{{br, 4, "Brazos"}, 2, 4, 1, RadioButton},
{{tr, False, "Torcimiento"}, {False, True}},
{{ite, 2, "Iteraciones"}, 1, 5, 1, RadioButton}]
Maxim Rytin
m.r at inbox.ru