在有人将我指向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/

10-13 04:14