我的退火是随机横坐标,然而当斜率为零时会输出 nan 或乱数
于是你可以:
scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&ax,&ay,&bx,&by,&cx,&cy,&dx,&dy);
if(bx-ax==0) bx-=0.000001;
k1=(by-ay)/(bx-ax);
if(dx-cx==0) dx-=0.000001;
k2=(dy-cy)/(dx-cx);
注意,退火的随机数最好对 1000 取模(我的改了 80 -> 100)
inline double rd(int low=0,int up=1e3)
{
int _mod=up-low;
return (double)(rnd()%2?1:-1)*((rand()^rand())*rand()%_mod+low);
}
这里谢谢 @lihe_qwq 大佬 Orz