Exemplo n.º 1
0
    void Cone::draw(bool debug) {
        Point c = apex.translate(axis);
        Vector e0 = perp(axis);

        Vector v3 = e0.cross(axis);

        Point e1(v3.getX(), v3.getY(), v3.getZ());

        std::vector <Point> pts;
        for (int i = 0; i < meridians; ++i) {
            double rad = 2 * M_PI * i / meridians;
            double x = c.getX() + (e0.getX() * cos(rad) + e1.getX() * sin(rad)) * rayon;
            double y = c.getY() + (e0.getY() * cos(rad) + e1.getY() * sin(rad)) * rayon;
            double z = c.getZ() + (e0.getZ() * cos(rad) + e1.getZ() * sin(rad)) * rayon;
            Point p(x, y, z);
            pts.push_back(p);
        }

// draw cone top
        glBegin(GL_TRIANGLE_FAN);
        glPoint(apex);
        for (int i = 0; i < meridians; ++i) {
            glPoint(pts.at(i));
        }
        glPoint(pts.at(0));
        glEnd();

        if (debug) {
            glColor3f(1.0f, 0.0f, 0.0f);
            for (int i = 0; i < meridians; ++i) {
                glBegin(GL_LINES);
                glPoint(apex);
                glPoint(pts.at(i));
                glEnd();
            }
        }

    }
Exemplo n.º 2
0
void generateRandomSpheres(	int n,
						 float minRadius, float maxRadius,
						 float minPosX, float maxPosX,
						 float minPosY, float maxPosY,
						 float minPosZ, float maxPosZ,
						 std::vector<glSphere>& list
							)
{
	for( int i = 0; i < n; ++i )
	{
		float radius	= sf::Randomizer::Random( minRadius,	maxRadius	);
		float x			= sf::Randomizer::Random( minPosX,		maxPosX		);
		float y			= sf::Randomizer::Random( minPosY,		maxPosY		);
		float z			= sf::Randomizer::Random( minPosZ,		maxPosZ		);

		list.push_back( glSphere( glPoint( x, y, z ), radius ) );
	}
}