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