英文原文地址: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)
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?