ich ein Polygon für einen Zeiger definiert haben:Drehen eines Polygons um seinen Mittelpunkt
für dieses Polygon0,-12,10,12,-10,12
Der Schwerpunkt ist:
0,0
Ich möchte das Polygon um den Schwerpunkt zu drehen, so dass 45 Grad bewirken, dass der Zeiger auf 2 Uhr und 180 auf 6 Uhr, 270 bis 9 Uhr, zeigt.
ich dies in Qt5.6 ich schreibe, so weit mein Code wie folgt aussieht, weiß ich es nicht richtig ist:
QStringList lstPoints = strPoints.split(clsXMLnode::mcucPointsDelimiter);
int intPoints = lstPoints.length();
if (intPoints >= 2) {
int intArraySize = intPoints/2;
QPoint aryPts[intArraySize], ptXY = pobjChild->ptGetXY();
int i, p;
i = p = 0;
while(p<intPoints) {
float fltX = lstPoints[p++].toFloat()
,fltY = lstPoints[p++].toFloat();
if (fltAngle != 0.0f) {
double dblRadians = (fltAngle/180.0) * M_PI
,dblCosAngle = cos(dblRadians)
,dblSinAngle = sin(dblRadians);
fltX = fltX * dblCosAngle - fltY * dblSinAngle;
fltY = fltY * dblSinAngle + fltX * dblCosAngle;
}
//Translate local co-ordinates to co-ordinates to be used on display
fltX += (float)ptXY.x();
fltY += (float)ptXY.y();
aryPts[i++] = QPoint((int)fltX, (int)fltY);
}
if (strColor.isEmpty() != true) {
pobjPainter->setPen(QColor(strColor));
}
if (strFill.isEmpty() != true) {
pobjPainter->setBrush(QBrush(QColor(strFill)));
}
pobjPainter->drawPolygon(aryPts, intArraySize, Qt::WindingFill);
strPoints eine Zeichenfolge, die das Polygon durch begrenzt enthält ‚‘ .
Ohne Drehung (0) erscheint das Polygon genau dort, wo ich es erwarten würde, aber bei jeder Drehung erscheint es immer noch, wo ich es erwarte, sieht aber nicht richtig aus.
Sie verwenden danken, entdeckte ich, dass das ist, warum Sie meine bemerken Code liest jetzt anders, aber es ist immer noch nicht korrekt. – SPlatten
Es gibt auch ein Problem beim Überschreiben von 'fltX', das habe ich gerade hinzugefügt. – alain
Danke, werde jetzt versuchen. – SPlatten