2017-02-18 3 views
1

ich den Begrenzungsrahmen des gescherten oder gedrehten Rechtecks ​​diese FormelHolen Sie sich das Begrenzungsrahmen eines gescherten und gedreht Rechteck

mit bekommen
shearedW = Abs(Tan(shearX) * Height) + Width 
shearedH = Abs(Tan(shearY) * Width) + Height 
rotatedW = Abs(Cos(angle) * Width) + Abs(Sin(angle) * Height) 
rotatedH = Abs(Sin(angle) * Width) + Abs(Cos(angle) * Height) 

Aber wie diejenigen zu kombinieren? Ich muss nur die Breite und Höhe wissen. Die Transformation erfolgt durch Scheren und anschließendes Drehen der Form.

Antwort

1

Erstellen Sie einfach eine affine Matrix für die kombinierte Transformation und wenden Sie sie auf Scheitelpunkte an, um Differenzen für die y- und x-Koordinaten zu erhalten.

Beachten Sie, dass das erste Formelpaar falsch ist - es gibt zusätzliche Breite und Höhe. Volle Breite:

shearedW = Width + Abs(Tan(shearX) * Height) 
+0

Ja, das ist nicht der effizienteste Algorithmus in Bezug auf die Anzahl der Operationen für diesen speziellen Fall, aber es ist einfach und kann leicht an unterschiedliche Formen und Transformationen verallgemeinert werden. –

+0

Nun, das wird funktionieren, aber ich muss die Dimension bekommen, bevor ich die Transformation mache. Bearbeitet, um die korrigierte Formel aufzunehmen. – user7583269

+0

Sie betrachten einige gedrehte Parallelogramme. Beachten Sie, dass zwei Scheren um zwei Achsen einer gewissen Scherung + Skalierung + Rotation entsprechen, daher ist es sinnvoll, zulässige Transformationen und resultierende Zahlen klar zu definieren. – MBo

Verwandte Themen