Термин концентрический, хотя обычно используется для кругов, на самом деле просто основан на латыни «тот же центр». Следовательно, концентрические квадраты - это те, которые имеют один и тот же центр (где встречаются диаганолы).
Итак, допустим, вам нужен верхний левый угол (где X
увеличивается вправо, Y
увеличивается внизк низу) и длина стороны. Чтобы вычислить центр существующего квадрата:
centX = X + length / 2
centY = Y + length / 2
Затем отработать верхние левые координаты для нового квадрата заданной длины (это концентрически с первым):
X = centX - length / 2
Y = centY - length / 2
Вы можете заключить это в функцию (псевдокод), например, так:
def makeConcentricSquare(origX, origY, origLen, newLen):
newX = origX + origLen / 2 - newLen / 2
newY = origY + origLen / 2 - newLen / 2
return (newX, newY, newLen)
Это, конечно, при условии, что ваши квадраты горизонтальны по своей природе. Вы можете делать подобные вещи, чтобы вращать их, но я оставлю это как упражнение для читателя, тем более что в спецификациях не упоминается, что это разрешено: -)