码迷,mamicode.com
首页 > 其他好文 > 详细

求直线交点

时间:2015-05-06 17:49:25      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:

参考:http://blog.csdn.net/abcjennifer/article/details/7584628#reply
直线的一般方程为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
利用线性代数求解连立方程组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
由此可推出
x = (b0*c1 – b1*c0)/D
y = (a1*c0 – a0*c1)/D
D = a0*b1 – a1*b0, (D为0时,表示两直线平行)

class FPoint2D {
	public double x;
	public double y;

	public FPoint2D() {

	}

	public FPoint2D(double x1, double y1) {
		x = x1;
		y = y1;
	}
}

int Line_Intersect(FPoint2D p1,FPoint2D p2,FPoint2D p3,FPoint2D p4,FPoint2D p5)
	{
		//FPoint2D ptRe=new FPoint2D();
		
		double a0=p1.y-p2.y;
		double b0=p2.x-p1.x;
		double c0=p1.x*p2.y-p2.x*p1.y;
		
		double a1=p3.y-p4.y;
		double b1=p4.x-p3.x;
		double c1=p3.x*p4.y-p4.x*p3.y;
		
		double D=a0*b1-a1*b0;
		
		//D==0 直线平行
		if(D==0)
			return -1;
		
		p5.x=(b0*c1-b1*c0)/D;
		p5.y=(a1*c0-a0*c1)/D;
		
	return 1;
		
	}




求直线交点

标签:

原文地址:http://blog.csdn.net/kupepoem/article/details/45537255

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!