目錄
python實現點到平面的距離
1.三點定面
2.點到面的距離
3.python實現點到面的距離
關於點線面之間關係可以參考:
空間上任意三個不共線的點,可以確定乙個平面,三點定面的例子:
點到面的距離,可參考這個例子
空間上不共線的三個點p1,p2,p3確定乙個平面,計算空間上某個點p4到組成的平面的距離,可如下計算
import numpy as np
def define_area(point1, point2, point3):
"""法向量 :n=
空間上某點:p=
點法式方程:a(x-x0)+b(y-y0)+c(z-z0)=ax+by+cz-(ax0+by0+cz0)
:param point1:
:param point2:
:param point3:
:param point4:
:return:(ax, by, cz, d)代表:ax + by + cz + d = 0
"""point1 = np.asarray(point1)
point2 = np.asarray(point2)
point3 = np.asarray(point3)
ab = np.asmatrix(point2 - point1)
ac = np.asmatrix(point3 - point1)
n = np.cross(ab, ac) # 向量叉乘,求法向量
# ax+by+cz
ax = n[0, 0]
by = n[0, 1]
cz = n[0, 2]
d = -(ax * point1[0] + by * point1[1] + cz * point1[2])
return ax, by, cz, d
def point2area_distance(point1, point2, point3, point4):
""":param point1:資料框的行切片,三維
:param point2:
:param point3:
:param point4:
:return:點到面的距離
"""ax, by, cz, d = define_area(point1, point2, point3)
mod_d = ax * point4[0] + by * point4[1] + cz * point4[2] + d
mod_area = np.sqrt(np.sum(np.square([ax, by, cz])))
d = abs(mod_d) / mod_area
return d
if __name__ == '__main__':
# 初始化資料
point1 = [2, 3, 1]
point2 = [4, 1, 2]
point3 = [6, 3, 7]
point4 = [-5, -4, 8]
# 計算點到面的距離
d1 = point2area_distance(point1, point2, point3, point4) # s=8.647058823529413
print("點到面的距離s: " + str(d1))
點到平面的距離公式
ax by cz d 0 其中n a,b,c 是平面的法向量,d是將平面平移到座標原點所需距離 所以d 0時,平面過原點 給定乙個向量v x,y,z 則 v sqrt x x y y z z 給定兩個向量v1 x1,y1,z1 和v2 x2,y2,z2 則他們的內積是 v1v2 x1x2 y1y2 ...
點到平面的距離公式
ax by cz d 0 其中n a,b,c 是平面的法向量,d是將平面平移到座標原點所需距離 所以d 0時,平面過原點 給定乙個向量v x,y,z 則 v sqrt x x y y z z 給定兩個向量v1 x1,y1,z1 和v2 x2,y2,z2 則他們的內積是 v1v2 x1x2 y1y2 ...
點到超平面的距離
首先說一下採用向量法計算點到平面的距離 設圖中平面的方程為ax by cz d 0,點m0的座標為 x0,y0,z0 點m1的座標為 x1,y1,z1 求m1到平面的距離。解 其中a為向量m0m1與平面法向量之間的夾角,對於平面ax by cz d 0,該平面的乙個法向量n為 a,b,c 由於 因此...