以下是引用宇宙规律在2014-5-8 18:49:11的发言:
求出线段的交点后(x1,y1),(x2,y2),(x3,y3),...(xn,yn),还需要按照 x1,x2,x3,...xn的大小排序,如果x1>x3>xn>x2,要求输出顺序是(x1,y1),(x3,y3),(xn,yn),(x2,y2);
同时,每条线段ab的长度取值范围是:N*ab ;
上面回得太粗疏。循环可用双重循环,即求出线段的交点后(x1,y1),(x2,y2),(x3,y3),...(xn,yn),还需要按照 x1,x2,x3,...xn的大小排序,如果x1>x3>xn>x2,要求输出顺序是(x1,y1),(x3,y3),(xn,yn),(x2,y2);
同时,每条线段ab的长度取值范围是:N*ab ;
for (i=0; i<n; i++) {
for (j=i+1; j<n; j++) {
......
}
}
至于按大小输出,也就是将所有交点用点坐标结构数组表示,再对数组排序并输出的问题,用 qsort() 可以实现(需自定义比较函数)。
至于 N*ab,N 是一个浮点常量,那么 a b 又是怎么定义的?