计算几何入门笔记

前置知识

  1. 浮点类型预定义与性质

    1. def(INF) = 1e100 , eps = 1e-6 , pi = acos(-1.00)
    2. 浮点数越靠近零点精度越高(分布越稠密);
    3. 三角函数,除法,开方,求次幂,取对数的误差较大。
      考虑将除法转换为乘法。
  2. 取整

    1. 取上整 ceil(x)
    2. 取下整 floot(x)
    3. 四舍五入(int)(x+0.5)(int舍弃小数部分)
  3. 向量乘法

    1. 点积(内积、数量积)dot product
    2. 叉积 cross product (\(a × b\) 的方向满足右手定则)
      性质(设:\(a = (a_1,a_2,a_3)\)\(b = (b_1,b_2,b_3)\))
      1. aba × b正交(互相垂直);
      2. a x b的方向满足右手定则('a'转向'b'的方向为右手四指向,大拇指方向为a x b);
      3. 几何意义在且仅在三维空间有严格意义;
      4. \(a×b=(a_2b_3-a_3b_2,a_3b_1-a1_b3,a_1b_2-a_2b_1);\)
      5. \(a×b\)的长度为\(|a||b|sinθ\)(a,b为边的平行四边形面积)
      6. *运算结果是一个伪向量,在不同的坐标系中可能不同
        (平面中得到一个数量:\(a_1b_2-a_2b_1\))
      7. \(\overrightarrow{a}×\overrightarrow{a}=\overrightarrow{0}\)
      8. \(\overrightarrow{a}×\overrightarrow{b}=-\overrightarrow{b}×\overrightarrow{a}\)
      9. \(λ\overrightarrow{a}×\overrightarrow{b}=λ(\overrightarrow{a}×\overrightarrow{b})\)
      10. 满足分配律
    3. 应用:
      1. 判断向量间的顺时针,逆时针方向
        若 P × Q > 0 , 则P在Q的顺时针方向。
        若 P × Q < 0 , 则P在Q的逆时针方向。
        若 P × Q = 0 , 则P与Q共线,但可能同向也可能反向(此时需要借助数量积进一步判断)。
      2. 求夹角(需要用到acos(),asin()等反三角函数)
      3. 判断三点共线(共线向量定理)
      4. 求三角形面积(1/2*叉乘结果,一般地,计算几何中面积有正有负)
  4. 向量旋转
    利用三角函数、单位圆,复数乘法性质:
    三角函数对应的向量模长为1,复数乘法的几何意义为辐角相加,模长相乘.

  5. 符号函数(判断相等)

    点击查看代码
    /*请不要直接用等号判断浮点数是否相等!
    解决方法一,误差判断法:
    	const double EPS=1e-9;
    	浮点数判断相等,fabs(x-y)<EPS;
    	浮点数判断为零,fabs(x)<EPS。
    解决方法二,化浮为整法:
    在不溢出整数范围的情况下,可以通过乘上10的k次方,转化为整数运算,最后在将结果转化为整数。*/
    
    int sign(double d){
    		  if(fabs(d) < EPS) return 0;
    		  return (d > 0) ? 1 : -1;
    	}
    

对象关系判断(点、线)

面积计算与二维凸包

前置知识:pick定理
双耳定理

  1. 按逆时针顺序给定点集计算多边形面积:
    三角剖分,注意叉积正/负面积参考

习题

题意:
思路:

(未A)点击查看代码

posted @ 2022-08-11 15:59  _画生  阅读(106)  评论(0编辑  收藏  举报