我有3點,p1(x1,y1)
,p2(x2,y2)
和p3(x3,y3)
。通過兩點直線距離點的直線方程 - C
我知道應該從(x-x1)/(x2-x1)=(y-y1)/(y2-y1)
獲得通過t p1
和p2
的直線方程,但是我怎樣才能把它放在一個變量裏?
然後,如何計算從p3
到這條線的距離?
我有3點,p1(x1,y1)
,p2(x2,y2)
和p3(x3,y3)
。通過兩點直線距離點的直線方程 - C
我知道應該從(x-x1)/(x2-x1)=(y-y1)/(y2-y1)
獲得通過t p1
和p2
的直線方程,但是我怎樣才能把它放在一個變量裏?
然後,如何計算從p3
到這條線的距離?
首先是改變你的直線方程爲另一種形式
Ax + By + C = 0
//保持INT記住,A^2 + B^2 != 0
(這意味着A或B都無法成爲equall零在一個時刻)
它會是(y1- y2)x + (x2 - x1)y + (x1y2 - x2y1) = 0;
如果你有一個線Ax + By + C = 0
的距離形狀點M(Mx, My)
你行的公式將是
d = abs(A * Mx + B * My + C)/sqrt(A * A + B * B)
別客氣
甲線可以通過使用形式ax + by = c
(或使用斜截式太)3號a
,b
和c
的元組來表示。所以你可以做的是創建一個名爲Line
的類,該類存儲int
或float
類型的3個公共成員。
然後,您可以使用standard point-line distance formula在班級中實現距離函數。
在C#中,你可以這樣做:
class Line
{
public float a,b,c;
public float Distance(Point p)
{
return Math.Abs(a * p.X + b * p.Y + c)/Math.Sqrt(a * a + b * b)
}
}
C版應該是大同小異的。
以下代碼計算兩點之間的距離。
#include <stdio.h>
#include <math.h>
int main()
{
double p1x,p1y,p2x,p2y,p1p2_distance;
//Initialize variables here
// Distance d between p1 and p2 is given by: d = sqrt((p2.x-p1.x)^2 + (p2.y-
p1.y)^2)
p1p2_distance = sqrt(pow((p2x-p1x),2)+pow((p2y-p1y),2)); // same formula can be used to calculate distance between p1,p3 and p2,p3.
printf("Distance between p1 and p2: %f \n", &p1p2_distance);
return 0;
}
在Linux編譯:GCC distance.c -o距離-lm
你嘗試過這麼遠嗎?您可以請[編輯您的問題](https://stackoverflow.com/posts/43327070/edit)添加代碼? – cxw
這是基本的矢量數學,不是編程問題。 – Olaf
你是什麼意思「我怎麼能把它放在變量裏面」? –