计算几何——poj1410,线段不规范交
直接用kuangbin的板子,能判不规范,规范和不交
另外线段在矩形内也可以,判断方式是比较线段的端点和矩形四个角
#include <cstdio> #include <cmath> #include <algorithm> #include <iostream>using namespace std; const double eps = 1e-18; int sgn(double x){if (fabs(x)<eps) return 0; return (x>0)?1:-1;} struct Point{double x,y;Point(int _x = 0,int _y = 0):x(_x),y(_y){}bool operator == (Point b)const{return sgn(x - b.x) == 0 && sgn(y - b.y) == 0;} Point operator - (const Point &b)const{return Point(x - b.x,y - b.y);}double operator ^(const Point &b)const{return x*b.y - y*b.x;}double operator *(const Point &b)const{return x*b.x + y*b.y;}Point operator +(const Point &b)const{return Point(x+b.x,y+b.y);}Point operator *(const double &k)const{return Point(x*k,y*k);}Point operator /(const double &k)const{return Point(x/k,y/k);} };struct Line{Point s,e;int segcrossseg(Line v){int d1 = sgn((e - s)^(v.s - s));int d2 = sgn((e - s)^(v.e - s));int d3 = sgn((v.e - v.s)^(s - v.s));int d4 = sgn((v.e - v.s)^(e - v.s));if( (d1^d2)== - 2 && (d3^d4)== - 2 )return 2;return (d1==0 && sgn((v.s - s)*(v.s - e))<=0) ||(d2==0 && sgn((v.e - s)*(v.e - e))<=0) ||(d3==0 && sgn((s - v.s)*(s - v.e))<=0) ||(d4==0 && sgn((e - v.s)*(e - v.e))<=0);} };int n; Line a,b,c,d,line; double x1,Y1,x2,y2,x3,y3,x4,y4; int main(){scanf("%d",&n);while(n--){scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&Y1,&x2,&y2,&x3,&y3,&x4,&y4);line.s = Point{x1,Y1}; line.e = Point{x2,y2};a.s = Point{x3,y3}; a.e = Point{x3,y4};b.s = Point{x3,y4}; b.e = Point{x4,y4};c.s = Point{x4,y4}; c.e = Point{x4,y3};d.s = Point{x4,y3}; d.e = Point{x3,y3};if (line.segcrossseg(a) || line.segcrossseg(b)|| line.segcrossseg(c) || line.segcrossseg(d)|| (sgn(fabs(x1-x3)+fabs(x1-x4)-fabs(x3-x4))==0 && sgn(fabs(Y1-y3)+fabs(Y1-y4)-fabs(y3-y4))==0)) puts("T");else puts("F");} }
转载于:https://www.cnblogs.com/zsben991126/p/10924709.html
计算几何——poj1410,线段不规范交相关推荐
- 计算几何 - XOJ 1171 线段求交
问题 Description 线段求交即给定一组线段求出这些线段的相交情况,它是计算几何的基础问题之一,有着广泛的应用. Input第一行为一个正整数n表示线段的个数(n<=10000)第二行到 ...
- 计算几何2:扫描线线段求交算法
相比于上一篇中介绍的求凸包算法,本次介绍的扫描线线段求交算法的实现难度明显更高,实际上最终本人也未能完美的实现该算法,下面给出的版本经测试是存在一些问题的. 首先介绍一下扫描线算法的基本原理,具体内容 ...
- 线段求交算法对比研究
线段求交算法对比研究 -----by wangsh 一.介绍 线段求交算法在计算几何,地理信息系统算法等相关应用中占有重要的位置,本文简单给出算法说明. Bentley & Ottmann于1 ...
- C++line segment intersection线段求交(交点)(附完整源码)
C++line segment intersection线段求交的实现 C++line segment intersection线段求交实现的完整源码(定义,实现,main函数测试) C++line ...
- java判断线段是否相交函数_计算几何-判断线段是否相交
计算几何-判断线段相交 判断两线段是否相交: 快速排斥 跨立实验(这两个词也是我看博客的时候看到的,觉得挺高大上的就拿过来用了,哈哈哈) 1. 快速排斥:就是初步的判断一下,两条线段是不是相交,以两条 ...
- (线段判交的一些注意。。。)nyoj 1016-德莱联盟
1016-德莱联盟 内存限制:64MB 时间限制:1000ms 特判: No 通过数:9 提交数:9 难度:1 题目描述: 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我 ...
- N条线段求交的扫描线算法
转载自:http://johnhany.net/2013/11/sweep-algorithm-for-segments-intersection/ N条线段求交的扫描线算法 在对图进行计算时,很常用 ...
- 线段求交应用之Liang-barsky裁剪算法
欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击. 线段剪裁作用 所谓线段剪裁,就是在二维平面上有一堆线段,和一个矩形窗口.求出现在窗口里线段部分是哪些. 上图中绿色为线段,红色为 ...
- AK F.*ing leetcode 流浪计划之线段求交
欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击. 本期话题:2条线段求交点 我有两种线段求交方法. 这两种方法在图形中窗口剪裁中应用. 分别是 Cohen-Suther land ...
- 计算几何--简单多边形与圆面积交
求解二维空间内一个简单多边形和一个长度为R的圆公共面积. 因为任意简单多边形都可以划分成若干三角形,我们可以把这个简单多边形划分成三角形后,求三角形与圆的面积交,然后在把所有三角形的解合并. 由于可能 ...
最新文章
- Linux 防火墙命令的操作命令CentOS
- insight切换窗口 source_Source Insight函数调用关系显示设置(示例代码)
- SAP在大中华区推出SAP数字化转型教育网络平台
- Spark SQL之DataSet
- 《C语言及程序设计》实践项目——三种循环语句
- MemSQL 1.8 发布,号称最快的关系数据库
- Linux 修复严重的内核代码执行漏洞
- as4配置本地gradle_Gradle和Maven的区别
- ubuntu1804+CUDA10+cudnn7.4.2+TensorFlow2+Pytorch1.3 9700K+双路RTX 2080TI
- 2020年信工所考研经验分享
- maven atuo import
- 计算机中cpu是指什么意思,CPU是什么?CPU又是什么意思?
- 多边形偏移算法c语言,多边形的偏移填充算法
- html中账号绑定怎么做,绑定账号.html
- html css 模仿小米官网搜索框
- 01excel空白一键填充
- h3cr4900g3安装系统_H3C服务器安装Windows操作系统
- [Linux]termios
- 将canvas转化为图片
- 接口测试工具soapUI(一)
热门文章
- css盒子模型实验报告总结_前端知识点总结——盒子模型
- python 实现简单画板_Python图像处理之简单画板实现方法示例
- NYOJ 42一笔画问题||欧拉图
- php 的sentmail支持ssl吗_php 的swoole 和websocket 连接wss
- python while快速写法_从零开始学Python,带你手把手实战之一
- 翻译: 2.6 概率论 深入神经网络 pytorch
- 阿里云云计算 30 AS的配置
- 翻译:谁将在AI中赚钱?by Simon Greenman
- 极客大学架构师训练营 大数据架构、Spark、Storm、Spark Streaming、Flink、HiBench、Impala 第25课 听课总结
- 极客大学架构师训练营 组件设计原则 安全架构 防火墙ModSecurity 第21课 听课总结