问题标签 [separating-axis-theorem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 检测两个矩形相交的算法?
我正在寻找一种算法来检测两个矩形是否相交(一个以任意角度,另一个只有垂直/水平线)。
测试一个角落是否在另一个几乎可以工作。如果矩形形成十字形状,则失败。
避免使用线的斜率似乎是个好主意,这需要垂直线的特殊情况。
ios - Objective-C检查旋转的UIViews的子视图是否相交?
我不知道从哪里开始。显然CGRectIntersectsRect
在这种情况下不起作用,你会明白为什么。
我有一个 UIView 的子类,其中有一个 UIImageView,它位于 UIView 的确切中心:
然后我旋转自定义 UIView 以保持内部 UIImageView 的框架,同时仍然能够执行 CGAffineRotation。生成的框架如下所示:
我需要防止用户使这些 UIImageViews 相交,但我不知道如何检查两个 UIImageViews 之间的交集,因为它们的框架不仅不适用于父 UIView,而且它们在不影响它们的框架的情况下旋转。
我尝试的唯一结果是不成功。
有任何想法吗?
ios - 确定裁剪矩形是否完全包含在旋转的 UIView 中
前提:我正在构建一个裁剪工具,可以处理图像的两指任意旋转以及任意裁剪。
有时图像最终会以插入空白空间以填充旋转图像和裁剪矩形之间的间隙的方式旋转(参见下面的示例)。
我需要确保图像视图在旋转时完全适合裁剪矩形。如果没有,我需要重新转换图像(缩放),使其适合裁剪范围。
使用这个答案,我实现了检查旋转的 UIImageView 是否与裁剪 CGRect 相交的能力,但不幸的是,这并不能告诉我裁剪矩形是否完全包含在旋转的 imageview 中。希望我可以对这个答案进行一些简单的修改?
OK的视觉示例:
不好,我需要检测和处理:
更新:不工作的方法
collision-detection - 分离轴定理算法不起作用
根据以下指南编写分离轴实现,使用 Haxe。似乎无法弄清楚为什么它不工作,测试了各个部分,但即使没有任何碰撞,它也总是返回 true。
任何帮助表示赞赏!:D
c++ - 分离轴定理:绕质心旋转
问题出在Polygon::FindAxisLeastPenetration
:
}
polygon.rotationMatrix
Matrix22
是一个 2x2 矩阵类型的对象。
polygon.points
充满std::vector<Vector2D>
了向量。
polygon.body
是指向Object
实例的指针。在这种情况下,它仅用于获取位置。
polygon.body->position
是Vector2D
包含X
和Y
坐标的一个实例。
Vector2D polygon.body->GetPosition()
返回身体的位置向量。
它工作正常,除了旋转是围绕[0, 0]
点完成的,但它应该围绕质心旋转。
我知道围绕一个点旋转可以这样完成:
渲染多边形时效果很好。但不在碰撞检测中。
在这种情况下,如何围绕某个点旋转矢量?
编辑:这是我到目前为止所拥有的
现在我并不真正关心优化。还有同样的问题。围绕中心旋转时,无法正确检测到碰撞。但是,如果中心已[0, 0]
使用或未使用,则碰撞检测正常工作,但再次执行错误的旋转。
编辑:即使在碰撞检测之前旋转,我也会遇到同样的问题。到目前为止,最好的方法是平移多边形,使其中心位于[0, 0]
,但在某些角度不会检测到碰撞。不知道现在该怎么办。
编辑:屏幕截图(多边形正在被平移,因此它们的质心始终位于[0, 0]
,在这种情况下多边形是矩形)碰撞检测在这里效果不佳
碰撞检测在这里也不能很好地工作
碰撞检测在这里运行良好
编辑:我添加了Rectangle
课程。
matlab - matlab中的分离轴
我一直致力于在 matlab 中实现分离轴算法。我已经搜索了很多,但我没有提出任何解决方案。你能指出错误吗?提前致谢
c - 二维凸多边形的分离
我试图找出两个凸多边形是否相交。我读到最有效的方法之一是使用分离轴的方法。我在这本书http://www.geometrictools.com/Documentation/MethodOfSeparatingAxes.pdf中找到了一些代码,但我有点困惑。函数 Dot 有什么作用?
algorithm - 分离轴定理的时间复杂度
您将如何根据多边形(三角形)的数量来确定复杂性?请在此处更正或确认我的方法。假设我们有一个金字塔并开始添加一个顶点。从六个顶点我看到这样的模式:
在 SAT 中,我将对象的每个顶点投影到它的每个法线。所以公式是 N*V ,其中 N 与多边形数相同,所以:
这个对吗?如果是这样,这是什么样的复杂性?我应该称它为二次和线性的组合吗?谢谢。
编辑:现在看它,我想这取决于我如何进行三角测量,它也可能是:
不确定它是否最小,但它不应该改变复杂性。这只是一个常数。所以可能是 V*2-A。请让我知道是否有某种公式。我发现了也处理边缘的欧拉多面体公式。