算法--计算几何.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法--计算几何

第5章 计算几何 5.1 线段的性质 在本节中,将探索以下问题。 (1)给定两条有向线段 和 , 是否绕它们的公共端点p0从 顺时针方向旋转而得? (2)给定线段 和 ,如果先沿 行进再沿 行进,需要在点p2处左转弯吗? (3)线段 和 相交吗? 叉积及其应用 1.叉积 两个向量p1和p2,叉积是下列矩阵的行列式: 定理5-1 假定向量p1 和 p2所张角介于0~?之间,则 (1)若p1 × p2为负当且仅当p1是从p2反时针方向旋转而得。 (2)若p1 × p2为正当且仅当p1是从p2绕原点(0,0)顺时针方向旋转而得。 (3)若p1 × p2为零,则产生边界条件,此时,两个向量共线,或方向一致或方向相反。 2.判断相继两直线段左转或右转 使用叉积判断相继线段 , 在p1处的转向。检测有向线段 是从 顺时针还是逆时针旋转而得。(a)若是逆时针,则在该点处左转。(b)若是顺时针,则为右转。 顺时针 逆时针 3.判断两条线段是否相交 两条线段相交当且仅当下列两个条件至少发生一个: (1)每一条线段跨越包含另一条线段的直线。 (2)一条线段的一个端点位于另一条线段上(此条件来自上述的边界情形)。 (a)线段 和 相互跨越对方所在直线。由于 跨越包含 的直线,叉积(p3 - p1) × (p2 - p1)和(p4 - p1) × (p2 - p1)的符号相反。由于 跨越包含 的直线,叉积(p1 - p3) × (p4 - p3) 和 (p2 - p3) × (p4 - p3)的符号相反。(b)线段 跨越包含 的直线,但 并不跨越包含 的直线。叉积(p1 - p3) × (p4 - p3)和(p2 - p3) × (p4 - p3)的符号相同。(c)点p3与p1和p2共线且介于两者之间。(d)点p3与 共线,但它并不介于p1和p2之间。两条线段不相交。 SEGMENTS-INTERSECT(p1, p2, p3, p4)?检测线段 与 是否相交 1 d1 ← DIRECTION(p3, p4, p1) 2 d2 ← DIRECTION(p3, p4, p2) 3 d3 ← DIRECTION(p1, p2, p3) 4 d4 ← DIRECTION(p1, p2, p4) 5 if ((d1*d2 0) and (d3*d4 0)) 6 then return TRUE 7 elseif d1 = 0 and IN-BOX(p3, p4, p1) 8 then return TRUE 9 elseif d2 = 0 and IN-BOX(p3, p4, p2) 10 then return TRUE 11 elseif d3 = 0 and IN-BOX(p1, p2, p3) 12 then return TRUE 13 elseif d4 = 0 and IN-BOX(p1, p2, p4) 14 then return TRUE 15 else return FALSE DIRECTION(pi, pj, pk)?计算 到 的转向 1 return (pk - pi) × (pj - pi) IN-BOX(pi, pj, pk) ?检测点pk是否处于以 为对角线的矩形内 1 if min(xi, xj) ? xk ? max(xi, xj) and min(yi, yj) ? yk ? max(yi, yj) 2 then return TRUE 3 else return FALSE 5.2 判断是否存在线段相交 1.线段排序 考虑两条线段s1和s2。如果在横坐标x处的垂直扫描线与两者均相交,则我们说此两线段在x处可比。若s1、s2在x处可比,且s1与扫描线的交点高于s2与扫描线的交点,则称在x处s1在s2之上,记为s1x s2。 (a)我们有a r c, a t b, b t c, a t c, 以及 b u c。线段d与其他线段不可比。(b)当线段e和f相交时,它们的序是颠倒的:我们有e v f和f w e。任何通过阴影区域的扫描线(如z)总使得e和f在全序中是紧挨着的。 2.移动扫描线 扫描算法通常处理两个数据集合: 扫描线状态。给出与扫描线相交的对象间的关系。 事件点进度表。 是一组按从左向右顺序横坐标序列, 定义了扫描线的暂停位

文档评论(0)

dajuhyy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档