void PhysicsDebugDraw_Impl::DrawPolygon(const b2Vec2* vertices, int32 k_segments, const b2Color& color)
{
	Colorf colorr(color.r,color.g,color.b,1.0f);

	int i;
	for(i=0;i<k_segments-1;i++)
	{
		used_canvas->draw_line(vertices[i].x*physic_scale,vertices[i].y*physic_scale,
							vertices[i+1].x*physic_scale,vertices[i+1].y*physic_scale,
							colorr);
	}
		used_canvas->draw_line(vertices[0].x*physic_scale,vertices[0].y*physic_scale,
							vertices[k_segments-1].x*physic_scale,vertices[k_segments-1].y*physic_scale,
							colorr);
}
Example #2
0
void cube::evaluateCube()
{
    a = cos(m_phi/180);
    b = sin(m_phi/180);

    c = cos(m_omega/180);
    d = sin(m_omega/180);
    QPen pen;
    pen.setColor(Qt::cyan);
    pen.setStyle(Qt::SolidLine);
    m_cubePainter->setPen(pen);
    clearCubeImage();
    QVector< Polygon > tmpScreenCoords;
   // tmpScreenCoords.clear();
    for (int i=0;i<6;i++)
    {
        m_faces[i].calculate(a,b,c,d);
    }
    m_visLightPos.clear();
    m_screenLighsPos.clear();
    for (int i = 0; i<m_lights.count();i++)
    {        
            lightSourceData tmp = m_lights[i];
            PointDDD newPos;
            newPos.setX((-d)*tmp.pos.getX()+c*tmp.pos.getY());
            newPos.setY((-a)*c*tmp.pos.getX()+(-a)*d*tmp.pos.getY()+b*tmp.pos.getZ());
            newPos.setZ((-b)*c*tmp.pos.getX()+(-b)*d*tmp.pos.getY()+(-a)*tmp.pos.getZ() + 5);
            m_visLightPos.append(newPos);

            QPoint newScreenCoord = QPoint(300*(m_visLightPos[i].getX()/
                                                m_visLightPos[i].getZ())+800/2,
                                           300*(m_visLightPos[i].getY()/
                                                m_visLightPos[i].getZ())+600/2);
            m_screenLighsPos.append(newScreenCoord);
    }




    for (int i=0;i<m_lights.count();i++)
    {
        QColor colorr(m_lights[i].color);
        pen.setColor(Qt::white);
        QBrush br(colorr);
        m_cubePainter->setBrush(br);
        pen.setStyle(Qt::SolidLine);
        m_cubePainter->setPen(pen);
        m_cubePainter->drawEllipse(m_screenLighsPos[i].x(),m_screenLighsPos[i].y(),10,10);
    }



    m_faceArr.clear();
    for (int j=0;j<6;j++)
    {
        m_faceArr.append(m_faces[j]);
    }

    qSort(m_faceArr.begin(), m_faceArr.end(),order);

    QColor col(Qt::red);
    evaluateSimpleInt();
    for (int t=2;t>-1;t--)
    {
//        drawFaceColor(m_faceArr[t],col);
        pen.setColor(Qt::cyan);
        pen.setStyle(Qt::SolidLine);
        m_cubePainter->setPen(pen);
        //drawFace(m_faceArr[t]);
    }
    emit(repCube(m_cubeImage));
}