python - 连 catch 体表面上的两点

标签 python connect points

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

现在我有:

  1. 这个球体:Evenly distributing n points on a sphere

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

  3. 期望的结果:

最佳答案

这是 spherical linear interpolation 的实现或在此 answer 中提出的 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 形式:

2D example

关于python - 连 catch 体表面上的两点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52007002/

相关文章:

php - 在问答网站上管理用户积分

draw - Openlayer在Openlayer绘制功能中添加点

python - 尽管 CNN 在训练和测试方面具有非常好的准确性,但在随机图像上表现不佳

python - 如何将 Python 程序(在 PC 上)连接到 Android 应用程序(在手机上)?

python - 如何在Python中使用libcloud库

sql-server - 检查我是否可以从另一台计算机连接到 mySQL 数据库的最简单方法是什么

python - 如何测试是否有服务器在 python 端口上打开?

THREE.js 光线转换点

python - 如何清理 python 中的工作区?

python - 为什么在使用 Pandas 的内置绘图调用而不是通过 Matplotlib 绘图时我的日期轴格式被破坏了?