三维空间中有三个点,求一点到两外两点组成直线的距离。
向量
p1p=(x-x1,y-y1,z-z1)
p1p2=(x2-x1,y2-y1,z2-z1)
再用
(x-x1)(x2-x1)+(y-y1)(y2-y1)+(z-z1)(y2-y1)的绝对值
除以
sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)*sqrt((x-x1)^2+(y-y1)^2+(z-z1)^2)
(sqrt代表根号)
得到p1p和p1p2夹角的余弦cos值,这利用了向量内积的性质,你看下参考资料,可以由内积反推出cos值。
然后用 sin^2+cos^2=1,得到sin值。
最后用 sqrt((x-x1)^2+(y-y1)^2+(z-z1)^2) 乘以这个sin值,就结束了。
你可以先求出pp1p2的边长,然后代进去算出面积,然后高=2×S/底,就求出来了
class Point:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def distance(p1, p2):
return ((p1.x - p2.x) ** 2 + (p1.y - p2.y) ** 2 + (p1.z - p2.z) ** 2) ** 0.5
p1, p2 = Point(3, 4, 5), Point(5, 12, 13)
print distance(p1, p2)
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
polliwog模块可以计算二维和三维的点线面
官方文档:https://polliwog.readthedocs.io/en/latest/
如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢