[toc]
# 二维计算几何
# 正弦定理
- 在三角形 ABC 内,若角 A,B,C 所对的边分别为 a,b,c, 则:
其中 R 为三角形 ABC 的外接圆半径
# 余弦定理
- 在三角形 ABC 中,若角 A,B,C 所对边分别为 a,b,c, 则有:
# 快速排斥实验与跨立实验 (两直线相交试验)
- 平行必不相交 (斜率)
- 是否有三点共线
- 其余的情况就需要用到快速排斥试验与跨立实验 (即上图)
- 先计算出两个线段的 AABB
- 如果两个 AABB 不相交,则线段必不相交 (但线段不相交,AABB 不一定不相交)
- 如果两个 AABB 相交,且 A,B 分布在线 CD 的两边,则认为线必然相交
# 判断一个点是否在任意多边形内部 (Point in Polygon)
# 光线投射算法 (Ray casting algorithm)
- 特判一些特殊情况
- 这个点离多边形太远了 (方法: AABB, 点不在 AABB 里,肯定不再多边形内)
- 点是否在边或顶点上
- 另外,以这个点引出一条射线,如果射线与多边形交点是奇数个,则在多边形内部,否则在多边形外部。(奇内偶外),怎么判断射线交点捏,跨立实验!!
# 回转数算法
把点与多边形所有的顶点连接起来,把所有夹角加起来,(夹角有方向),如果和为 0,则点在多边形外
# 求两条直线的焦点
- 直线相交,判定是否平行即可
- 从两条直线上分别选取一个点和在直线上的方向向量,通过这些信息来计算,计算方法:
已知:点 A,B 坐标,向量 u, 沿直线方向向量 EB/ED (方向化), 方向向量夹角 β,u 与 ED 夹角 θ 之后的计算方法: 实际上这个计算本质上就是计算三角形的第三边长,可以自己画图求证一下