在有人指我this question之前,我已经看过但是看不到它(我希望我能)。我正在寻找一种简单的方法(因为我不擅长数学)或者可以将其翻译成JavaScript的人。
基本上,我想找到一个点的坐标,给定3个或更多点(可以是20)并给出我正在寻找的点与给定点之间的距离。我该怎么做呢?
理想情况下,我想获得像
这样的东西function getPoint(array){
var pt = {x:0, y:0};
//the hot stuff here that I need help with
return pt;
}
var a = [{x:10, y:10, d:30}, {x:10, y:50, d:20} ...];
getPoint(a);
我正在考虑计算圆到圆的交点,但那会让我回到2分,所以我不确定我能找到哪一个。
答案 0 :(得分:1)
这是一个质心算法我认为你可以用它(我可能会弄错!)。它会找到这些点的中心。我添加了画布,所以你可以看到点。红点1是那些(dah)的中心。
var c = document.getElementById("c");
var context=c.getContext("2d");
var a = [{x:20, y:10, d:30}, {x:15, y:80, d:20}, {x:80, y:60, d:20}];
console.log(getPoint(a));
function getPoint(points) {
var cx = 0, cy = 0,
sa = 0, a, i = 1,
len = points.length,
pt1 = points[0], pt2;
context.fillRect(pt1.x,pt1.y,4,4);
for (; i < len; i++) {
pt2 = points[i];
a = pt1.x * pt2.y - pt2.x * pt1.y;
sa += a;
cx += (pt1.x + pt2.x) * a;
cy += (pt1.y + pt2.y) * a;
context.fillRect(pt1.x,pt1.y,4,4);
pt1 = pt2;
}
context.fillRect(pt2.x,pt2.y,4,4);
sa *= 0.5;
cx /= (6.0 * sa);
cy /= (6.0 * sa);
context.fillStyle="red";
context.fillRect(cx,cy,4,4);
return {
x: cx,
y: cy
};
};
&#13;
<canvas id="c" width="100" height="100" style="border:2px solid red"></canvas>
&#13;