Насколько я понимаю, ваше желаемое поведение предполагает наличие трех точек: начало координат, вокруг которого вы вращаетесь, "мышь", чтобы указать направление относительно источника, и "выбор", чтобы указать расстояние от Происхождение. (Несколько странно, что результат вашего кода является «указателем выделения». Я так понимаю, что «выделение» означает исходную позицию выделенного объекта, а «указатель выделения» означает положение, в которое он был перетащен так далеко?)
Ваш код, однако, на самом деле относится только к двум из этих точек: (objectx
, objecty
), который, как я предполагаю, является источником, и (pointerx
, pointery
), который, как я предполагаю, является «мышь». Ваш код никогда не относится к «выбору»; поэтому, естественно, «выбор» не влияет на результат вашего кода.
Есть еще несколько проблем & mdash; Оли Чарльзуорт указывает в комментарии выше, что вы неправильно делите свой угол на & pi; / 180, что означает, что вы применяете очень маленькое вращение (именно поэтому похоже, что вы в конечном итоге получаете выделение указателем = мышью; в Фактически, они могут быть на расстоянии до нескольких градусов друг от друга относительно начала вращения, но это не сразу заметно) & mdash; но вместо того, чтобы исправить эти проблемы, я бы порекомендовал вам изменить свой подход. Вместо того, чтобы генерировать «указатель выделения», поворачивая «выделение» в соответствии с углом «мыши», я рекомендую сгенерировать его, масштабируя «мышь» в соответствии с величиной «выделения». Математика для этого более проста, ИМХО.
Если вы хотите придерживаться подхода генерации «указателя выделения», вращая «выделение» в соответствии с углом «мыши», то вам нужно исправить две основные вещи. Ваш текущий код поворачивает «мышь» на текущий угол «мыши». Часть исправления заключается в том, чтобы вместо этого вращать «выделение»; другая часть исправления заключается в повороте на разницу между текущими углами "мыши" и "выделения".