我试图找到两个向量之间的角度。
以下是我用来评估向量ba和之间的角度的代码bc
import numpy as np
import scipy.linalg as la
a = np.array([6,0])
b = np.array([0,0])
c = np.array([1,1])
ba = a - b
bc = c - b
cosine_angle = np.dot(ba, bc) / (la.norm(ba) * la.norm(bc))
angle = np.arccos(cosine_angle)
print (np.degrees(angle))
Run Code Online (Sandbox Code Playgroud)
我的问题是,
在这段代码中:
对于两者c = np.array([1,1]),c = np.array([1,-1]) 你都会得到 45 度作为答案。我可以从数学角度理解这一点,因为从点积中你总是关注区间 中的角度[0,180]。
但从几何角度来看,这是具有误导性的,因为和 的点c位于两个不同的位置。
那么有没有一种方法可以让我获得区间内的角度 作为一般起点[1,1][1,-1][0,360]
b = np.array([x,y])
感谢你的帮助
该图的 x 坐标和 y 坐标为:
path_x= (4.0, 5.638304088577984, 6.785456961280076, 5.638304088577984, 4.0)
path_y =(0.0, 1.147152872702092, 2.7854569612800755, 4.423761049858059, 3.2766081771559668)
我通过以下方式获得了上面的图片:
x_min =min(path_x)-1
x_max =max(path_x)+1
y_min =min(path_y)-1
y_max =max(path_y)+1
num_pts = len(path_x)
fig = plt.figure(figsize=(8,8))
#fig = plt.figure()
plt.suptitle("Curve and the boundary")
ax = fig.add_subplot(1,1,1)
ax.set_xlim([min(x_min,y_min),max(x_max,y_max)])
ax.set_ylim([min(x_min,y_min),max(x_max,y_max)])
ax.plot(path_x,path_y)
Run Code Online (Sandbox Code Playgroud)
现在我的目的是使用三次样条绘制一条平滑的曲线。但看起来对于三次样条,您需要x coordinates按升序排列。而在本例中, 和x values都不y values按升序排列。
这也不是一个函数。也就是说,x value映射了范围内的多个元素。
我也浏览了这篇文章。但我找不到解决我的问题的正确方法。
我非常感谢你在这方面的帮助