| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:昏!为了特判斜率无穷大的情况,写了我60+code,求代码量小的算法(本人用的是直线方程的方法)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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator