简体   繁体   中英

How to find the centroid of multiple rectangles - Python

I have to find the exact centroid of multiple rectangles. The coordinates of each rectangle are as follows:

coord = (0.294792, 0.474537, 0.0989583, 0.347222)  ## (xcenter, ycenter, width, height)

I have around 200 rectangles, how can I compute the centroid of them?

I already tried to implement it, but the code did not work well.

My code:

for i in range(len(xCenter)):
       center = np.array((xCenter[i]+(Width[i]/2), yCenter[i]+(Height[i]/2)))

This is a somewhat vague question, but if you mean the centroid of all rectangles by area, then each center of a rectangle is weighted by the area of the rectangle. Think of it as the all the mass of the rectangle being compressed into the center, and then having to take the centroid of several weighted points. The formula for that would be the sum of 1 through n (assuming rectangles are numbered 1 to n) of Area(Rec(i)) * vec(center(i)) all divided by the total mass of the system (the sum of all the areas). If you are referring to the centroid of the area in general, ignoring rectangle overlap, that is a little more tricky. One thing you could do is for each rectangle, check it against all other rectangles, and if a pair of rectangles overlap, split them up into a set of non-overlapping rectangles and put them back into the set of rectangles. Once all rectangles are non-overlapping, find the centroid by mass.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM