在有人将我指向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分,所以我不确定我能找到哪一个。
最佳答案
这是我认为您可以使用的质心算法(我可能会误会!)。它将找到这些点的中心。我添加了画布,以便您可以看到要点。红点一是这些点的中心(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
};
};
<canvas id="c" width="100" height="100" style="border:2px solid red"></canvas>
关于javascript - 查找距已知点的给定距离的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29292540/