2013-02-14 1 views
9

Angenommen, ich habe ein Bild in einem Fabricjs Canvas. Ich kann leicht die Koordinaten der Ecken basierend auf den top & left Werten und der Größe des Bildes berechnen.Finden Sie die Koordinaten der Ecken eines gedrehten Objekts in fabricjs

Wie kann ich das tun, wenn das Bild um einen Grad gedreht wird?

Beispiel:

enter image description here

EDIT: Vorzugsweise ohne die Verwendung von Trigonometrie, wenn es eine einfachere Methode in fabricjs implementiert selbst oder irgendwo anders.

+0

die Startpunkte ermitteln und dann eine Matrix verwenden, um zu berechnen, wo sie auf der Dreh basieren> http://en.wikipedia.org/ wiki/Rotation_ (Mathematik) – BenM

+0

Danke - siehe meine Bearbeitung. – seldary

+0

Sie müssen Trigonomics verwenden. Dafür gibt es keine integrierte Methode. – BenM

Antwort

17

Ja, natürlich.

Wir speichern diese Koordinaten in Objekt oCoords

oCoords.tl.x, oCoords.tl.y // top left corner 
oCoords.tr.x, oCoords.tr.y // top right corner 
oCoords.bl.x, oCoords.bl.y // bottom left corner 
oCoords.br.x, oCoords.br.y // bottom right corner 

Das ist, was gesetzt wird, wenn Sie setCoords Methode aufrufen.

Aber Sie wollen wahrscheinlich nicht mit denen zu tun haben.

Seit Version ~ 1.0.4 haben wir getBoundingRect Methode für alle Objekte, die { left: ..., top: ..., width: ..., height: ... } zurückgibt. Wir hatten bereits getBoundingRectWidth und getBoundingRectHeight vor (jetzt veraltet), aber getBoundingRect ist sicherlich nützlicher; es erlaubt, auch die linken/oberen Werte zu lesen.

Sie es in Aktion bei http://fabricjs.com/bounding-rectangle/ sehen (rotierende Objekte versuchen)

+2

Danke - Ich habe oCoords verwendet, was perfekt ist. Keine Notwendigkeit für Math.sin! Es ermöglichte mir, benutzerdefinierte Griffe an nur zwei Ecken eines Objekts anzubringen, anstatt an die 9 Standard-Elemente. – seldary

+2

Verbindung ist nicht verfügbar –

+0

Link ist http://fabricjs.com/bounding-rectangle (ohne Schrägstrich)) – kikap