nuclear@0: #define _USE_MATH_DEFINES nuclear@0: #include nuclear@0: #include "mesh.h" nuclear@0: nuclear@0: #ifndef M_PI nuclear@0: #define M_PI 3.14159265359 nuclear@0: #endif nuclear@0: nuclear@0: void gen_sphere(std::vector &varr, float rad, int usub, int vsub) nuclear@0: { nuclear@0: } nuclear@0: nuclear@0: static void torus_vertex(Vertex *vert, float u, float v, float rad, float tube_rad) nuclear@0: { nuclear@0: float theta = 2.0 * M_PI * u; nuclear@0: float phi = 2.0 * M_PI * v; nuclear@0: nuclear@0: float x = 0.0f; nuclear@0: float y = sin(phi) * tube_rad; nuclear@0: float z = cos(phi) * tube_rad + rad; nuclear@0: nuclear@0: vert->pos.x = z * sin(theta); nuclear@0: vert->pos.y = y; nuclear@0: vert->pos.z = -x * sin(theta) + z * cos(theta); nuclear@0: vert->pos.w = 1.0; nuclear@0: nuclear@0: Vector3 cent; nuclear@0: cent.x = sin(theta) * rad; nuclear@0: cent.z = cos(theta) * rad; nuclear@0: nuclear@0: vert->normal = normalize(Vector3(vert->pos) - cent); nuclear@0: vert->color = Vector4(1.0, 1.0, 1.0, 1.0); nuclear@0: } nuclear@0: nuclear@0: void gen_torus(std::vector &varr, float rad, float tube_rad, int usub, int vsub) nuclear@0: { nuclear@0: int i, j; nuclear@0: nuclear@0: if(usub < 3) usub = 3; nuclear@0: if(vsub < 3) vsub = 3; nuclear@0: nuclear@0: float du = 1.0f / (float)usub; nuclear@0: float dv = 1.0f / (float)vsub; nuclear@0: nuclear@0: nuclear@0: for(i=0; i