點與線的關係處理

2021-09-23 07:39:32 字數 688 閱讀 4154

這裡我們使用向量來進行判斷:

定義:平面上三點a(x1,y1),b(x2,y2),c(x3,y3)組成的面積(含正負,取絕對值為面積)是:

s(a,b,c) = [ (x1-x3) * (y2-y3) - (y1 -y3)* (x2-x3) ]

那麼,當abc逆時針順序時s為正的,順時針則s為負值。

所以,

對於有向線段ab和點c

如果s(a,b,c)為正數,則c在有向線段ab的左側;

如果s(a,b,c)為負數,則c在有向線段ab的右側;

如果s(a,b,c)為0,則c在直線ab上。

點到直線的距離d

d = ( a*x0 + b*y0 +c ) / sqrt( a*a + b*b);

這個距離有符號之分,表示點處於直線的上下方,絕對值表示歐氏距離。

點到直線上的垂足(x,y)

對於方程 :

(1) ax + by +c =0

(2) (y - y0) / (x - x0) = b / a 聯合求解:

x = ( b*b*x0 - a*b*y0 - a*c )/ (a*a + b*b);

y = (-a*b*x0 + a*a*y0 - b*c) /(a*a + b*b )

點與線的關係

專案中需要到判斷點與線段的關係,發現使用向量外積來判斷容易些,惡補了一下向量的知識。向量外積,又稱叉積,是向量代數 解析幾何 中的乙個概念。兩個向量v1 x1,y1 和v2 x2,y2 的外積v1 v2 x1y2 y1x2。如果由v1到v2是順時針轉動,外積為負,反之為正,為0表示二者方向相同 平行...

神奇的建模 點與線line

若從圖論的角度思考我並不知道怎麼想到這個結論 這裡我們的突破口就是將某一狀態看做乙個節點。include define int long long using namespace std const int n 3e5 const int p 1e9 7 int n,cnt 0 int x n y ...

Linux掛載點與分割槽的關係

linux 使用字母和數字的組合來指代磁碟分割槽。這可能有些使人迷惑不解,特別是如果你以前使用 c 驅動器 這種方法來指代硬碟及它們的分割槽。在 dos windows 的世界裡,分割槽是用下列方法命名的 每個分割槽都被檢查過以便判定它是否可被 dos windows 讀取。如果分割槽型別是相容的,...