如何找到矩形的中心坐标?

45
我已经画了一个矩形,我知道它的左上角坐标为 (x1,y1),右下角坐标为 (x2,y2)。我也知道这个矩形的高度 h 和宽度 w。如何找到中心坐标 (x,y)?
我目前正在使用以下公式。
(x,y) = (x2 + x1)/2, (y2+y1)/2

它可以得到正确的y坐标,但是在x坐标上没有成功。


1
哈哈,可怜的我!我把错误的x坐标拿了出来 :) - casper123
9
这个问题似乎与编程无关,因为它涉及到与编程无关的数学内容。 - user247702
8
在编程中有一种叫做数学的东西,因此有时候要得到数学结果,可能需要解释如何在你所用的编程语言中实现它。我认为这并不离题。 - Fütemire
这绝对不是无关的事。我正在使用OpenCV进行人脸识别,但没有Rect方法来获取矩形的中心。我将使用这个公式。 - anonsaicoder9
3个回答

80

矩形的中心点是其对角线端点的中点。

这里的中点为( (x1 + x2) / 2, (y1 + y2) / 2 )

也就是说:
xCenter = (x1 + x2) / 2
yCenter = (y1 + y2) / 2

请告诉我您的代码。


2
我认为它也可以是 - ((x12)/2, (y12)/2) - Orlov Andrey
只有当矩形是正方形时,才能使用@OrlovAndrey。并非所有的矩形都是正方形。 - vbjay
如果左上角是0,0,右上角是30,0,左下角是0,40,右下角是30,40您可以将0和30相加,然后除以2得到x值,并对y值执行相同的操作。 - vbjay

30
Center x = x + 1/2 of width

Center y = y + 1/2 of height 

如果您已经知道宽度和高度,则只需要一个坐标系。


我也知道这样做,但它没有起作用。必须减去我要放置的元素的宽度和高度。 - jksevend

3
我们可以使用中点公式进行计算,
centre (x,y) =  new Point((boundRect.tl().x+boundRect.br().x)/2,(boundRect.tl().y+boundRect.br().y)/2)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接