【退火】线段退化为点/斜率为 0 的解决方法
查看原帖
【退火】线段退化为点/斜率为 0 的解决方法
1366578
Free_July楼主2024/11/8 22:02

我的退火是随机横坐标,然而当斜率为零时会输出 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);

注意,退火的随机数最好对 10001000 取模(我的改了 8080 -> 100100

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

2024/11/8 22:02
加载中...