這裡我們使用向量來進行判斷:
定義:平面上三點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 讀取。如果分割槽型別是相容的,...