4点多边形的对角中心

时间:2018-10-15 09:36:37

标签: javascript math

我试图找到4点多边形的(对角线)中心:

enter image description here

我认为这很简单:

enter image description here

但是似乎不是...那么如何调用/查找中心x / y?

2 个答案:

答案 0 :(得分:2)

如果您正在谈论引力中心,那么它将如下所示:

G = (A + B + C + D) / 4

means:
xG = (xA + xB + xC + xD) / 4
yG = (yA + yB + yC + yD) / 4

您可以在这里看到:Geometric centroid

formular

答案 1 :(得分:1)

在评论之后,使用this Wikipedia page中的公式:

enter image description here

...您可以计算对角线的交点,假设多边形是凸的(即对角线始终相交)。

  

请注意,点索引与多边形的索引不同:对角线分别位于点1 – 32 – 4之间,而多边形点的顺序为{{1 }}。

工作片段:

1 - 2 - 3 - 4
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");

function line (ax,ay,bx,by) {
	ctx.beginPath();
	ctx.moveTo(ax,ay);
	ctx.lineTo(bx,by);
	ctx.stroke();
}

var x1 = 100 ;
var y1 = 100 ;
var x2 = 110 ;
var y2 = 320 ;
var x3 = 400 ;
var y3 = 200 ;
var x4 = 300 ;
var y4 = 100 ;

// Lines
line(x1,y1,x2,y2) ;
line(x2,y2,x3,y3) ;
line(x3,y3,x4,y4) ;
line(x1,y1,x4,y4) ;

// Diagonals
line(x1,y1,x3,y3) ;
line(x4,y4,x2,y2) ;

var div = (x1-x3)*(y2-y4)-(y1-y3)*(x2-x4) ;
var divx = (x1*y3-y1*x3)*(x2-x4) - (x1-x3)*(x2*y4-y2*x4) ;
var divy = (x1*y3-y1*x3)*(y2-y4) - (y1-y3)*(x2*y4-y2*x4) ;

var x = divx/div ;
var y = divy/div ;

$("#x").val(x) ;
$("#y").val(y) ;

// Center
line(x,y-10,x,y+10) ;
line(x-10,y,x+10,y) ;