C语言平面几何12-向量方法判断线段与矩形是否有交集
来源:互联网 发布:淘宝可以办假的毕业证 编辑:程序博客网 时间:2024/05/17 16:53
向量方法判断线段与矩形是否有交集,通过向量叉乘的结果正负来判断,当矩形在线段的某一侧时,叉乘的结果要么全正,要么全负,此时无交集。
判断有2步:1)快速排斥,2)叉乘。
int RSIntersection(Rectangle r, Point A, Point B){MBR m1 = (MBR)r;MBR m2 = MbrConstruct(A, B);// 快速排斥 if (MbrOverlap(m1, m2) == 0)return 0;// 判断rectangle的四个点是否在向量的某一侧Vector v = VectorConstruct(A, B);Vector v1, v2, v3, v4;v1.x = r.xmin - A.x;v1.y = r.ymin - A.y;v2.x = r.xmax - A.x;v2.y = r.ymin - A.y;v3.x = r.xmax - A.x;v3.y = r.ymax - A.y;v4.x = r.xmin - A.x;v4.y = r.ymax - A.y;double t1, t2, t3, t4;t1 = CrossProduct(v1, v);t2 = CrossProduct(v2, v);t3 = CrossProduct(v3, v);t4 = CrossProduct(v4, v);if (t1>0 && t2>0 && t3>0 && t4>0)return 0;if (t1<0 && t2<0 && t3<0 && t4<0)return 0;return 1;}
函数MbrConstruct, MbrOverlap, VectorConstruct, CrossProduct见C语言平面几何4-两线段是否相交
判断线段与矩形是否有交集的另外一种方法(降维方法),见 C语言平面几何6-判断线段是否与矩形范围有交集
- C语言平面几何12-向量方法判断线段与矩形是否有交集
- C语言平面几何12-向量方法判断线段与矩形是否有交集
- C语言平面几何6-判断线段是否与矩形范围有交集
- C语言平面几何6-判断线段是否与矩形范围有交集
- C语言-判断线段是否与矩形范围有交集
- 判断两个矩形是否有交集
- 判断两个矩形是否有交集
- vc 如何判断2个矩形是否有交集
- vc 如何判断2个矩形是否有交集
- C语言平面几何4-两线段是否相交
- C语言平面几何4-两线段是否相交
- C语言平面几何4-两线段是否相交
- poj1410判断线段与矩形是否相交(判断线段相交)
- 中点分割法 线段与矩形关系的判断 向量
- C语言 判断两个矩形是否相交
- 判断两个矩形是否存在交集
- 如何判断两个矩形是否存在交集
- C语言平面几何15-线段的垂直平分线
- Symbian PKG详解
- 错误:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://localhost/
- qt 动态库的释放
- java邮件发送和短信发送(一)
- UML在集成和交付阶段的应用
- C语言平面几何12-向量方法判断线段与矩形是否有交集
- 编辑本段陈安之经典语录
- Spring配置文件中配置数据源(dataSource)
- windows内核情景分析学习笔记4
- 多行文本框如何限制输入字数方法
- Android 中的长度单位详解 dp、sp、px、in、pt、mm
- 新的Symbian OS 9 可执行文件格式(E32Image)
- 构造函数和变量初始化顺序
- 团购网站 购物js