Exemple #1
0
btVector3 Mesh::scalePoint(const btVector3& triangle, const Ogre::Vector3& origin,float scaleFactor)
{
    float x = triangle.x() - origin.x;
    x = x * scaleFactor;
    float y = triangle.y() - origin.y;
    y = y * scaleFactor;
    float z = triangle. z() - origin.z;
    z = z * scaleFactor;
    btVector3 scaledPoint(x+origin.x,y+origin.y,z+origin.z);
    return scaledPoint;
}
void CameraView::paintEvent(QPaintEvent*)
{
    QPainter painter;
    painter.begin(this);
    painter.setRenderHint(QPainter::Antialiasing);

    if(!cameraIdsDrawn || frame == NULL)
    {
        painter.setBrush(Qt::black);
        painter.drawRect(rect());
        painter.setPen(Qt::blue);
        painter.drawText(QPoint(5, height() - 5), id);
        cameraIdsDrawn = true;
    }

    if(frame != NULL)
    {
        QImage scaledFrame = frame->scaledToWidth(width(), Qt::SmoothTransformation);
        double scaleFactor = (double)scaledFrame.width() / (double)frame->width();
        int offsetY = (height() - scaledFrame.height()) / 2;
        painter.drawImage(QPoint(0,offsetY), scaledFrame);

        painter.setClipRect(0, offsetY, width(), scaledFrame.height());

        painter.setBrush(QBrush(QColor(200, 200, 200, 150)));
        for(std::vector<QPolygon>::iterator it = aois.begin(); it != aois.end(); ++it)
        {
            QPolygon scaledAoi;
            for(int i = 0; i < it->size(); ++i)
            {
                QPoint point = it->at(i);
                QPoint scaledPoint((int)((double)point.x() * scaleFactor),
                                   (int)((double)point.y() * scaleFactor) + offsetY);
                scaledAoi << scaledPoint;
            }
            painter.drawPolygon(scaledAoi);
        }
    }

    painter.end();
}