poj 1269
2014-08-06 15:01
239 查看
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct point
{
double x;
double y;//这里要用double
};
point Intersection(point u1,point u2,point v1,point v2)//求出交点坐标
{
point ret=u1;
double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x)) /((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));
ret.x+=(u2.x-u1.x)*t;
ret.y+=(u2.y-u1.y)*t;
return ret;
}
int main()
{
point k1,k2,k3,k4;
int t;
int q=1;
scanf("%d",&t);
while(t--)
{
scanf("%lf%lf",&k1.x,&k1.y);
scanf("%lf%lf",&k2.x,&k2.y);
scanf("%lf%lf",&k3.x,&k3.y);
scanf("%lf%lf",&k4.x,&k4.y);
if(q==1)
printf("INTERSECTING LINES OUTPUT\n");
double num1,num2;
if(k2.x-k1.x==0&&k4.x-k3.x==0)
{
if(k1.x==k3.x)//这里是x,不是y,这里WA了几遍
{
printf("LINE\n");//重合
}
else
{
printf("NONE\n");//平行
}
}
else if(k2.x-k1.x==0&&k4.x-k3.x!=0)
{
point ans=Intersection(k1,k2,k3,k4);
printf("POINT %.2lf %.2lf\n",ans.x,ans.y);
}
else if(k2.x-k1.x!=0&&k4.x-k3.x==0)
{
point ans=Intersection(k1,k2,k3,k4);
printf("POINT %.2lf %.2lf\n",ans.x,ans.y);
}
else if(k2.x-k1.x!=0&&k4.x-k3.x!=0)
{
num1=(k2.y-k1.y)/(k2.x-k1.x);
num2=(k4.y-k3.y)/(k4.x-k3.x);
if(num1==num2)
{
double b1=k1.y-num1*k1.x;
double b2=k3.y-num1*k3.x;
if(b1==b2)
//if(/*ans1.x>=-1000.0&&ans1.x<=1000.0&&ans1.y>=-1000.0&&ans1.y<1000.0*/)
{
printf("LINE\n");//重合
}
else
{
printf("NONE\n");//平行
// printf("~~~~~~~~~\n");
}
}
else
{
point ans=Intersection(k1,k2,k3,k4);
printf("POINT %.2lf %.2lf\n",ans.x,ans.y);
}
}
if(t==0)
printf("END OF OUTPUT\n");
q++;
}
}
#include<cstdio>
#include<cstring>
using namespace std;
struct point
{
double x;
double y;//这里要用double
};
point Intersection(point u1,point u2,point v1,point v2)//求出交点坐标
{
point ret=u1;
double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x)) /((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));
ret.x+=(u2.x-u1.x)*t;
ret.y+=(u2.y-u1.y)*t;
return ret;
}
int main()
{
point k1,k2,k3,k4;
int t;
int q=1;
scanf("%d",&t);
while(t--)
{
scanf("%lf%lf",&k1.x,&k1.y);
scanf("%lf%lf",&k2.x,&k2.y);
scanf("%lf%lf",&k3.x,&k3.y);
scanf("%lf%lf",&k4.x,&k4.y);
if(q==1)
printf("INTERSECTING LINES OUTPUT\n");
double num1,num2;
if(k2.x-k1.x==0&&k4.x-k3.x==0)
{
if(k1.x==k3.x)//这里是x,不是y,这里WA了几遍
{
printf("LINE\n");//重合
}
else
{
printf("NONE\n");//平行
}
}
else if(k2.x-k1.x==0&&k4.x-k3.x!=0)
{
point ans=Intersection(k1,k2,k3,k4);
printf("POINT %.2lf %.2lf\n",ans.x,ans.y);
}
else if(k2.x-k1.x!=0&&k4.x-k3.x==0)
{
point ans=Intersection(k1,k2,k3,k4);
printf("POINT %.2lf %.2lf\n",ans.x,ans.y);
}
else if(k2.x-k1.x!=0&&k4.x-k3.x!=0)
{
num1=(k2.y-k1.y)/(k2.x-k1.x);
num2=(k4.y-k3.y)/(k4.x-k3.x);
if(num1==num2)
{
double b1=k1.y-num1*k1.x;
double b2=k3.y-num1*k3.x;
if(b1==b2)
//if(/*ans1.x>=-1000.0&&ans1.x<=1000.0&&ans1.y>=-1000.0&&ans1.y<1000.0*/)
{
printf("LINE\n");//重合
}
else
{
printf("NONE\n");//平行
// printf("~~~~~~~~~\n");
}
}
else
{
point ans=Intersection(k1,k2,k3,k4);
printf("POINT %.2lf %.2lf\n",ans.x,ans.y);
}
}
if(t==0)
printf("END OF OUTPUT\n");
q++;
}
}
相关文章推荐
- poj 1269
- POJ1269(KB13-D 计算几何)
- poj 1269判断两条直线的位置关系 以及求交点
- poj 1269 Intersecting Lines[直线的关系]
- POJ 1269 Intersecting Lines(直线相交判断,求交点)
- POJ 1269 Intersecting Lines(直线相交的判断)
- POJ 1269 Intersecting Lines
- Poj 1269 Intersecting Lines_几何模板
- Intersecting Lines POJ - 1269
- [POJ1269]Intersecting Lines(计算几何)
- Poj 1269 Intersecting Lines (直线交点)
- poj 2229&wustoj 1269划分数(简单dp)
- POJ_1269_Intersecting_Lines_(计算几何基础)
- POJ 1269 Intersecting Lines
- POJ 1269 Intersecting Lines (两直线之间的位置关系)
- poj 1269
- poj 1269(求两线段交点)
- poj 1269 Intersecting Lines(计算几何)
- 计算两直线的交点 poj 1269 我的第一道几何题
- POJ 1269 Intersecting Lines(判断两条直线关系)