Beispiel #1
0
RegularPolygonObject::RegularPolygonObject(SceneMain* parentScene, ShaderProgram* program, vec3f pos, vec3f scale, unsigned int sides) : GameObject(parentScene, pos, scale) {

    std::vector<Vertex::Element> elements;
    elements.push_back(Vertex::Element(Vertex::Attribute::Position , Vertex::Element::Float, 3));
    elements.push_back(Vertex::Element(Vertex::Attribute::Color    , Vertex::Element::Float, 3));

    Vertex::Format format(elements);
	Mesh* mesh = new Mesh(format,0,false);

    struct Vertex {
            Vertex(vec3f pos, vec3f color) : pos(pos) , color(color) {}
            vec3f pos, color;
    };

    float angle = 0;
    float angleStep = 2.0 * M_PI * 1.0f / sides;
    std::vector<Vertex> data;
    for (unsigned int i = 0; i < sides; ++i) {
        data.push_back(Vertex(vec3f(0.0, 0.0, 0.0), vec3f(1.0, 1.0, 1.0)));
		data.push_back(Vertex(vec3f(std::cos(angle), std::sin(angle),0.0), HuetoRGB(angle))); angle += angleStep;
		data.push_back(Vertex(vec3f(std::cos(angle), std::sin(angle),0.0), HuetoRGB(angle)));
    }

    mesh->setVertexData(&data[0],data.size());
	poly.mesh = mesh;
    if (program == NULL)
		poly.program = parentScene->shaderColor;
    else
		poly.program = program;
}
Beispiel #2
0
void HLStoRGB( double H, double L, double S, COLOR& c) {
    double m1, m2;

    if(S==0) {
        c.r=c.g=c.b=(float)L;
    } else {
        if(L <=0.5) {
            m2 = L*(1.0+S);
        } else {
            m2 = L+S-L*S;
        }
        m1 = 2.0*L-m2;
        c.r = (float)HuetoRGB(m1,m2,(H+1.0/3.0));
        c.g = (float)HuetoRGB(m1,m2,H);
        c.b = (float)HuetoRGB(m1,m2,H-1.0/3.0);
    }
}
Drawing::Color CPowerColorPickerCtrl::HLStoRGB( double H, double L, double S )
{
	double r,g,b;
	double m1, m2;

	if(S==0) {
		r=g=b=L;
	} else {
		if(L <=0.5)
			m2 = L*(1.0+S);
		else
			m2 = L+S-L*S;
		m1 = 2.0*L-m2;
		r = HuetoRGB(m1,m2,H+1.0/3.0);
		g = HuetoRGB(m1,m2,H);
		b = HuetoRGB(m1,m2,H-1.0/3.0);
	}
	
	if( r > 1.0f )
		r = 1.0f;
	if( r < 0.0f )
		r = 0.0f;

	if( g > 1.0f )
		g = 1.0f;
	if( g < 0.0f )
		g = 0.0f;

	if( b > 1.0f )
		b = 1.0f;
	if( b < 0.0f )
		b = 0.0f;

	Drawing::Color color = Color::FromArgb((int)(r*255), (int)(g*255), (int)(b*255));
	return color;
}