博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zoj 1280 Intersecting Lines(两直线交点)
阅读量:7102 次
发布时间:2019-06-28

本文共 1699 字,大约阅读时间需要 5 分钟。

题意:n组数据,每组两条直线两端点坐标,判断线段平行、重合,相交;

思路:利用叉积跨立实验判断重合与平行,交点公式求交点;zoj过了,可是poj1269一样的题,poj上把%lf都改为%.f才能AC。

#include
#include
#include
#include
using namespace std;const double epsi=1e-10;inline int sign(const double &x){ if(x>epsi) return 1; if(x<-epsi) return -1; return 0;}struct point{ double x,y; point(double xx=0,double yy=0):x(xx),y(yy){} point operator -(const point &op2) const{ return point(x-op2.x,y-op2.y); } double operator ^(const point &op2) const{ return x*op2.y-y*op2.x; }};inline double sqr(const double &x){ return x*x;}inline double mul(const point &p0,const point &p1,const point &p2){ return (p1-p0)^(p2-p0);}inline double dis2(const point &p0,const point &p1){ return sqr(p0.x-p1.x)+sqr(p0.y-p1.y);}inline double dis(const point &p0,const point &p1){ return sqrt(dis2(p0,p1));}inline int cross(const point &p1,const point &p2,const point &p3,const point &p4,point &p){ double a1=mul(p1,p2,p3),a2=mul(p1,p2,p4); if(sign(a1)==0&&sign(a2)==0) return 2;//重叠 if(sign(a1-a2)==0) return 0; p.x=(a2*p3.x-a1*p4.x)/(a2-a1); p.y=(a2*p3.y-a1*p4.y)/(a2-a1); //利用公式计算交点 return 1;}point p1,p2,p3,p4,p;int main(){ int test=0; scanf("%d",&test); printf("INTERSECTING LINES OUTPUT\n"); while(test--){ scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&p1.x,&p1.y,&p2.x,&p2.y,&p3.x,&p3.y,&p4.x,&p4.y); int m=cross(p1,p2,p3,p4,p); if(m==0) printf("NONE\n"); else if(m==2) printf("LINE\n"); else printf("POINT %.2lf %.2lf\n",p.x,p.y); } printf("END OF OUTPUT\n"); return 0;}

 

转载于:https://www.cnblogs.com/dashuzhilin/p/4549904.html

你可能感兴趣的文章
A + B 问题
查看>>
How .Net-work drew sceptics(Translation)
查看>>
Map.Entry说明
查看>>
给自己一个交代--项目经理的总结
查看>>
排序算法 2 qsort 库函数,泛型函数
查看>>
acm 1170
查看>>
emmet教程
查看>>
20189317 《网络攻防技术》 第五周作业
查看>>
【HDOJ】1197 Specialized Four-Digit Numbers
查看>>
【HDOJ】前三百留念
查看>>
【HDOJ】2451 Simple Addition Expression
查看>>
the art of seo(chapter eight)
查看>>
接口、继承和泛型方法的使用
查看>>
C#入门篇6-10:字符串操作 DateTime操作
查看>>
Shared_ptr 相互引用问题
查看>>
Nginx 入门指南
查看>>
冒泡排序与选择排序
查看>>
[多人合作的项目] - 记项目开发的多人化
查看>>
CSS3教程:pointer-events属性值详解
查看>>
[Android Pro] 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能
查看>>