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