英文原文地址:Docs » Math » Advanced vector math
转载请注明出处
一些平面的例子这是一个展示平面用途的简单例子。试想一下,你有一个凸多边形(convex polygon)。例如,矩形,梯形,三角形或者任何不包含凹陷面的多边形。
我们求得通过多边形的每一个面片的平面,以获得一个平面的列表,这时我们就可以爽歪歪了,比如我们可以一个点是否在多边形内部。
我们遍历每一个面,只要我们能找到一个平面到点的距离是正的,那么这个点就在多边形外,否则点在多边形内部。
示意代码如下:
var inside = true
for p in planes:
# check if distance to plane is positive
if (p.distance_to(point) > 0):
inside = false
break # with one that fails, it's enough
是不是很酷?但是这个更厉害!再稍稍努力一点,相似的逻辑,我们还可以判断两个凸多边形是否重叠。这招叫做分离轴检测法(Separating Axis Theorem 简写为SAT),大多数物理引擎用SAT进行碰撞检测。
对于一个点,我们只需检查是否有一个平面返回正距离就足以告诉我们这个点是否在平面外。对于一个多边形,我们必须找到一个平面对于另一个多边形上所有的点都返回一个正距离。这个检测先要对A的所有平面对B的所有点进行,然后再对B的所有平面对A的所有点进行:
示意代码如下:
var overlapping = true
for p in planes_of_A:
var all_out = true
for v in points_of_B:
if (p.distance_to(v)
关注
打赏
热门博文
- iQunix(主要指Lime等86键系列)Win键和Alt键调换等解决办法
- Houdini图文笔记:VAT(3.0)导入UE4/5的设置向导[官方文档翻译]
- 虚幻引擎图文笔记:使用指数级高度雾(Exponential Height Fog)实现体积光
- 虚幻引擎图文笔记:调整网格的光照贴图分辨率(Light Map Res)改善光照烘焙质量
- 【老王的脑科学谬论】CSDN问答区老王谬论悬赏辩论赛二番战(再次求锤失败4月6日已结题)
- 【老王的脑科学谬论】从“遗忘”这件事聊一聊大分子编码说和老王谬论
- Anima Toon:体素角色动画软件
- Qubicle笔记:自设快捷键(附老王的自设快捷键文件)
- 【老王的脑科学谬论】为什么盲人的听觉“似乎”比正常人更“灵敏”?
- 【核心内容及推导思路】人类记忆系统之谜,也许就是这么回事儿