Предыдущие ответы дали вам прямоугольниками, но говорят, что они не делают то, что вы хотите, но не то, почему они не правы ... Так У меня есть предположение, на всякий случай, я думаю, правильно:
Я предполагаю, что у вас есть прямоугольник, и вы хотите переместить один из его углов, как вы могли бы, когда перетаскиваете мышью в графической программе. Я также предполагаю, что на основе вашего примера кода стороны прямоугольника параллельны осям.
В этом сценарии точка, расположенная по диагонали напротив той, которую вы двигаете, является якорем - она остается на месте. Очевидно, что вы двигаетесь, а остальные два двигаются, чтобы сохранить форму прямоугольной.
Если это так, вы вычисляете прямоугольник, основанный исключительно на точке, в которой вы двигаетесь, и ее диагонально противоположной точке. Код, который вы указываете в своем вопросе, обрабатывает случай, если точка 1 или точка3 перемещены. Вам просто нужно код для случая point2 или Point4 перемещается, которые вы получаете от простой замены:
NSMakeRect(MIN(point2.x, point4.x),
MIN(point2.y, point4.y),
fabs(point2.x - point4.x),
fabs(point2.y - point4.y));
Теперь просто нужно знать, чего вы переместили и выберите соответствующий код.
Вы хотите создать прямоугольник или многоугольник? – Tharabas
@Tharabas Я хочу создать прямоугольник. –