通过两点直线距离点的直线方程 - C
问题描述:
我有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
你是什么意思“我怎么能把它放在变量里面”? –