python利用向量計算點到面的距離

2021-09-02 23:39:04 字數 1300 閱讀 9611

該鏈結是利用向量計算點到面的距離的原理

# -*- coding: utf-8 -*-

import numpy as np

import pandas as pd

def pointtoarea(point1, point2, point3, point4):

"""描述:point4到point1, point2, point3所在面的距離

:param point1:資料框的行切片,三維

:param point2:

:param point3:

:param point4:

:return:點到面的距離

"""# 設法向量(x,y,z)的x=1

x = 1 # 法向量的x座標

p1 = point1.values # 轉化為矩陣

p2 = point2.values

p3 = point3.values

p4 = point4.values

v12 = p1 - p2 # p1到p2的向量

v13 = p1 - p3 # p1到p2的向量

x = np.vstack((v12, v13)) # 把向量v12、v13合併為2*3矩陣

a = -x[:, 0] # a的係數

yz = np.matrix(x[:, 1:]).i.dot(a) # x的逆矩陣乘以a

y = yz[0, 0] # 法向量的y座標

z = yz[0, 1] # 法向量的z座標

n = np.array([x, y, z]) # 法向量

v41 = p4 - p1 # p4到p1的向量

return abs(v41.dot(n) / n.dot(n))

# 測試

if __name__ == '__main__':

# 初始化資料

df = pd.dataframe([[2, 3, 1], [4, 1, 2], [6, 3, 7], [-5, -4, 8]], columns=['x', 'y', 'z'])

point1 = df.loc[0]

point2 = df.loc[1]

point3 = df.loc[2]

point4 = df.loc[3]

# 計算點到面的距離

s = pointtoarea(point1, point2, point3, point4) # s=8.647058823529413

print("點到面的距離s: " + str(s))

稀疏向量計算優化小結

在各種演算法中,向量計算是最經常使用的一種操作之中的乙個。傳統的向量計算,學過中學數學的同學也能明確怎麼做。但在如今的大資料環境下。資料一般都會比較稀疏,因此稀疏向量的計算,跟普通向量計算。還是存在一些不同。首先,我們定義兩個向量 a x1,x2,xn b y1,y 2,yn 定義a b的點積為a ...

幾何向量 計算光線折射refract向量

其實光線除了反射現象外,還有折射現象,打個比方,你看水塘中魚兒游動,表面上看起來魚兒很貼近水面,同時也感覺水底很淺,結果一腳捅下去,直接沒到大腿了,這就是光的折射產生的一種視覺欺騙。光線折射的產生,其實是因為光線通過不同介質所產生的 偏折 現象。ps 光線的 偏折 現象實際上和光的粒子性有關,這裡我...

複數計算和向量計算的區別

今天接觸到了量子計算,原理正在摸索,但是從數學角度,複數計算應該會用到。以前學習複數的時候,純屬應付考試,現在回想只記得乙個公式 今天週末,有時間縷一下,看幾個問題 1 複數裡用到了虛數,看了阮老師的一篇文章,虛數的意義何在 清晰了好多,上學的時候怎麼沒想過這些問題呢?2 看起來複數計算好像跟向量計...