计算几何入门

学习进度:40/197(分钟)

Wannafly计算几何教程


向量的叉积和点积

cmath

  • acos(-1.0) π
  • atan2(y,x) 算角度

直角坐标和极坐标互化

$$
(x,y) => (sqrt(x^2+y^2),atan2(y,x))
$$

求一个点绕原点旋转x度后的坐标

判断一个点与一条直线的关系(线上,左/右侧)

  • 叉积 正 => 左边
  • 叉积 负 => 右边

判断两条线段的关系

  • 四次叉积

求两条直线的交点坐标(保证不平行)


$$
a1(x1, y1), a2(x2,y2), b1(x3,y3), d(x4,y4)
=>(((b1-b2)/(s1+s2) * s2) + b2)
$$
注意:所有运算都是基于向量

求一个封闭不自交多边形面积

按照顺时针给出每个点的坐标

设$n$个点
$$
p1(x1, y1), p2(x2, y2), p3(x3,y3),…,pn(xn,yn)
$$
$$
S=|(p1×p2+p2×p3+…pn-1×pn+pn×p1)/2|
$$

多边形面积交

极角排序

概述:把二维问题转化为极角上的一维问题

给定n