該鏈結是利用向量計算點到面的距離的原理
# -*- 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 看起來複數計算好像跟向量計...