2013-02-14 288 views
9

假设我在fabricjs画布中有一个图像。我可以根据图像的top & left值及其大小轻松计算角点的坐标。在fabricjs中查找旋转物体角点的坐标

如何在图像旋转到任何程度时这样做?

实施例:

enter image description here

编辑:优选地在不使用三角学的,如果在fabricjs本身或其它地方实现的简单的方法。

+0

计算起点,然后用一个矩阵来计算,他们是基于旋转> http://en.wikipedia.org/ wiki/Rotation_(数学) – BenM 2013-02-14 12:17:03

+0

谢谢 - 请参阅我的编辑。 – seldary 2013-02-14 12:20:57

+0

你将不得不使用trigonomics。没有内置的方法。 – BenM 2013-02-14 12:29:29

回答

17

是的,当然。

我们存储在这些坐标对象的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 

这就是被设置,当你调用setCoords方法。

但你可能不想混淆那些。

从版本〜1.0.4开始,我们对所有对象都有getBoundingRect方法,它返回{ left: ..., top: ..., width: ..., height: ... }。我们已经在getBoundingRectWidthgetBoundingRectHeight之前(现已弃用),但getBoundingRect肯定更有用;它也允许读取左/顶值。

您可以在http://fabricjs.com/bounding-rectangle/看到它在行动(尝试旋转对象)

+2

谢谢 - 我使用完美的oCoords。不需要Math.sin!它允许我“附加”自定义的手柄只有一个对象的两个角落,而不是9个默认的... – seldary 2013-02-16 20:55:10

+2

链接不可用 – 2017-03-10 12:39:58

+0

链接是http://fabricjs.com/bounding-rectangle(没有一个后斜线) – kikap 2017-11-14 05:11:35