Code archives/3D Graphics - Misc/Chrysanthemum & Butterfly Curves
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
I studied the algo for those 2 curves in Paul Burke's site. Instead of lines are used triangles. | |||||
.start Cls a$ = Input ("Select curve: 1=Chrysanthemum, 2=Butterfly : ") If a$="1" Goto chrysanthemum Else If a$="2" Goto butterfly Else Goto start EndIf ;---------------------- .chrysanthemum Graphics3D 640,480,32,2 SetBuffer BackBuffer() cam=CreateCamera() CameraClsColor cam,18,25,36 light=CreateLight() ;------------------------------------------------------------------------- mesh=CreateMesh() surf=CreateSurface(mesh) EntityFX mesh,18 MoveEntity cam,8,8,8 PointEntity cam,mesh n=10000 For i=0 To n u# = i * 21.0 * 180 / n p4# = Sin(17.0 * u# / 3.0) p8#= Sin(2.0 * Cos(3.0 * u#) - 28.0 * u#) r#= 5.0*(1.0 + Sin(11.0*u#/5.0)) - 4.0*p4#^ 4* p8#^8 p_x# = r# * Cos(u#) p_y# = r# * Sin(u#) p_z# = (r#/20.0+0.2)*Sin(r#*2*180/7.0) v0=AddVertex (surf,p_x#,p_y#,p_z#) v1=AddVertex (surf,p_x#+.02,p_y#+.02,p_z#+.02) v2=AddVertex (surf,plast_x#,plast_y#,plast_z#) AddTriangle (surf,v0,v1,v2) r=u*155/(21*180) g=(255-r) b=r+128 If b>255 Then b=b-255 VertexColor surf,v0,r,g,b VertexColor surf,v1,r,g,b VertexColor surf,v2,r,g,b plast_x# = p_x# plast_y# = p_y# plast_z# = p_z# Next While Not KeyHit(1) UpdateWorld RenderWorld TurnEntity mesh,.2,.2,.2 Text 10,10,"tris:"+TrisRendered() Flip Wend End ;------------------------------------------------------------------------- .butterfly Graphics3D 640,480,32,2 SetBuffer BackBuffer() cam=CreateCamera() CameraClsColor cam,18,25,36 light=CreateLight() mesh=CreateMesh() surf=CreateSurface(mesh) EntityFX mesh,18 MoveEntity cam,4,4,4 PointEntity cam,mesh n=10000 For i=0 To n u# = i * 24.0 * 180 / n p_x# = Cos(u#) * (Exp(Cos(u#)) - 2.0 * Cos(4.0 * u#) - (Sin(u# / 12.0)^5.0)); p_y# = Sin(u#) * (Exp(Cos(u#)) - 2.0 * Cos(4.0 * u#) - (Sin(u# / 12.0)^5.0)); p_z# = Abs(p_y#) / 2.0 v0=AddVertex (surf,p_x#,p_y#,p_z#) v1=AddVertex (surf,p_x#+.02,p_y#+.02,p_z#+.02) v2=AddVertex (surf,plast_x#,plast_y#,plast_z#) AddTriangle (surf,v0,v1,v2) VertexColor surf,v0,Rnd(255),Rnd(255),0 VertexColor surf,v1,Rnd(255),Rnd(255),0 VertexColor surf,v2,Rnd(255),Rnd(255),0 plast_x# = p_x# plast_y# = p_y# plast_z# = p_z# Next While Not KeyHit(1) UpdateWorld RenderWorld TurnEntity mesh,.2,.2,.2 Text 10,10,TrisRendered() Flip Wend End |
Comments
None.
Code Archives Forum