【问题标题】:How to Calculate Collision of rotated Rectangle如何计算旋转矩形的碰撞
【发布时间】:2013-04-08 15:11:16
【问题描述】:

我尝试计算旋转矩形边缘的碰撞。

这是一个关于 jsFiddle 的例子:http://jsfiddle.net/XgHxx/

类似这样的:

if( mask.x < img.x * rotate_Factor ) mask.x = img.x * rotate_Factor ;

如您所见,我的碰撞仅适用于未旋转的图像。 而且我希望矩形即使在旋转时也位于图像内部。

谢谢,莫滕曼。

ps.:我举了一个例子来说明我认为它是如何计算的:

【问题讨论】:

标签: javascript rotation collision


【解决方案1】:

从我薄弱的数学头脑中思考,您可以通过找出蒙版的任何角点是否包含在图像的边界线中来检查。

您可以通过计算图像的线方程(基于其位置)来做到这一点,然后检查蒙版的任何角点是否位于任何边界上,然后停止框的移动角点撞击边界的方向。

只有几个数学公式。

在 jquery 中可能有更好的方法来执行此操作,但上述解决方案不需要任何库:)

【讨论】:

  • 是的,我认为它也可以这样工作。但我不知道如何获取每条边的坐标。
  • 也许我遗漏了一些东西,但你不能通过获取图像/蒙版的顶部和左侧点来获取图像/蒙版的坐标吗?一旦你有了所有四个角的坐标,你就可以很容易地计算出边界方程。
  • 应该可以,但连图片大小都没有变化。当它在 90° 时,它应该和它的高度一样宽,但它仍然和以前一样大:/
  • 至于由于 img 标签的“height:auto”属性而发生的尺寸问题。只需在 css 中设置高度和宽度,然后浏览器将不会尝试保持图像的纵横比。至于获取坐标,我做了 "$('#elementid').css('top')" 并且能够得到它们。虽然我喜欢“Charles François Rey”指出的解决方案。这更加健壮和通用。
  • 感谢你们帮助我,是的,他的解决方案非常好。我尝试将它添加到我的脚本中,我希望它能够正常工作。 :)
【解决方案2】:

好像已经回答过了:看这个问题How to check intersection between 2 rotated rectangles?,还有一个回答提供了JS实现。

【讨论】:

  • 这对我没有多大帮助,因为它与设置边缘坐标的多边形有关。
  • 矩形是凸多边形,所以它应该适用,你不同意吗?现在,剩下的问题是找到旋转矩形(图像)的坐标。
  • 确实,这是我找到它们的主要问题:)
  • OK 然后...顺时针旋转矩形,角的新坐标应该类似于 x' = xcos(alpha) + ysin(alpha) 和y' = xsin(alpha) - ycos(alpha).
猜你喜欢
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多