三角锥和圆柱Triangular cone and cylinder

来自中国的朋友,欢迎您在本版面使用中文讨论问题。请注意,如果您想得到不懂中文的人的帮助,请同时提供英文译文。
Help and discussions in Chinese.
Post Reply
liqi98136
Posts: 53
Joined: Sun Jan 17, 2010 11:37 pm

三角锥和圆柱Triangular cone and cylinder

Post by liqi98136 »

Code: Select all


//Cone圆锥
import "ecere"

class cone : Object
{
private
 int numLon;
 numLon=50;
public:
   bool Create(DisplaySystem displaySystem)
   {
      bool result = false;
      if(this)
      {
         InitializeMesh(displaySystem);

         if(mesh)
         {
            if(mesh.Allocate({ vertices = true, normals = true }, numLon*2, displaySystem))
            {
               Vector3Df *pVertices = mesh.vertices;
               Vector3Df *pNormals = mesh.normals;  
               PrimitiveGroup group;

               int i; 
               for(i = 0; i < numLon; i++)
               {
      				float theta = (float)(2 * Pi * i) / (numLon -1);
                  float A = (float)cos(theta);
                  float B = (float)sin(theta); 
                  
                  pVertices[2*i]={ A, B, 1.0f };
      				pNormals[2*i] ={ A, B, 0.0f};


             if((group = mesh.AddPrimitiveGroup({triStrip, true}, 0)))
                  {
                     group.first = i ;
                     group.nVertices = numLon ;
                  }

			   }

           if((group = mesh.AddPrimitiveGroup({triStrip, true}, 0)))
                  {
                     group.first = i ;
                     group.nVertices = numLon ;
                  }
            }
            mesh.Unlock(0);
            SetMinMaxRadius(true);
         }
      } 
	  }
 property int numLon { set { numLon = value; } }
}


Code: Select all

//圆柱边cylinder


import "ecere"

class cylinder: Object
{
private
 int numLon;
 numLon=50;
public:
   bool Create(DisplaySystem displaySystem)
   {
      bool result = false;
      if(this)
      {
         InitializeMesh(displaySystem);

         if(mesh)
         {
            if(mesh.Allocate({ vertices = true, normals = true }, numLon*2, displaySystem))
            {
               Vector3Df *pVertices = mesh.vertices;
               Vector3Df *pNormals = mesh.normals;  
               PrimitiveGroup group;

               int i; 
               for(i = 0; i < numLon; i++)
               {
      				float theta = (float)(2 * Pi * i) / (numLon -1);
                  float A = (float)cos(theta);
                  float B = (float)sin(theta); 
                  
                  pVertices[2*i+0]={ A, B, 1.0f };
      				pNormals[2*i+0] ={ A, B, 0.0f}; 
                  pVertices[2*i+1]={ A, B, -1.0f};
      				pNormals[2*i+1] ={ A, B, 0.0f}; 

             if((group = mesh.AddPrimitiveGroup({triStrip, true}, 0)))
                  {
                     group.first = i ;
                     group.nVertices = numLon ;
                  }

			   }

           if((group = mesh.AddPrimitiveGroup({triStrip, true}, 0)))
                  {
                     group.first = i ;
                     group.nVertices = numLon ;
                  }
            }
            mesh.Unlock(0);
            SetMinMaxRadius(true);
         }
      } 
	  }
 property int numLon { set { numLon = value; } }
}
Post Reply