python - Python中的向量:计算两个向量之间的角度(BASIC)
问题描述
这是我在这个问答网站上的第一篇文章!
在下文中,我将向您展示我编写的一些代码,并且我一直在思考这些代码。它是关于计算两个向量之间的内角。我可能知道围绕这个主题有很多问题,但我来到这里是希望让一些人查看我的代码并告诉我,为什么它没有打印出预期的答案。
例如,如果我使用 vectora = [-8 , -13, -9]
和 vector b = [0, 0, 1]
,结果应该是 30°。
然而,事实并非如此。我怀疑我的错误与arccos
函数的错误实现有关:
import math
import numpy as np
def converter():
print("-+-+-+-+-+- Winkelberechnung zwischen Gerade und Gerade -+-+-+-+-+-")
rx1 = float(input("X- Wert (Richtungsvektor #1): "))
ry1 = float(input("Y- Wert (Richtungsvektor #1): "))
rz1 = float(input("Z- Wert (Richtungsvektor #1): "))
rx2 = float(input("X- Wert (Richtungsvektor #2): "))
ry2 = float(input("Y- Wert (Richtungsvektor #2): "))
rz2 = float(input("Z- Wert (Richtungsvektor #2): "))
rich1 = [rx1, ry1, rz1]
rich2 = [rx2, ry2, rz2]
# Winkel Berechnung: Skalarprodukt durch Beträge - davon den arccos?
skala = rich1[0] * rich2[0] + rich1[1] * rich2[1] + rich1[2] * rich2[2]
b_von_r1 = math.sqrt(rich1[0]**2 + rich1[1]**2 + rich1[2]**2) # winkel_test
b_von_r2 = math.sqrt(rich2[0]**2 + rich2[1]**2 + rich2[2]**2)
angle = np.arccos(skala / (b_von_r1 * b_von_r2))
if angle > 90:
angle = 180 - angle
else:
pass
print(angle)
converter()
解决方案
arccos 以弧度返回角度,而不是度数。
推荐阅读
- sql - 根据另一个表中的数据更新列值
- c# - 单击两次后退按钮以退出活动 - Unity
- cobalt - 钴和系统表盘
- android - 使用 Gmail api 通过 Android 应用发送邮件
- amazon-web-services - AWS IoT CA + 证书到期日期
- javascript - JavaScript 在 MVC Razor 页面中不起作用(可能是 AJAX 造成的)
- javascript - 如何将元素推送到 Firestore 文档集合中的数组?
- javascript - 亚马逊服务器上的 Node.js 视频流问题
- stripe-payments - Stripe Connect 在关联企业账户中重复使用客户保存的付款方式
- php - 拉拉维尔。测试清除活动数据库