Cylinders
This commit is contained in:
@@ -244,7 +244,13 @@ void PartInstance::addVertex(Vector3 vertexPos,Color3 color)
|
|||||||
addSingularNormal(cross(v1-v3,v2-v3).direction());
|
addSingularNormal(cross(v1-v3,v2-v3).direction());
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartInstance::addSmoothTriangle(Vector3 v1,Vector3 v2,Vector3 v3)
|
void PartInstance::addQuad(Vector3 v1,Vector3 v2, Vector3 v3, Vector3 v4)
|
||||||
|
{
|
||||||
|
addTriangle(v1, v2, v3);
|
||||||
|
addTriangle(v1, v3, v4);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PartInstance::addSmoothTriangle(Vector3 v1, Vector3 v2, Vector3 v3)
|
||||||
{
|
{
|
||||||
addVertex(v1,color);
|
addVertex(v1,color);
|
||||||
addVertex(v2,color);
|
addVertex(v2,color);
|
||||||
@@ -259,7 +265,7 @@ void PartInstance::addSmoothTriangle(Vector3 v1,Vector3 v2,Vector3 v3)
|
|||||||
|
|
||||||
void PartInstance::addPlus(Vector3 v1)
|
void PartInstance::addPlus(Vector3 v1)
|
||||||
{
|
{
|
||||||
float renderY = size.y/2 - 0.25f;
|
float renderY = size.y/2 * 0.95f - 0.25;
|
||||||
Vector3 vx1 = v1 + Vector3(0, -renderY, -0.1f);
|
Vector3 vx1 = v1 + Vector3(0, -renderY, -0.1f);
|
||||||
Vector3 vx2 = v1 + Vector3(0, -renderY, 0.1f);
|
Vector3 vx2 = v1 + Vector3(0, -renderY, 0.1f);
|
||||||
Vector3 vx3 = v1 + Vector3(0, renderY, 0.1f);
|
Vector3 vx3 = v1 + Vector3(0, renderY, 0.1f);
|
||||||
@@ -313,7 +319,7 @@ void PartInstance::addPlus(Vector3 v1)
|
|||||||
|
|
||||||
void PartInstance::addPlus2(Vector3 v1)
|
void PartInstance::addPlus2(Vector3 v1)
|
||||||
{
|
{
|
||||||
float renderY = max(size.z, max(size.x, size.y))/2 - 0.25f;
|
float renderY = max(size.z, max(size.x, size.y))/2 * 0.95f - 0.25;
|
||||||
Vector3 vx3 = v1 + Vector3(0, -renderY, -0.1f);
|
Vector3 vx3 = v1 + Vector3(0, -renderY, -0.1f);
|
||||||
Vector3 vx2 = v1 + Vector3(0, -renderY, 0.1f);
|
Vector3 vx2 = v1 + Vector3(0, -renderY, 0.1f);
|
||||||
Vector3 vx1 = v1 + Vector3(0, renderY, 0.1f);
|
Vector3 vx1 = v1 + Vector3(0, renderY, 0.1f);
|
||||||
@@ -387,6 +393,19 @@ void PartInstance::addPlus2(Vector3 v1)
|
|||||||
addTriangle(Vector3(_vertices[vertex1],_vertices[vertex1+1],_vertices[vertex1+2]),
|
addTriangle(Vector3(_vertices[vertex1],_vertices[vertex1+1],_vertices[vertex1+2]),
|
||||||
Vector3(_vertices[vertex2],_vertices[vertex2+1],_vertices[vertex2+2]),
|
Vector3(_vertices[vertex2],_vertices[vertex2+1],_vertices[vertex2+2]),
|
||||||
Vector3(_vertices[vertex3],_vertices[vertex3+1],_vertices[vertex3+2]));
|
Vector3(_vertices[vertex3],_vertices[vertex3+1],_vertices[vertex3+2]));
|
||||||
|
}
|
||||||
|
void PartInstance::fromArrays(float verts[], float norms[], float ind[], unsigned int countVN, unsigned int countInd)
|
||||||
|
{
|
||||||
|
for(unsigned int i = 0; i < countVN; i++)
|
||||||
|
{
|
||||||
|
_vertices.push_back(verts[i]);
|
||||||
|
_normals.push_back(norms[i]);
|
||||||
|
}
|
||||||
|
for(unsigned int i = 0; i < countInd; i++)
|
||||||
|
{
|
||||||
|
_indices.push_back(ind[i]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
void PartInstance::makeSmoothFace(int vertex1,int vertex2, int vertex3)
|
void PartInstance::makeSmoothFace(int vertex1,int vertex2, int vertex3)
|
||||||
{
|
{
|
||||||
@@ -703,7 +722,7 @@ void PartInstance::render(RenderDevice* rd) {
|
|||||||
break;
|
break;
|
||||||
case Enum::Shape::Cylinder:
|
case Enum::Shape::Cylinder:
|
||||||
{
|
{
|
||||||
int fsize = renderSize.y/(pi()/2);
|
/*int fsize = renderSize.y/(pi()/2);
|
||||||
//makeFace(0,0,48);
|
//makeFace(0,0,48);
|
||||||
// Front
|
// Front
|
||||||
addTriangle(Vector3(renderSize.x,renderSize.y-fsize,renderSize.z),
|
addTriangle(Vector3(renderSize.x,renderSize.y-fsize,renderSize.z),
|
||||||
@@ -817,13 +836,67 @@ void PartInstance::render(RenderDevice* rd) {
|
|||||||
makeFace(84,174,144);
|
makeFace(84,174,144);
|
||||||
// Back Left Bottom Corner
|
// Back Left Bottom Corner
|
||||||
makeFace(174,84,132);*/
|
makeFace(174,84,132);*/
|
||||||
|
|
||||||
|
float radius = renderSize.y;
|
||||||
|
Vector2 xy[13];
|
||||||
|
for(int i = 0; i < 13; i++)
|
||||||
|
{
|
||||||
|
float y = radius * cos(((double)i-0.523599) * pi()/6);
|
||||||
|
float z = radius * sin(((double)i-0.523599) * pi()/6);
|
||||||
|
xy[i] = Vector2(y,z);
|
||||||
|
}
|
||||||
|
for(int i = 0; i < 12; i++)
|
||||||
|
{
|
||||||
|
addSmoothTriangle(
|
||||||
|
Vector3(renderSize.x, xy[i].x, xy[i].y),
|
||||||
|
Vector3(-renderSize.x, xy[i].x, xy[i].y),
|
||||||
|
Vector3(-renderSize.x, xy[i+1].x, xy[i+1].y));
|
||||||
|
addSmoothTriangle(
|
||||||
|
Vector3(renderSize.x, xy[i].x, xy[i].y),
|
||||||
|
Vector3(-renderSize.x, xy[i+1].x, xy[i+1].y),
|
||||||
|
Vector3(renderSize.x, xy[i+1].x, xy[i+1].y));
|
||||||
|
addTriangle(
|
||||||
|
Vector3(renderSize.x, xy[0].x, xy[0].y),
|
||||||
|
Vector3(renderSize.x, xy[i].x, xy[i].y),
|
||||||
|
Vector3(renderSize.x, xy[i+1].x, xy[i+1].y));
|
||||||
|
addTriangle(
|
||||||
|
Vector3(-renderSize.x, xy[i+1].x, xy[i+1].y),
|
||||||
|
Vector3(-renderSize.x, xy[i].x, xy[i].y),
|
||||||
|
Vector3(-renderSize.x, xy[0].x, xy[0].y));
|
||||||
|
}
|
||||||
|
/*float facetRatio = renderSize.x / (pi() * 0.5F);
|
||||||
|
addQuad(
|
||||||
|
Vector3(renderSize.x, renderSize.y, renderSize.z-facetRatio),
|
||||||
|
Vector3(renderSize.x, renderSize.y, -renderSize.z+facetRatio),
|
||||||
|
Vector3(-renderSize.x, renderSize.y, -renderSize.z+facetRatio),
|
||||||
|
Vector3(-renderSize.x, renderSize.y, renderSize.z-facetRatio));
|
||||||
|
|
||||||
|
addQuad(
|
||||||
|
Vector3(renderSize.x, renderSize.y-facetRatio, renderSize.z),
|
||||||
|
Vector3(-renderSize.x, renderSize.y-facetRatio, renderSize.z),
|
||||||
|
Vector3(-renderSize.x, -renderSize.y+facetRatio, renderSize.z),
|
||||||
|
Vector3(renderSize.x, -renderSize.y+facetRatio, renderSize.z));
|
||||||
|
addQuad(
|
||||||
|
Vector3(-renderSize.x, -renderSize.y, renderSize.z-facetRatio),
|
||||||
|
Vector3(-renderSize.x, -renderSize.y, -renderSize.z+facetRatio),
|
||||||
|
Vector3(renderSize.x, -renderSize.y, -renderSize.z+facetRatio),
|
||||||
|
Vector3(renderSize.x, -renderSize.y, renderSize.z-facetRatio));
|
||||||
|
addQuad(
|
||||||
|
Vector3(renderSize.x, -renderSize.y+facetRatio, -renderSize.z),
|
||||||
|
Vector3(-renderSize.x, -renderSize.y+facetRatio, -renderSize.z),
|
||||||
|
Vector3(-renderSize.x, renderSize.y-facetRatio, -renderSize.z),
|
||||||
|
Vector3(renderSize.x, renderSize.y-facetRatio, -renderSize.z));*/
|
||||||
|
|
||||||
addPlus(Vector3(-renderSize.x-0.01,0,0));
|
addPlus(Vector3(-renderSize.x-0.01,0,0));
|
||||||
addPlus2(Vector3(renderSize.x+0.01,0,0));
|
addPlus2(Vector3(renderSize.x+0.01,0,0));
|
||||||
|
|
||||||
for (unsigned short i=0;i<_vertices.size()/6;i++) {
|
for (unsigned short i=0;i<_vertices.size()/6;i++) {
|
||||||
_indices.push_back(i);
|
_indices.push_back(i);
|
||||||
}
|
}
|
||||||
|
//std::reverse(_vertices.begin(), _vertices.end());
|
||||||
|
//std::reverse(_normals.begin(), _normals.end());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -47,12 +47,14 @@ public:
|
|||||||
void addNormals(Vector3 normal);
|
void addNormals(Vector3 normal);
|
||||||
void addSingularNormal(Vector3 normal);
|
void addSingularNormal(Vector3 normal);
|
||||||
void addTriangle(Vector3 vertexPos,Vector3 vertexPos2, Vector3 vertexPos3);
|
void addTriangle(Vector3 vertexPos,Vector3 vertexPos2, Vector3 vertexPos3);
|
||||||
|
void addQuad(Vector3 v1,Vector3 v2, Vector3 v3, Vector3 v4);
|
||||||
void addSmoothTriangle(Vector3 vertexPos,Vector3 vertexPos2, Vector3 vertexPos3);
|
void addSmoothTriangle(Vector3 vertexPos,Vector3 vertexPos2, Vector3 vertexPos3);
|
||||||
void makeSmoothFace(int vertex1, int vertex2, int vertex3);
|
void makeSmoothFace(int vertex1, int vertex2, int vertex3);
|
||||||
void addPlus(Vector3 v1);
|
void addPlus(Vector3 v1);
|
||||||
void addPlus2(Vector3 v1);
|
void addPlus2(Vector3 v1);
|
||||||
void debugPrintVertexIDs(RenderDevice* rd, GFontRef font, Matrix3 camRot);
|
void debugPrintVertexIDs(RenderDevice* rd, GFontRef font, Matrix3 camRot);
|
||||||
void makeFace(int vertex1, int vertex2, int vertex3);
|
void makeFace(int vertex1, int vertex2, int vertex3);
|
||||||
|
void fromArrays(float verts[], float norms[], float ind[], unsigned int countVN, unsigned int countInd);
|
||||||
bool isUniqueVertex(Vector3 pos);
|
bool isUniqueVertex(Vector3 pos);
|
||||||
#endif
|
#endif
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user