Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:昏!为了特判斜率无穷大的情况,写了我60+code,求代码量小的算法(本人用的是直线方程的方法)

Posted by ka200812 at 2011-11-19 13:46:56 on Problem 1269
In Reply To:昏!为了特判斜率无穷大的情况,写了我60+code,求代码量小的算法(本人用的是直线方程的方法) Posted by:305636397 at 2011-08-03 14:31:49
当不平行的时候分类讨论一下就是了,
首先已经不平行了,所以最多只有一个直线斜率无穷大
void calculate(Line A,Line B)
{
	double a,b,k,a1,b1,k1;
	double x,y;
	if(fabs(A.x2-A.x1)<exp) //A直线斜率无穷大
	{
		x=A.x1;
		k1=(B.y2-B.y1)/(B.x2-B.x1);
		a1=B.x1;b1=B.y1;
		y=k1*(x-a1)+b1;
	}
	else if(fabs(B.x2-B.x1)<exp) //B直线斜率无穷大
	{
		x=B.x1;
		k=(A.y2-A.y1)/(A.x2-A.x1);
		a=A.x1;b=A.y1;
		y=k*(x-a)+b;
	}
	else
	{
		k=(A.y2-A.y1)/(A.x2-A.x1);
		a=A.x1;b=A.y1;
		k1=(B.y2-B.y1)/(B.x2-B.x1);
		a1=B.x1;b1=B.y1;
		x=(b1-b+(a*k-a1*k1))/(k-k1);
		y=k*(x-a)+b;
	}
	printf("POINT %0.2lf %0.2lf\n",x,y);
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator