求直线交点 叉积
2012-08-29 15:31
288 查看
一般方程法:
直线的一般方程为F(x) = ax + by + c = 0。既然我们已经知道直线的两个点,假设为(x0,y0), (x1, y1),那么可以得到a = y0 – y1, b = x1 – x0,
c = x0y1 – x1y0。
因此我们可以将两条直线分别表示为
F0(x) = a0*x + b0*y + c0 = 0, F1(x) = a1*x + b1*y + c1 = 0
那么两条直线的交点应该满足
a0*x + b0*y +c0 = a1*x + b1*y + c1
由此可推出
x = (b0*c1 – b1*c0)/D
y = (a1*c0 – a0*c1)/D
D = a0*b1 – a1*b0, (D为0时,表示两直线重合)
二者实际上就是连立方程组F0(x) = a0*x + b0*y + c0 = 0, F1(x) = a1*x + b1*y + c1 = 0的叉积应用
i j k
a0 b0 c0
a1 b1 c1
转自:http://blog.csdn.net/abcjennifer/article/details/7584628
直线的一般方程为F(x) = ax + by + c = 0。既然我们已经知道直线的两个点,假设为(x0,y0), (x1, y1),那么可以得到a = y0 – y1, b = x1 – x0,
c = x0y1 – x1y0。
因此我们可以将两条直线分别表示为
F0(x) = a0*x + b0*y + c0 = 0, F1(x) = a1*x + b1*y + c1 = 0
那么两条直线的交点应该满足
a0*x + b0*y +c0 = a1*x + b1*y + c1
由此可推出
x = (b0*c1 – b1*c0)/D
y = (a1*c0 – a0*c1)/D
D = a0*b1 – a1*b0, (D为0时,表示两直线重合)
二者实际上就是连立方程组F0(x) = a0*x + b0*y + c0 = 0, F1(x) = a1*x + b1*y + c1 = 0的叉积应用
i j k
a0 b0 c0
a1 b1 c1
#include"iostream" #include"stdio.h" #include"math.h" using namespace std; struct Point { double x; double y; }; struct Line { Point p1,p2; double a,b,c; }; void GetLinePara(Line *l) { l->a=l->p1.y-l->p2.y; l->b=l->p2.x-l->p1.x; l->c=l->p1.x*l->p2.y-l->p2.x*l->p1.y; } Point GetCrossPoint(Line *l1,Line *l2) { GetLinePara(l1); GetLinePara(l2); double D=l1->a*l2->b-l2->a*l1->b; Point p; p.x=(l1->b*l2->c-l2->b*l1->c)/D; p.y=(l1->c*l2->a-l2->c*l1->a)/D; return p; } int main() { Line l1,l2; while(true) { scanf("%lf%lf%lf%lf",&l1.p1.x,&l1.p1.y,&l1.p2.x,&l1.p2.y); scanf("%lf%lf%lf%lf",&l2.p1.x,&l2.p1.y,&l2.p2.x,&l2.p2.y); Point Pc=GetCrossPoint(&l1,&l2); printf("Cross point:%lf %lf\n",Pc.x,Pc.y); } return 0; }
转自:http://blog.csdn.net/abcjennifer/article/details/7584628
相关文章推荐
- POJ 1269 Intersecting Lines 叉积(求直线交点)
- (计算几何step8.1.2.2)POJ 1269 Intersecting Lines(使用叉积来计算两条直线的交点)
- poj 1408 Fishnet(计算几何 叉积求面积 求两直线交点 暴力)
- 算法之美——求两直线交点(三维叉积)——求四边形面积(二维叉积)
- poj1039Pipe(直线交点、叉积)
- 两条直线的交点(叉积)
- 求直线交点 叉积
- POJ 1408 Fishnet(几何--叉积求面积 + 求直线的交点坐标)
- 求直线交点 叉积
- 叉积--求两条直线(线段)的交点
- 算法之美——求两直线交点(三维叉积)——求四边形面积(二维叉积)
- hdu1466 计算直线的交点数(找规律+数学)
- joj 1131: Intersection (判断直线与矩形是否有交点) .
- hdu----(1466)计算直线的交点数(dp)
- poj1269 Intersecting Lines(计算几何--两条直线的交点)
- hdoj 1466 计算直线的交点数 【经典DP】
- 判断直线与线段是否相交,相交则输出交点x轴坐标
- poj1269Intersecting Lines【直线相交平行共线的判断+求交点】
- HDU 1466 计算直线的交点数(dp)
- 计算两条直线的交点