Javascript 避免几何图形交叉

Javascript 避免几何图形交叉,javascript,Javascript,我想使用以下代码: 让顶点=[]; 函数设置(){ createCanvas(窗口宽度、窗口高度); 设numberOfVertices=random(3,11);//选取点数 for(设i=0;iv.y); 设cx=(Math.min(…ax)+Math.max(…ax))/2; 设cy=(Math.min(…ay)+Math.max(…ay))/2; 顶点排序((a,b)=>{ 设v1=p5.Vector.sub(a,createVector(cx,cy)); 设v2=p5.Vector.

我想使用以下代码:

让顶点=[];
函数设置(){
createCanvas(窗口宽度、窗口高度);
设numberOfVertices=random(3,11);//选取点数
for(设i=0;i
*{
保证金:0;
}

计算点边界框的中心,并根据向量从中心到点的角度对点进行排序:

让ax=顶点.map(v=>v.x);
设ay=顶点.map(v=>v.y);
设cx=(Math.min(…ax)+Math.max(…ax))/2;
设cy=(Math.min(…ay)+Math.max(…ay))/2;
顶点排序((a,b)=>{
设v1=p5.Vector.sub(a,createVector(cx,cy));
设v2=p5.Vector.sub(b,createVector(cx,cy));
返回Math.atan2(v1.y,v1.x)-Math.atan2(v2.y,v2.x);
});
在以下示例中,绘制形成顶点中心点的线以可视化算法:

让顶点=[];
让cx,cy
函数设置(){
createCanvas(窗口宽度、窗口高度);
设numberOfVertices=random(3,11);//选取点数
for(设i=0;iv.x);
设ay=顶点.map(v=>v.y);
cx=(数学最小值(…ax)+数学最大值(…ax))/2;
cy=(Math.min(…ay)+Math.max(…ay))/2;
顶点排序((a,b)=>{
设v1=p5.Vector.sub(a,createVector(cx,cy));
设v2=p5.Vector.sub(b,createVector(cx,cy));
返回Math.atan2(v1.y,v1.x)-Math.atan2(v2.y,v2.x);
});
}
函数绘图(){
背景(220);
填充(255,0,0);
仰泳();
beginShape();
for(设i=0;i

非常感谢@安娜:谢谢。不客气。