繁体   English   中英

连接球面上的两点

[英]Connect two points on the surface of a sphere

我需要连接位于球体上的两个点,这样,线(边缘)留在球体的表面上并且不会穿过它。

现在我有:

  1. 这个球体: 在一个球体上均匀分布 n 个点

  2. 边缘已绘制,但它们穿过球体。

  3. 想要的结果:

这是此答案中提出的球形线性插值或 slerp 的实现:

import numpy as np
import matplotlib.pylab as plt

def slerp(p1, p2, t):
    omega = np.arccos( p1.dot(p2) )
    sin_omega = np.sin(omega)    
    t = t[:, np.newaxis]
    return ( np.sin( (1-t)*omega )*p1 + np.sin( t*omega )*p2 )/sin_omega

p1 = np.array([1, 0, 0])
p2 = np.array([0, 1, 0])
t = np.linspace(0, 1, 30)

arc = slerp(p1, p2, t)

plt.plot( arc[:, 0], arc[:, 1] );
plt.axis('square');

它给出了 2D:

二维示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM