首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在三维空间中寻找两个单位向量之间的角度

在三维空间中寻找两个单位向量之间的角度
EN

Stack Overflow用户
提问于 2011-02-24 11:46:26
回答 1查看 8.8K关注 0票数 2

我正在尝试做一些基本的3D模拟,但自从我在高中学习这些东西以来,已经有20年了……

如果我在三维空间中有两个向量,我如何找到它们之间的角度。例如,我有一个向量(3,2,1)和另一个向量(4,-5,6),我如何找到它们之间的角度(以度或弧度为单位)。如果我没记错的话,有一些公式可以做到这一点。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-02-14 21:42:06

这样做是可行的:

代码语言:javascript
运行
复制
atan2(sqrt(dot(cross(a, b), cross(a, b))), dot(a, b))

作为python lambda函数:

代码语言:javascript
运行
复制
import math, numpy

angle = lambda a, b: math.atan2(
    math.sqrt(
        numpy.dot(*([numpy.cross(a, b)]*2))
    ), 
    numpy.dot(a, b)
)

结果以弧度表示:

代码语言:javascript
运行
复制
In : angle([1.,1.,1.], [-1.,1.,1.])
Out: 1.2309594173407747

In : angle([0.,1.,0.], [0.,0.,1.])
Out: 1.5707963267948966

同样适用于2维空间:

代码语言:javascript
运行
复制
In : angle([0.,1.], [1.,0.])
Out: 1.5707963267948966

In : angle([0.,1.], [1.,1.])
Out: 0.7853981633974483
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5100143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档