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; } }
}