例如,如果我有2个矩形, anchor 位于矩形的中心,一个宽度为6(红色),另一个宽度为2(蓝色),我想像这样将它们水平对齐到中心:
为了使整个结构的位置(也是中心和 anchor )位于原点,红色矩形应放置在(-1,0),蓝色矩形应放置在(3,0) .
这个例子可以通过图形来解决,并分为1个单位段,但是如果我有任意数量的不同宽度的矩形怎么办?
如何找到每个矩形的 anchor 在中心的位置?
最佳答案
将所有矩形的宽度相加,然后除以 2。这是从最左侧矩形的左侧到中心的距离。
然后对于每个矩形,计算从最左边矩形的左侧到矩形中心点的距离。从第一个数字中减去该值即可找到矩形中心点相对于中心的偏移量。
伪代码:
求最左边矩形的左侧到中心的距离:
int i;
float sum = 0;
for(i = 0; i < rectangle_count; i++)
sum += rectangles[i].width;
centerpoint = sum / 2.0;
计算每个矩形相对于中心的偏移量:
sum = 0.0;
for(i = 0; i < rectangle_count; i++)
{
// compute offset for this rectangle relative to center:
rectangles[i].offset = (sum + (rectangles[i].width / 2.0)) - centerpoint;
sum += rectangles[i].width;
}
关于algorithm - 如何将不同宽度的矩形水平居中对齐,但保持 anchor 位于每个矩形的中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31331523/