如何检索两个 3D 向量之间的角度?

2024-04-03

我是Python新手。 我在 3d 空间中有两个向量,我想知道两个向量之间的角度

I tried:

vec1=[x1,y1,z1]

vec2=[x2,y2,z2]

angle=np.arccos(np.dot(vec1,vec2)/(np.linalg.norm(vec1)*np.linalg.norm(vec2)))

但是当改变顺序时,vec2,vec1 获得相同的角度并且没有更高。 当向量的顺序改变时,我想给我一个更大的角度。


使用函数来帮助您选择所需的角度。在代码的开头写入:

def angle(v1, v2, acute):
# v1 is your firsr vector
# v2 is your second vector
    angle = np.arccos(np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2)))
    if (acute == True):
        return angle
    else:
        return 2 * np.pi - angle

然后,当您想在程序中计算角度(以弧度为单位)时,只需编写

angle(vec1, vec2, 'True')

对于锐角,以及

angle(vec2, vec1, 'False')

对于钝角。

例如:

vec1 = [1, -1, 0]
vec2 = [1, 1, 0]

#I am explicitly converting from radian to degree
print(180* angle(vec1, vec2, True)/np.pi) #90 degrees
print(180* angle(vec2, vec1, False)/np.pi) #270 degrees
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检索两个 3D 向量之间的角度? 的相关文章

随机推荐

  • Firebase 事件无延迟

    使用是一个好主意吗Firebase 事件 https www firebase com docs web api query on htmlapi 在客户端之间实时同步某些内容 例如 如果我想在客户端上完全同时播放视频 延迟小于 30 毫秒
  • 系统托盘中的 JavaFX 应用程序

    我正在使用 JavaFX UI 制作一个简单的应用程序 该应用程序只需执行以下操作 有一个系统托盘图标 单击时显示一个窗口 再次单击时隐藏它 右键单击时显示一个带有 1 个 退出 项的菜单 我已经制作了 UI 并将应用程序放入系统托盘中 但
  • Android 在按钮单击时显示数字键盘

    在我的应用程序中 我试图在用户单击按钮时显示数字键盘 单击按钮时 我使用 requestFocus 将焦点转移到布局中的 EditText 接下来我需要显示数字键盘 以便用户可以输入值 这些值始终是数字 因此我只需要显示数字键盘 我厌倦了在
  • 登录销售导航器 python selenium

    我正在尝试实现登录销售导航页面的简单任务 之后我可以继续尝试抓取潜在客户和帐户数据 作为抓取练习 按照此link https www linkedin com sales login为了登录 我有这个脚本来完成任务 browser webd
  • 使用 XmlCipher (RSA) 加密 XML 文件

    我只需要使用公钥加密一些 XML 元素 我成功地可以将此代码与 simetric 算法 XMLCipher AES 128 一起使用 但在尝试使用 XMLCipher RSA v1dot5 时失败 这就是代码 import java sec
  • FileReference.save() AS3 上锁定文件类型的替代方案

    Update 正如下面 Jacob 的回复中所讨论的 限制或纠正 FileReference save 的行为是不可能的 谁能建议一个替代方案 服务器是 Apache PHP 它符合我在这篇文章中的所有标准 并避免我与 Jacob 讨论的陷
  • iOS Prefix.pch 最佳实践

    我见过许多开发人员将各种方便的宏添加到他们的 iOS 项目的 Prefix pch 中 您建议在 iOS Prefix pch 文件中添加 或不添加 什么内容 你的 Prefix pch 是什么样的 Ewww 不要将宏放入 pch 文件中
  • ACTION_POWER_CONNECTED 的问题

    我在应用程序中使用以下示例页面中的代码来监控设备何时连接 断开与电源适配器的连接 http developer android com training monitoring device state battery monitoring
  • 如何在第二台显示器上打开form2?

    我从 Form1 创建 Form2 我希望 Form2 在第二台显示器上打开 我怎样才能做到这一点 我使用这段代码 private void button1 Click object sender EventArgs e Form2 dlg
  • react-google-maps:如何使用 fitBounds、panBy、panTo、panToBounds 公共 API?

    根据反应谷歌地图库 https github com tomchentw react google maps blob master src lib GoogleMap js L125 L131 您可以从 ref 对象调用这四个方法 看起来
  • 简化 sympy 中双曲函数的指数表示

    我正在尝试将表达式中的一些指数函数重写为 cosh 和 sinh rewrite 函数的作用是将双曲函数转换为其指数表示形式 但想回去是不行的 gt gt gt import sympy gt gt gt x sympy Symbol x
  • UIScrollView 就像 iPad 上的 Twitter 应用程序

    我正在寻找教程或一些想法来制作一个类似于 iPad 版 Twitter 应用程序中的自定义控制器 我的意思是左侧有主菜单的堆叠页面 预先感谢您的任何帮助 我们创建了一个模拟项目并添加到 github 中 https github com r
  • 如何禁用 JButton 而不隐藏其标签?

    我正在使用 netbeans IDE 在 Java 中开发一个项目 我需要禁用特定的 JButton 我为此使用以下代码 IssuBtn setEnabled false 但禁用后 它不会在 JButton 上显示文本 如何将该文本保留在
  • 如果选中复选框,如何隐藏和显示项目

    我试图根据是否选中复选框来隐藏和显示一个区域 我尝试了一些选项 但该区域要么始终可见 要么始终隐藏 JavaScript document ready function var mgift chkbxMGift input type che
  • 如何跳转到 PrintDocument 中的下一页?

    我有一个应用程序可以打印您想要的条形码数量 但是如果条形码的数量大于条形码的大小打印文档 http msdn microsoft com en us library system drawing printing printdocument
  • Gradle 与 Eclipse - 当多个源集时不完整的 .classpath

    我有一个 gradle 构建脚本 其中包含一些源集 这些源集都定义了各种依赖项 有些是常见的 有些不是 并且我正在尝试使用 Eclipse 插件来让 Gradle 生成 project and classpath文件的 Eclipse 但我
  • 如何在android java应用程序中从设备获取图像

    在我的应用程序中 我想上传图像 为此 我必须从 Android 设备中的图库中获取图像 我如何编写代码来完成这个任务 提出意图并采取行动ACTION GET CONTENT并将类型设置为 image 这将启动照片选择器 Activity 当
  • nunjucks:找不到模板

    尝试渲染 nunjucks 模板但得到Error template not found email html server views email email html workers email worker js email worke
  • 转换文件编码

    我有一个 PHP 应用程序 其文件编码是 Greek ISO iso 8859 7 我想将文件转换为 utf 8 但仅使用 utf 8 保存文件是不够的 因为希腊文本会出现乱码 是否有一种 自动 方法可以执行此操作 以便我可以完全转换应用程
  • 如何检索两个 3D 向量之间的角度?

    我是Python新手 我在 3d 空间中有两个向量 我想知道两个向量之间的角度 I tried vec1 x1 y1 z1 vec2 x2 y2 z2 angle np arccos np dot vec1 vec2 np linalg n