鉴于输入:
double x1,y1,x2,y2;
如何找到的一般形式的公式(双A,B,C,其中斧由+ C = 0 +)?
注:我希望能够做到这一点的计算。 因此,等效斜截式会是这样的:
double dx, dy;
double m, b;
dx = x2 - x1;
dy = y2 - y1;
m = dy/dx;
b = y1;
显然,这是很简单的,但我一直没能找到一般方程的形式解(这是比较有用的,因为它可以做垂直线)。 我已经看过我的线性代数书两个书计算几何(包括太超前解释这一点)。
如果从方程开始y-y1 = (y2-y1)/(x2-x1) * (x-x1)
其是由两个点所定义的直线的方程式),通过一些操作可以得到(y1-y2) * x + (x2-x1) * y + (x1-x2)*y1 + (y2-y1)*x1 = 0
,并且可以识别出:
-
a = y1-y2
, -
b = x2-x1
, -
c = (x1-x2)*y1 + (y2-y1)*x1
。
减去两分拿到切线(x2-x1, y2-y1)
正常化,并旋转90度,以获得法线矢量(a,b)
就拿点积与其中一个点,以获得恒定的, c
。
快捷步骤: “ 问题:(4,5)(3,-7)” 解:M = -12 / 1,然后12X-Y = 48 “ 注:m为斜率 ” COPY分子,贴上“X”阳性分数对之间负号。 3.添加X1:(尖端simmilar符号= +添加复制符号)1.更改所述第二组为相反的符号,2.加Y1至Y2(装置增加或减少它们取决于符号的),以X2(也意味着加或减去它们取决于该标志),4.然后乘12和1的任何问题组。 认为“BOOM”田田!之后,你有你的答案
如果从定义线从2分方程开始
(x - x1)/(x2 - x1) = (y - y1)/(y2 - y1)
你可以用下式结束
x(y2 - y1) - y(x2 - x1) - x1*y2 + y1*x2 = 0
这样的系数为:
- 一个= Y2 - Y1
- B = - (X2 - X1)= X1 - X2
- C = Y1 * X2 - X1 * Y2
我的实现在C算法
inline v3 LineEquationFrom2Points(v2 P1, v2 P2) {
v3 Result;
Result.A = P2.y - P1.y;
Result.B = -(P2.x - P1.x);
Result.C = P1.y * P2.x - P1.x * P2.y;
return(Result);
}
#include <stdio.h>
main()
{
int a,b,c;
char x,y;
a=5;
b=10;
c=15;
x=2;
y=3;
printf("the equation of line is %dx+%dy=%d" ,a,b,c);
}