189 8069 5689

[计算几何]知两点坐标求过两点的直线解析式-创新互联

我们设已知点为 A ( X 1 , Y 1 ) A(X_1,Y_1) A(X1​,Y1​), B ( X 2 , Y 2 ) B(X_2,Y_2) B(X2​,Y2​)

你所需要的网站建设服务,我们均能行业靠前的水平为你提供.标准是产品质量的保证,主要从事成都做网站、成都网站建设、成都外贸网站建设企业网站建设、手机网站制作设计、网页设计、品牌网站制作、网页制作、做网站、建网站。创新互联公司拥有实力坚强的技术研发团队及素养的视觉设计专才。

它们的 X X X坐标差为 X = X 2 − X 1 X=X_2-X_1 X=X2​−X1​ 它们的 Y Y Y坐标差为 Y = Y 2 − Y 1 Y=Y_2-Y_1 Y=Y2​−Y1​

在这里插入图片描述

那么我们目前可以得出这样的解析式: y = Y X x + c y=\frac{Y}{X}x+c y=XY​x+c

y y y 轴与直线的交点(如上图点 C C C)的 y y y坐标与 c c c相等

A ( X 1 , Y 1 ) ⇒ C ( 0 , Y 1 − Y X X 1 ) A(X_1,Y_1)\Rarr C(0,Y_1-\frac{Y}{X}X_1) A(X1​,Y1​)⇒C(0,Y1​−XY​X1​)

Y 1 − Y X X 1 Y_1-\frac{Y}{X}X_1 Y1​−XY​X1​

⇒ Y 1 − Y 2 − Y 1 X 2 − X 1 X 1 \Rarr Y_1-\frac{Y_2-Y_1}{X_2-X_1}X_1 ⇒Y1​−X2​−X1​Y2​−Y1​​X1​

⇒ ( X 2 − X 1 ) Y 1 − ( Y 2 − Y 1 ) X 1 X 2 − X 1 \Rarr \frac{(X_2-X_1)Y_1-(Y_2-Y_1)X_1}{X_2-X_1} ⇒X2​−X1​(X2​−X1​)Y1​−(Y2​−Y1​)X1​​

⇒ X 2 ∗ Y 1 − X 1 ∗ Y 1 − Y 2 ∗ X 1 + Y 1 ∗ X 1 X 2 − X 1 \Rarr \frac{X_2*Y_1-X_1*Y_1-Y_2*X_1+Y_1*X_1}{X_2-X_1} ⇒X2​−X1​X2​∗Y1​−X1​∗Y1​−Y2​∗X1​+Y1​∗X1​​

⇒ X 2 ∗ Y 1 − Y 2 ∗ X 1 X 2 − X 1 \Rarr \frac{X_2*Y_1-Y_2*X_1}{X_2-X_1} ⇒X2​−X1​X2​∗Y1​−Y2​∗X1​​

⇒ X 2 ∗ Y 1 − Y 2 ∗ X 1 X \Rarr \frac{X_2*Y_1-Y_2*X_1}{X} ⇒XX2​∗Y1​−Y2​∗X1​​

c = X 2 ∗ Y 1 − Y 2 ∗ X 1 X c=\frac{X_2*Y_1-Y_2*X_1}{X} c=XX2​∗Y1​−Y2​∗X1​​

直线解析式: y = Y X x + X 2 ∗ Y 1 − Y 2 ∗ X 1 X y=\frac{Y}{X}x+\frac{X_2*Y_1-Y_2*X_1}{X} y=XY​x+XX2​∗Y1​−Y2​∗X1​​

直线解析式两种常见的表达方式: y = k x + b y=kx+b y=kx+b 和 a x + b y + c = 0 ax+by+c=0 ax+by+c=0

我们将刚才推出来的解析式用另外一种方式表示

y = Y X x + X 2 ∗ Y 1 − Y 2 ∗ X 1 X y=\frac{Y}{X}x+\frac{X_2*Y_1-Y_2*X_1}{X} y=XY​x+XX2​∗Y1​−Y2​∗X1​​

y − Y X x − X 2 ∗ Y 1 − Y 2 ∗ X 1 X = 0 y-\frac{Y}{X}x-\frac{X_2*Y_1-Y_2*X_1}{X}=0 y−XY​x−XX2​∗Y1​−Y2​∗X1​​=0

X y − Y x − ( X 2 ∗ Y 1 − Y 2 ∗ X 1 ) = 0 Xy-Yx-(X_2*Y_1-Y_2*X_1)=0 Xy−Yx−(X2​∗Y1​−Y2​∗X1​)=0 等式两边同时乘 X X X

( X 2 − X 1 ) y − ( Y 2 − Y 1 ) x − ( X 2 ∗ Y 1 − Y 2 ∗ X 1 ) = 0 (X_2-X_1)y-(Y_2-Y_1)x-(X_2*Y_1-Y_2*X_1)=0 (X2​−X1​)y−(Y2​−Y1​)x−(X2​∗Y1​−Y2​∗X1​)=0

( X 2 − X 1 ) y + ( Y 1 − Y 2 ) x + ( X 1 ∗ Y 2 − Y 1 ∗ X 2 ) = 0 (X_2-X_1)y+(Y_1-Y_2)x+(X_1*Y_2-Y_1*X_2)=0 (X2​−X1​)y+(Y1​−Y2​)x+(X1​∗Y2​−Y1​∗X2​)=0

( Y 1 − Y 2 ) x + ( X 2 − X 1 ) y + ( X 1 ∗ Y 2 − Y 1 ∗ X 2 ) = 0 (Y_1-Y_2)x+(X_2-X_1)y+(X_1*Y_2-Y_1*X_2)=0 (Y1​−Y2​)x+(X2​−X1​)y+(X1​∗Y2​−Y1​∗X2​)=0

a = ( Y 1 − Y 2 ) , b = ( X 2 − X 1 ) , c = ( X 1 ∗ Y 2 − Y 1 ∗ X 2 ) a=(Y_1-Y_2),b=(X_2-X_1) ,c=(X_1*Y_2-Y_1*X_2) a=(Y1​−Y2​),b=(X2​−X1​),c=(X1​∗Y2​−Y1​∗X2​)

我们可以用几何面积法验证其正确性

同样的我们设已知点为 A ( X 1 , Y 1 ) A(X_1,Y_1) A(X1​,Y1​), B ( X 2 , Y 2 ) B(X_2,Y_2) B(X2​,Y2​)

同时我们设在这条直线上的一点 C ( X 0 , Y 0 ) C(X_0,Y_0) C(X0​,Y0​)

在这里插入图片描述

那么把等式表示为 ( Y 1 − Y 2 ) X 0 + ( X 2 − X 1 ) Y 0 + ( X 1 ∗ Y 2 − Y 1 ∗ X 2 ) = 0 (Y_1-Y_2)X_0+(X_2-X_1)Y_0+(X_1*Y_2-Y_1*X_2)=0 (Y1​−Y2​)X0​+(X2​−X1​)Y0​+(X1​∗Y2​−Y1​∗X2​)=0

Y 1 ∗ X 0 − Y 2 ∗ X 0 + X 2 ∗ Y 0 − X 1 ∗ Y 0 + X 1 ∗ Y 2 − Y 1 ∗ X 2 = 0 Y_1*X_0-Y_2*X_0+X_2*Y_0-X_1*Y_0+X_1*Y_2-Y_1*X_2=0 Y1​∗X0​−Y2​∗X0​+X2​∗Y0​−X1​∗Y0​+X1​∗Y2​−Y1​∗X2​=0

X 1 ∗ Y 2 − Y 1 ∗ X 2 X_1*Y_2-Y_1*X_2 X1​∗Y2​−Y1​∗X2​ 面积为下图
在这里插入图片描述

Y 1 ∗ X 0 − X 1 ∗ Y 0 Y_1*X_0-X_1*Y_0 Y1​∗X0​−X1​∗Y0​ 面积为下图

在这里插入图片描述

X 2 ∗ Y 0 − Y 2 ∗ X 0 X_2*Y_0-Y_2*X_0 X2​∗Y0​−Y2​∗X0​ 面积为下图

在这里插入图片描述

通过面积的加减最后得到的如下图

在这里插入图片描述

即 ( X 2 − X 0 ) ( Y 0 − Y 1 ) − ( Y 2 − Y 0 ) ( X 0 − X 1 ) (X_2-X_0)(Y_0-Y_1)-(Y_2-Y_0)(X_0-X_1) (X2​−X0​)(Y0​−Y1​)−(Y2​−Y0​)(X0​−X1​)

我们设 K = ( Y 2 − Y 1 ) / ( X 2 − X 1 ) K=(Y_2-Y_1)/(X_2-X_1) K=(Y2​−Y1​)/(X2​−X1​)

( X 2 − X 0 ) ( Y 0 − Y 1 ) − ( Y 2 − Y 0 ) ( X 0 − X 1 ) = K ( X 2 − X 0 ) ( X 0 − X 1 ) − K ( X 2 − X 0 ) ( X 0 − X 1 ) = 0 (X_2-X_0)(Y_0-Y_1)-(Y_2-Y_0)(X_0-X_1)=K(X_2-X_0)(X_0-X_1)-K(X_2-X_0)(X_0-X_1)=0 (X2​−X0​)(Y0​−Y1​)−(Y2​−Y0​)(X0​−X1​)=K(X2​−X0​)(X0​−X1​)−K(X2​−X0​)(X0​−X1​)=0

得证

c++代码计算

void ASL(Line t){//Analytic straight line
    double a=t.a.Y-t.b.Y,b=t.b.X-t.a.X,c=t.a.X*t1.b.Y-t.b.X*t.a.Y;
    return;
}
应用
  • 知一直线和一个在直线上点的 x x x坐标求该点坐标的 y y y坐标

a x + b y + c = 0 ax+by+c=0 ax+by+c=0

b y = − a x − c by=-ax-c by=−ax−c

y = − a x − c b y=\frac{-ax-c}{b} y=b−ax−c​

c++代码计算

double FYC(Line t,double x){//Find the Y coordinate
    double a=t.a.Y-t.b.Y,b=t.b.X-t.a.X,c=t.a.X*t1.b.Y-t.b.X*t.a.Y;
    return (-a*x-c)/b;
}
  • 知一直线和一个在直线上点的 y y y坐标求该点坐标的 x x x坐标

a x + b y + c = 0 ax+by+c=0 ax+by+c=0

a x = − b y − c ax=-by-c ax=−by−c

x = − b y − c a x=\frac{-by-c}{a} x=a−by−c​

c++代码计算

double FXC(Line t,double x){//Find the X coordinate
    double a=t.a.Y-t.b.Y,b=t.b.X-t.a.X,c=t.a.X*t1.b.Y-t.b.X*t.a.Y;
    return (-b*y-c)/a;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文标题:[计算几何]知两点坐标求过两点的直线解析式-创新互联
分享地址:http://cdxtjz.com/article/djpdio.html

其他资讯