首页 > 其他 > 详细

In Triangle Test / To Left Test

时间:2020-01-09 16:28:35      阅读:67      评论:0      收藏:0      [点我收藏+]

2020-01-09 14:51:29

如何高效的判断一个点是否是包含在一个三角形的内部是计算几何里的一个基础问题。

In Triangle Test问题也可以用来解决计算几何里的一个基础问题就是 凸包问题

问题描述

给出一个点s,判断其是否在一个三角形(p, q, r)内部。

问题求解

判断一个点是否在三角形内部等价于对于三条边分别做To left test的结果一致。

那么现在的问题就是如何高效和精确的实现To left test。

关于这个可以使用空间坐标系的海伦公式来求解。

              | p.x p.y 1 |

2 * S =   | q.x q.y 1 |

              | s.x s.y 1 |

并且这个公式是有向的,当三个点是逆时针排列的时候该行列式的返回结果是正数,当三个点是顺时针排列的时候行列式的返回结果是负数

bool to_left_test(int[] p, int[] q, int[] s) {
    return area2(p, q, s) > 0;
}

int area2(int[] p1, int[] p2, int[] p3) {
    return p1[0] * p2[1] + p1[1] * p3[0] + p2[0] * p3[1] -
        p2[1] * p3[0] - p1[1] * p2[0] - p1[0] * p3[1];
}

  

 

In Triangle Test / To Left Test

原文:https://www.cnblogs.com/hyserendipity/p/12171639.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!