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 不相交: 不满足重合的情况下叉积为 ...
随机推荐
- Block深入浅出
研究工具 clang 为了研究编译器的实现原理,我们需要使用 clang 命令.clang 命令可以将 Objetive-C 的源码改写成 C / C++ 语言的,借此可以研究 block 中各个特性 ...
- Cocos2d-x如何控制动作速度
基本动作和组合动作实现了针对精灵的各种运动和动画效果的改变.但这样的改变速度匀速的.线性的.通过ActionEase及其的派生类和Speed 类我们可以使精灵以非匀速或非线性速度运动,这样看起了效果更 ...
- MVC 生成PDf表格并插入图片
最近做的项目中有一个功能,将最终的个人信息生成PDF表格,并插入图片.对于没接触过的程序员来说回一片茫然,网上有多种生成PDf的方法,我给大家介绍一下我认为比较简单,好操作的一种. iTextShar ...
- MySQL数据库的登陆
MySQL数据库的登陆 MySQL是一种C/S结构. C/S(Client/Server)客户端/服务器 MySQL的客户端: 1.cmd客户端 2.可视化图形界面 3.php代码 登陆: MySQL ...
- Windows系统 环境变量
用户变量与系统变量 用户变量只对当前用户有效,而系统变量对所有用户有效.在检索命令时,系统变量会排在用户变量的前面.也就是说,如果两个地方都包含同一个命令,则优先执行系统变量指示路径下的命令. set ...
- 隐藏内容_网络推广_seo中级视频教程详解
课程背景:SEO(Search Engine Optimization),汉译为搜索引擎优化.搜索引擎优化是一种利用搜索引擎的搜索规则来提高目的网站在有关搜索引擎内的排名的方式.SEO目的理解是:为网 ...
- [转]Nuget挂了的解决方法
今天用Nuget下一个程序包时,发现Nuget挂了:未能解析此远程名称:'nuget.org'.第一反应就是方校长抖威风了,挂个代理上 http://nuget.org 试了下,果然好好的. 用命令n ...
- 条形码Code128源代码
public class Code128 { private DataTable m_Code128 = new DataTable(); ; /// <summary> /// 高度 / ...
- 窗体位置设置StartPosition属性
有如下选项,分别含义如下: CenterParent 窗体在其父窗体中居中. CenterScreen 窗体在当前 ...
- ASP.NET 学习笔记(一)ASP.NET 概览
ASP.NET 是一个使用 HTML.CSS.JavaScript 和服务器脚本创建网页和网站的开发框架. ASP.NET 支持三种不同的开发模式:Web Pages(Web 页面).MVC(Mode ...