poj 1269 Intersecting Lines
题目链接:http://poj.org/problem?id=1269
题目大意:给出四个点的坐标x1,y1,x2,y2,x3,y3,x4,y4,前两个形成一条直线,后两个坐标形成一条直线。然后问你是否平行,重叠或者相交,如果相交,求出交点坐标。
算法:二维几何直线相交+叉积
解法:先用叉积判断是否相交,如果相交的话,设交点坐标为p0(x0,y0)。向量(p0p1)和(p0p2)的叉积为0,有(x1-x0)*(y2-y0)-(y1-y0)*(x2-x0)=0;同理,求出p0和p3p4直线的式子。然后联立求解x0,y0。平行或重叠的情况就自己YY了。
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<cstdlib>
- #include<cmath>
- #include<algorithm>
- #define inf 0x7fffffff
- #define exp 1e-10
- #define PI 3.141592654
- using namespace std;
- struct Point
- {
- double x,y;
- Point(double x=,double y=):x(x),y() {}
- };
- typedef Point Vector;
- double cross(Vector A,Vector B)
- {
- return A.x*B.y-A.y*B.x;
- }
- Point GetLineIntersection(Point P,Vector v,Point Q,Vector w)
- {
- Point uu;
- Vector u=Point(P.x-Q.x , P.y-Q.y);
- double t=cross(w,u)/cross(v,w);
- uu.x=P.x+v.x*t;
- uu.y=P.y+v.y*t;
- return uu;
- }//调用训练指南上这个函数怎么错了,我写错了吗
- int main()
- {
- int n;
- double x1,y1,x2,y2,x3,y3,x4,y4;
- //cin>>n;
- while (cin>>n)
- {
- printf("INTERSECTING LINES OUTPUT\n");
- while (n--) {
- cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;
- Point P,Q;
- P.x=x1 ;P.y=y1 ;
- Q.x=x3 ;Q.y=y3 ;
- Vector v,w;
- v.x=x2-x1 ;v.y=y2-y1;
- w.x=x4-x3 ;w.y=y4-y3;
- if (cross(v,w)!=)
- {
- //Vector vv=GetLineIntersection(P,v,Q,w);
- double a1,b1,c1;
- double a2,b2,c2;
- a1=y1-y2 ;b1=x2-x1 ;c1=x1*y2-y1*x2;
- a2=y3-y4 ;b2=x4-x3 ;c2=x3*y4-y3*x4;
- double x0=(b1*c2-b2*c1)/(b2*a1-b1*a2);
- double y0=(a2*c1-a1*c2)/(a1*b2-a2*b1);
- printf("POINT %.2f %.2f\n",x0,y0);
- }
- else
- {
- if (fabs(v.x)<=exp && fabs(w.x)<=exp)
- {
- if (fabs(x1-x3)<=exp)
- printf("LINE\n");
- else printf("NONE\n");
- }
- else if (fabs(v.y)<=exp && fabs(w.y)<=exp)
- {
- if (fabs(y1-y3)<=exp)
- printf("LINE\n");
- else printf("NONE\n");
- }
- else
- {
- if (fabs((y3-w.y/w.x*x3)-(y1-w.y/w.x*x1))<=exp)
- printf("LINE\n");
- else printf("NONE\n");
- }
- }
- }
- printf("END OF OUTPUT\n");
- }
- return ;
- }
poj 1269 Intersecting Lines的更多相关文章
- POJ 1269 Intersecting Lines(判断两直线位置关系)
题目传送门:POJ 1269 Intersecting Lines Description We all know that a pair of distinct points on a plane ...
- 判断两条直线的位置关系 POJ 1269 Intersecting Lines
两条直线可能有三种关系:1.共线 2.平行(不包括共线) 3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, ...
- ●POJ 1269 Intersecting Lines
题链: http://poj.org/problem?id=1269 题解: 计算几何,直线交点 模板题,试了一下直线的向量参数方程求交点的方法. (方法详见<算法竞赛入门经典——训练指南> ...
- POJ 1269 - Intersecting Lines - [平面几何模板题]
题目链接:http://poj.org/problem?id=1269 Time Limit: 1000MS Memory Limit: 10000K Description We all know ...
- poj 1269 Intersecting Lines——叉积求直线交点坐标
题目:http://poj.org/problem?id=1269 相关知识: 叉积求面积:https://www.cnblogs.com/xiexinxinlove/p/3708147.html什么 ...
- POJ 1269 Intersecting Lines (判断直线位置关系)
题目链接:POJ 1269 Problem Description We all know that a pair of distinct points on a plane defines a li ...
- POJ 1269 Intersecting Lines(线段相交,水题)
id=1269" rel="nofollow">Intersecting Lines 大意:给你两条直线的坐标,推断两条直线是否共线.平行.相交.若相交.求出交点. ...
- POJ 1269 Intersecting Lines --计算几何
题意: 二维平面,给两条线段,判断形成的直线是否重合,或是相交于一点,或是不相交. 解法: 简单几何. 重合: 叉积为0,且一条线段的一个端点到另一条直线的距离为0 不相交: 不满足重合的情况下叉积为 ...
- POJ 1269 Intersecting Lines【判断直线相交】
题意:给两条直线,判断相交,重合或者平行 思路:判断重合可以用叉积,平行用斜率,其他情况即为相交. 求交点: 这里也用到叉积的原理.假设交点为p0(x0,y0).则有: (p1-p0)X(p2-p0) ...
随机推荐
- Hive中典型的表内数据除重写法
insert overwrite table store select t.p_key,t.sort_word from ( select p_key, sort_word , row_number( ...
- Cassandra 数据模型 (基于CQL,解决胖列数量限制及灵活性问题)(1.1及以上版本)
文中主要交代Cassandra的编程模型及数据结构. 由于Cassandra版本数次更新,网上中文的资料已经有点过时,比较有代表性的比如ebuy那篇文章都已经过时了,于是自己找资料,结合官方博客写一篇 ...
- php生成随机字符串和验证码的类
网上有很多的php随机数与验证码的代码与文章,真正适用的没有几个. 索性自己搞一个吧. 开始本节的php教程 吧,以下代码的实现,主要做到可以很好区分一个get_code(),另一个create_ch ...
- Nginx Location配置语法介绍、优先级说明
nginx 语法规则:location [=|~|~*|^~|!~|!~*] /uri/ { … } location匹配的是$document_uri,$document_uri 会随 ...
- wing IDE破解方法
WingIDE是我接触到最好的一款Python编译器了.但其属于商业软件,注册需要一笔不小的费用.因此,这篇简短的文章主要介绍了破解WingIDE的方法.破解软件仅供学习或者教学使用,如果您是商业使用 ...
- opengl基础学习专题 (三) 多边形绘制的几种样式
题外话 聪明人之所以不会成功,是由于他们缺乏坚韧的毅力. ——艾萨克·牛顿(1643年1月4日—1727年3月31日)英国 也许可以理解为 想更深一步的时候,坚持,努力和聪明缺一不可. 挺直腰杆在此向 ...
- RAP开发入门-搭建RAP开发环境(一)
ps:补充 RAP (Remote Application Platform) 官网地址eclipse.org/rap 1.下载IDE http://www.eclipse.org/downloads ...
- CSS3中新出现的技术
CSS3中新出现的技术 CSS媒体查询 媒体查询 包含了一个媒体类型和至少一个使用如宽度.高度和颜色等媒体属性来限制样式表范围的表达式.CSS3加入的媒体查询使得无需修改内容便可以使样式应用于某些特定 ...
- hdu 1427 速算24点
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1427 速算24点 Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A( ...
- wget的下载与安装使用
wget的下载与安装:下载地址:ftp://ftp.cs.cuhk.edu.hk/pub/gnu/gnu/wget安装:先把wget下载到的tar文件解压,然后cd到wget目录下# ./config ...