function MakeValtrConvexPolygonCoords(numSides,radius) {
var xs = Array.from({length: numSides}, () => 2.0 * radius * Math.random());
var ys = Array.from({length: numSides}, () => 2.0 * radius * Math.random());
xs.sort(function(a, b){return a - b});
ys.sort(function(a, b){return a - b});
console.log("xs: ",xs);
console.log("ys: ",ys);
let minXS = xs[0];
let maxXS = xs[xs.length-1];
let minYS = ys[0];
let maxYS = ys[ys.length-1];
console.log("minXS: ",minXS);
console.log("minYS: ",minYS);
console.log("maxXS: ",maxXS);
console.log("maxYS: ",maxYS);
var vecXS = makeVectorChain(xs,minXS,maxXS);
var vecYS = makeVectorChain(ys,minYS,maxYS);
console.log("vecXS: ",vecXS);
console.log("vecYS: ",vecYS);
shuffleArray(vecYS);
console.log("shuffled vecYS: ",vecYS);
function makeVectorChain(valuesArray, minVal, maxVal) {
let lastMin = minVal;
let lastMax = minVal;
var ary = []
for (let idx = 1; idx < valuesArray.length - 1; idx++) {
var val = valuesArray[idx];
if (Math.random() > 0.5) {
ary.push(val - lastMin);
lastMin = val;
} else {
ary.push(lastMax - val);
lastMax = val;
}
}
ary.push(maxVal - lastMin);
ary.push(lastMax - maxVal);
return ary;
}
var vecs = vecXS.map(function(e, i) {
return [e, vecYS[i]];
});
vecs.sort(function(a, b){
let aAng = Math.atan2(a[1],a[0]);
let bAng = Math.atan2(b[1],b[0]);
return (aAng - bAng);
});
console.log("sorted vecs: ",vecs);
var vecAngs2 = [];
for (const vec of vecs) {
let a = Math.atan2(vec[1],vec[0]);
vecAngs2.push(a);
}
console.log("vecAngs2: ",vecAngs2);
var polyCoords = [];
let x = 0;
let y = 0;
for (const vec of vecs) {
x += (vec[0] * 1);
y += (vec[1] * 1);
polyCoords.push([x,y])
}
var centroid = getCentroid(polyCoords);
polyCoords = polyCoords.map(function(e){
let x = e[0] - centroid[0];
let y = e[1] - centroid[1];
return [x,y];
});
console.log("polyCoords: ", polyCoords);
return polyCoords;
}