咸鱼博主(计算几何萌新,随缘更新~
tip 1:
#define pi atan(1.0)*4
使用define定义时注意程序只是在运行时将语句进行替代,
若使用 a / pi ???
返回值是 a /
π
\pi
π * 16, 因为表达式完整版是
a / pi
→
\rightarrow
→ a / atan(1.0) * 4 而不是 a / (pi / atan(1.0) * 4)。
所以正确的写法应该是
#define pi (antan(1.0)*4)
同理引申到多种define typedef 表达式。
tip 2:
几何计算除直接求点外二次计算过程中慎用turn函数!精度杀手!!!!
eps debug 半个小时的透彻领悟…
double len(){
return hypot(x,y);//库函数
}
Point trunc(double r){
double l = len();
if(!sgn(l))return *this;
r /= l;
return Point(x*r,y*r);
}