RE: [Algorithms] Geodesic Sphere
Brought to you by:
vexxed72
From: Steve W. <Ste...@im...> - 2000-08-22 21:42:54
|
This problem is difficult since all three sides of all triangles will be equal. It requires dividing a sphere longitudinally by X number of triangles while dividing it laterally by Xsin(pi/3) = X * [sqr(3)/2] and where sqr(3)/2 * X is a whole number or whole fraction...and offhand I can't think of any whole number X where multiplying it by sqr(3)/2 will result in something like 8 or 1/2. I suggest using isosceles triangles since the algorithm is much simpler and I posted it earlier concerning spherical texture mapping...here's a clip from it (yes it's in basic...hope you can read it): For example here's how I create a sphere: Dim pi as single Dim pi2 as single Dim spherecount as long Dim spherename() As String Dim spherevertexcount As Long Dim sphereradius(1) As Single Dim spherecenter(1) As D3DVERTEX Dim spheredx7vertex(1100) As D3DVERTEX pi=3.14159265 pi2=pi * 2 spherecount = 1 spherename(1) = "Sphere 1" spherecenter(1).x = 0 spherecenter(1).y = 4 spherecenter(1).z = 6 sphereradius(1) = 1 'radius c = 16 'number of sections...smaller c means larger triangles, larger c means smaller triangles b = 0 For cameraangle.x = 0 To pi * (c - 1) / c + 0.0001 Step pi / c For cameraangle.y = 0 To pi2 + 0.0001 Step pi / c b = b + 1 dx7.CreateD3DVertex sphereradius(1) * Sin(cameraangle.y) * Sin(cameraangle.x) + spherecenter(1).x, sphereradius(1) * Cos(cameraangle.x) + spherecenter(1).y, sphereradius(1) * Cos(cameraangle.y) * Sin(cameraangle.x) + spherecenter(1).z, Sin(cameraangle.y) * Sin(cameraangle.x), Cos(cameraangle.x), Cos(cameraangle.y) * Sin(cameraangle.x), cameraangle.y / pi2, cameraangle.x / pi, spheredx7vertex(b) b = b + 1 dx7.CreateD3DVertex sphereradius(1) * Sin(cameraangle.y) * Sin(cameraangle.x + pi / c) + spherecenter(1).x, sphereradius(1) * Cos(cameraangle.x + pi / c) + spherecenter(1).y, sphereradius(1) * Cos(cameraangle.y) * Sin(cameraangle.x + pi / c) + spherecenter(1).z, Sin(cameraangle.y) * Sin(cameraangle.x + pi / c), Cos(cameraangle.x + pi / c), Cos(cameraangle.y) * Sin(cameraangle.x + pi / c), cameraangle.y / pi2, (cameraangle.x + pi / c) / pi, spheredx7vertex(b) Next Next spherevertexcount = b vertexperstrip = c * 4 + 2 d3d7device.SetTexture 0, dd7surface(7) 'sphere For b = 1 To spherevertexcount - vertexperstrip + 1 Step vertexperstrip Call d3d7device.DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_VERTEX, spheredx7vertex(b), vertexperstrip, D3DDP_DEFAULT) Next > -----Original Message----- > From: Aldo . [mailto:al...@ho...] > Sent: Tuesday, August 22, 2000 5:45 AM > To: gda...@li... > Subject: [Algorithms] Geodesic Sphere > > > > Hi! > > I'm looking for an algoritm to create a geodesic sphere(is the name > correct?), a sphere made of equilateral triangles. I would be > nice if I > could choose the resolution(more or less triangles). > > > > Thanks in advance. > > Aldo Spanghero > > > ______________________________________________________________ > __________ > Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com _______________________________________________ GDAlgorithms-list mailing list GDA...@li... http://lists.sourceforge.net/mailman/listinfo/gdalgorithms-list |