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); }
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)); }