通过两点和直线点直线的直线方程 - C.

时间:2017-04-10 15:20:35

标签: line distance point

我有3分,p1(x1,y1)p2(x2,y2)p3(x3,y3)

我知道通过p1p2的直线方程应该从(x-x1)/(x2-x1)=(y-y1)/(y2-y1)获得,但我怎样才能将它放在变量中?

之后,如何计算从p3到此线的距离?

3 个答案:

答案 0 :(得分:1)

首先将你的线方程变换为另一种形式

Ax + By + C = 0 //记住A^2 + B^2 != 0(这意味着A或B在一瞬间不能等于零)

它将是(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)

欢迎你

答案 1 :(得分:1)

一行可以使用a形式(或使用斜率截距形式)由3个数字bcax + by = c的元组表示。因此,您可以创建一个名为Line的类,该类存储3个intfloat类型的公共成员。

然后,您可以使用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版应该差不多。

答案 2 :(得分:1)

以下代码计算两点之间的距离。

#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 distance -lm