找到距已知点的距离

时间:2015-03-27 02:56:23

标签: javascript

在有人指我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分,所以我不确定我能找到哪一个。

1 个答案:

答案 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;
&#13;
&#13;