明可夫基斯差以及其原点的最近距离

明可夫基斯差以及其原点的最近距离

如果两个物体重叠或相交,它们的明可夫斯基差肯定包括原点。
经典的GJK算法就是用这个来执行碰撞检测的判断
下面我会分成三部【明可夫斯基和,明可夫斯基差,明可夫基斯差到原点的最近距离】来一步一步剖析

明可夫斯基和
明可夫斯基和是两个欧几里得空间的点集的和。点集A与B的明可夫斯基和就是。
用公式表示: A + B = { a + b | a∈A ,b∈B}
例如,图1平面上有两个多边形,其坐标分别为
A = {(4, 11), (4, 5), (9, 9)}及B = {(5, 7), (12, 7), (7, 3),(10,2)}
则其明可夫斯基和为A + B = {(4, 11), (4, 5), (9, 9),(5, 7), (12, 7), (7, 3),(10,2)}。
在这里插入图片描述
明可夫斯基差
对于减法,明可夫基斯和的概念也成立,这是可称为明可夫斯基差
用公式表示:A - B = A + (-B) ={ a + (-b) | a∈A ,b∈B}={ a - b | a∈A ,b∈B}
由图1可得图2
明可夫斯基差为
A - B = {
(4-5, 11-7), (4-5, 5-7), (9-5, 9-7),
(4-12, 11-7), (4-12, 5-7), (9-12, 9-7),
(4-7, 11-3), (4-7, 5-3), (9-7, 9-3),
(4-10, 11-2), (4-10, 5-2), (9-10, 9-2)
}
={
(-1,4),(-1,-2),(4,2),
(-8,4),(-8,-2),(-3,2),
(-3,8),(-3,2),(2,6),
(-6,9),(-6,3),(-1,7)
}。
在这里插入图片描述
明可夫基斯差到原点的最近距离
ok通过前面的内容你应该已经很清晰透彻的了解明可夫斯基差和和的概念了,那么如何求到原点最近的距离呢?
由于上面的图是物体相互碰撞的的情况,不是很方便说明,我换一个不碰撞的新图来解释一下。
如图三所示

在这里插入图片描述
首先我们能清楚的看到最近的边其实是A(-4,-1)和 B(1,3)所连的直线。
那么我们可以把问题转换为点到直线的距离 【求OC向量】
在这里插入图片描述
由数学几何向量的性质很容易就能知道在三角形OAC里 OC = OA + AC
那向量OC的模就是点到直线的长度了

OA已知是(-4,-1)

接下来就是求AC:
我们很容易就能看出,AC其实就是AO到AB的投影
在这里插入图片描述
在这里插入图片描述
AC向量的推导过程如图【没有笔鼠标画的有点丑见谅】
AC=AB*(doc(AO,AB)/doc(AB,AB))

AB=(1,3)-(-4,-1)=(5,4)
AO=(0,0)-(-4,-1)=(4,1)

doc(AO,AB)=54+41=24
doc(AB,AB)=55+44=41

AC=(24/41)*AB=(120/41,96/41)

OC=OA+AC=(-4,-1)+(120/41,96/41)=(-44/41,55/41)≈(-1,1.3)

OC≈1.64

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是我最喜欢的五部电影的相关信息: 1.《肖申克的救赎》 导演:弗兰克·德拉邦特 评分:9.3 片长:142分钟 语言:英语 上映日期:1994年 2.《阿甘正传》 导演:罗伯特·泽米吉斯 评分:9.0 片长:142分钟 语言:英语 上映日期:1994年 3.《星际穿越》 导演:克里斯托弗·诺兰 评分:8.6 片长:169分钟 语言:英语 上映日期:2014年 4.《狮子王》 导演:罗杰·阿勒斯,罗伯·可夫 评分:8.5 片长:88分钟 语言:英语 上映日期:1994年 5.《指环王:王者归来》 导演:彼得·杰克逊 评分:9.0 片长:201分钟 语言:英语 上映日期:2003年 接下来是构造print语句,遍历字典中每个项的循环,打印出它的键,然后它的值: ``` movies = { "肖申克的救赎": { "导演": "弗兰克·德拉邦特", "评分": 9.3, "片长": "142分钟", "语言": "英语", "上映日期": "1994年" }, "阿甘正传": { "导演": "罗伯特·泽米吉斯", "评分": 9.0, "片长": "142分钟", "语言": "英语", "上映日期": "1994年" }, "星际穿越": { "导演": "克里斯托弗·诺兰", "评分": 8.6, "片长": "169分钟", "语言": "英语", "上映日期": "2014年" }, "狮子王": { "导演": "罗杰·阿勒斯,罗伯·可夫", "评分": 8.5, "片长": "88分钟", "语言": "英语", "上映日期": "1994年" }, "指环王:王者归来": { "导演": "彼得·杰克逊", "评分": 9.0, "片长": "201分钟", "语言": "英语", "上映日期": "2003年" } } for movie, info in movies.items(): print(movie) for key, value in info.items(): print(key, ":", value) print() ``` 输出结果如下: ``` 肖申克的救赎 导演 : 弗兰克·德拉邦特 评分 : 9.3 片长 : 142分钟 语言 : 英语 上映日期 : 1994年 阿甘正传 导演 : 罗伯特·泽米吉斯 评分 : 9.0 片长 : 142分钟 语言 : 英语 上映日期 : 1994年 星际穿越 导演 : 克里斯托弗·诺兰 评分 : 8.6 片长 : 169分钟 语言 : 英语 上映日期 : 2014年 狮子王 导演 : 罗杰·阿勒斯,罗伯·可夫 评分 : 8.5 片长 : 88分钟 语言 : 英语 上映日期 : 1994年 指环王:王者归来 导演 : 彼得·杰克逊 评分 : 9.0 片长 : 201分钟 语言 : 英语 上映日期 : 2003年 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值