点和线段、线段和线段的关系
来源:互联网 发布:网络兼职执业药师 编辑:程序博客网 时间:2024/04/28 03:51
这篇文章还不错 : http://blog.csdn.net/william001zs/article/details/6213485
1、Onseg() 判断点是否在线段上。
2、Dis() 求点到线段的距离。
3、Meet() 判断两条线段是否相交。
#include <math.h>#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;#define N 105const double eps = 1e-6;const double Pi = acos(-1.0);struct Point{ double x,y;};struct Seg{ Point l1,l2;};int sgn(double x){ return x<-eps ? -1 : (x>eps);}double Cross(const Point& p1,const Point& p2,const Point& p3,const Point& p4){ return (p2.x-p1.x)*(p4.y-p3.y) - (p2.y-p1.y)*(p4.x-p3.x);}double Dot(const Point& p1,const Point& p2,const Point& p3,const Point& p4){ return (p2.x-p1.x)*(p4.x-p3.x) + (p2.y-p1.y)*(p4.y-p3.y);}double Area(const Point& p1,const Point& p2,const Point& p3){ return Cross(p1,p2,p1,p3);}double Dis(const Point& p1,const Point& p2){ return sqrt( 1.0*(p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y) );}double Dis(const Point& p,const Point& l1,const Point& l2){ return fabs(Area(p,l1,l2)) / Dis(l1,l2);}bool InRec(const Point& p,const Point& l1,const Point& l2){ return p.x >= min(l1.x,l2.x) && p.x <= max(l1.x,l2.x) && p.y >= min(l1.y,l2.y) && p.y <= max(l1.y,l2.y);}bool OnLine(const Point& p,const Point& p1,const Point& p2){ return sgn(Cross(p,p1,p,p2)) == 0;}bool OnSeg(const Point& p,const Point& l1,const Point& l2){ return OnLine(p,l1,l2) && InRec(p,l1,l2);}bool Meet(const Point& p1,const Point& p2,const Point& p3,const Point& p4){ return max(min(p1.x,p2.x),min(p3.x,p4.x)) <= min(max(p1.x,p2.x),max(p3.x,p4.x)) && max(min(p1.y,p2.y),min(p3.y,p4.y)) <= min(max(p1.y,p2.y),max(p3.y,p4.y)) && sgn(Cross(p3,p2,p3,p4) * Cross(p3,p4,p3,p1)) >= 0 && sgn(Cross(p1,p4,p1,p2) * Cross(p1,p2,p1,p3)) >= 0;}
- 点和线段、线段和线段的关系
- 点,平面和线段关系
- POJ 2318 TOYS 判断点和线段的关系
- 线段树点和
- 算法提高 线段和点
- 点与线段的位置关系-算法
- Poj2318使用叉积判断点和线段的位置关系
- POJ 2398 Toy Storage(计算几何,叉积判断点和线段的关系)
- POJ 3304 Segments 【计算几何】【直线和线段的关系】
- 蓝桥网 算法提高 线段和点
- 线段树 点更新和段更新
- 蓝桥杯 算法提高 线段和点
- 线段树 点更新 区间和 模板
- opengl学习笔记(三)-点和线段的绘制
- POJ 2318 || POJ 2398判断点和线段的位置
- 点到线段直线的距离, 直线与直线的关系 直线与线段的关系
- 【ZOJ1610】【线段树】【建模】【注意端点和线段的区别】
- 线段
- poj 3422 Kaka's Matrix Travels
- 八个基本DOS命令
- SATA、IDE和SCSI介绍
- WINDOWS下VIM配置
- 关于青春
- 点和线段、线段和线段的关系
- java 中 Date类型数据与String相互转化
- net api
- init 0,1,2,3,4,5,6
- THE PAST, PRESENT & FUTURE OF LOCAL STORAGE FOR WEB APPLICATIONS
- 七夕从期待变成陌生
- C语言之文件读写——fscanf(),fprintf()详解
- Android 源码编译
- C#中Abstract和Virtual