POJ 1269 Intersecting Lines(几何)
题意 : 给你两条线段的起点和终点,一共四个点,让你求交点坐标,如果这四个点是共线的,输出“LINE”,如果是平行的就输出“NONE”。
思路 : 照着ZN留下的模板果然好用,直接套上模板了事儿,不过在判断是否共线的时候,其实还有另一种方法,直接将平行和共线一起判断了,我是判断三个点三个点的判断是否是共线。
//
#include <stdio.h>
#include <string.h>
#include <iostream> using namespace std ; #define eps 1e-8
#define zero(x) (((x)>0?(x):-(x))<eps)
typedef struct
{
double x,y ;
} point ;
typedef struct
{
point a,b ;
} line ; //计算cross product (P1-P0)x(P2-P0)
double xmult(double x1,double y1,double x2,double y2,double x0,double y0)
{
return (x1-x0)*(y2-y0)-(x2-x0)*(y1-y0);
} //判三点共线
int dots_inline(double x1,double y1,double x2,double y2,double x3,double y3)
{
return zero(xmult(x1,y1,x2,y2,x3,y3));
} //线段交点请另外判线段相交(同时还是要判断是否平行!)
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 parallel(point u1,point u2,point v1,point v2)
{
return zero((u1.x-u2.x)*(v1.y-v2.y)-(v1.x-v2.x)*(u1.y-u2.y));
} int main()
{
int n ;
scanf("%d",&n) ;
point p1,q1,p2,q2 ;
printf("INTERSECTING LINES OUTPUT\n") ;
for(int i = ; i < n ; i++)
{
scanf("%lf %lf %lf %lf",&p1.x,&p1.y,&p2.x,&p2.y) ;
scanf("%lf %lf %lf %lf",&q1.x,&q1.y,&q2.x,&q2.y) ;
if(dots_inline(p1.x,p1.y,p2.x,p2.y,q1.x,q1.y)&&dots_inline(p1.x,p1.y,p2.x,p2.y,q2.x,q2.y))
printf("LINE\n") ;
else if(parallel(p1,p2,q1,q2))
printf("NONE\n") ;
else
{
point ret = intersection(p1,p2,q1,q2) ;
printf("POINT %.2lf %.2lf\n",ret.x,ret.y) ;
}
}
printf("END OF OUTPUT\n") ;
return ;
}
还有一点要注意,因为涉及到lf和f的问题,所以要看是交C++还是G++ 。
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
题目传送门 题意:判断两条直线的位置关系,共线或平行或相交 分析:先判断平行还是共线,最后就是相交.平行用叉积判断向量,共线的话也用叉积判断点,相交求交点 /********************* ...
- poj 1269 Intersecting Lines
题目链接:http://poj.org/problem?id=1269 题目大意:给出四个点的坐标x1,y1,x2,y2,x3,y3,x4,y4,前两个形成一条直线,后两个坐标形成一条直线.然后问你是 ...
- 判断两条直线的位置关系 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 --计算几何
题意: 二维平面,给两条线段,判断形成的直线是否重合,或是相交于一点,或是不相交. 解法: 简单几何. 重合: 叉积为0,且一条线段的一个端点到另一条直线的距离为0 不相交: 不满足重合的情况下叉积为 ...
随机推荐
- 【转】MySQL的安装与配置
一.MySQL的安装 1.在线安装: 命令:sudo apt-get install mysql-server 在安装的过程中将提示为“root”用户设置密码,输入自己的密码即可,安装按成后已自动配置 ...
- 创建Mysql 序列
create table sequence( name ) not null primary key, current_value , increment , max_value BIGINT, -- ...
- Objective-C 【单个对象内存管理(野指针&内存泄露)】
------------------------------------------- 单个对象内存管理 (1)野指针 ①定义了一个指针变量,但是并没有赋初值,它随机指向一个东西 ②某指针变量指向的内 ...
- 在button中加入一个view图片
#import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...
- CSS的兼容性解决方案
什么是兼容性? 同一个网页,在不同浏览器下(IE6.IE7.IE8)下的显示效果不一致,这就是说"CSS不兼容". IETESTer可以同时测试IE5.5.IE6.IE7.IE8这 ...
- jbpm3.2中jbpm.jpdl.mysql.sql文件运行报错的问题
这是一个很久之前遇到的问题,就是用从官网下下载的jbpm组件,它的jbpm.jpdl.mysql.sql不能正常运行.其原因是该sql文件中有一句语句有错误.现在附上正确的jbpm.jpdl.mysq ...
- flex_播放视频_本地_与_FMS端
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- 【转】TCP的SEQ和ACK的生成
TCP序列号和确认号详解 完整的PDF下载: 在网络分析中,读懂TCP序列号和确认号在的变化趋势,可以帮助我们学习TCP协议以及排查通讯故障,如通过查看序列号和确认号可以确定数据传输是否乱序.但我在查 ...
- 解决Scala异常处理java.lang.OutOfMemoryError: Java heap space error
需求:百万.千万.4千万级日志对设备进行除重环境:设备内存64G,scala单机版运行shell文件日志:20G 48000000.log4.0G 10000000.log396M 1000000.l ...
- 转载 C# BindingSource
1.引言 BindingSource组件是数据源和控件间的一座桥,同时提供了大量的API和Event供我们使用.使用这些API我们可以将Code与各种具体类型数据源进行解耦:使用这些Event我们可以 ...