Проблема: переместите точку по круговой траектории с помощью мыши в качестве руководства.перемещение точки по круговой траектории с помощью мыши (python/pygame)
Существует множество решений в режиме онлайн для перемещения точки по круговой траектории, а именно с использованием уравнения радиуса радиуса + math.sin || cos (angle) * и увеличения угла. Однако это не работает с вводом мыши; даже на долю исходного значения x/y и преобразованный в радианы, ваш «круг» не имеет постоянного радиуса, а точка пути перемещается в странном соотношении с положением мыши.
Я полагаю, что точка пути (точка на окружности круга) должна быть ограничена определенным расстоянием от начала координат (принудительный радиус). У меня также возникает ощущение, что либо y должна быть функцией x, либо x должна быть функцией y.
Я пошел по пути использования формулы расстояния, чтобы проверить расстояние от точки пути до центра круга. Идея заключалась в том, чтобы затем «привязать» значения x и y обратно на допустимое расстояние - истинное расстояние, но это ... не сработало. А именно потому, что существует разница между расстоянием между двумя точками и разницей между двумя точками (как я начинаю , начинаю, чтобы понять, что разница между двумя точками дает вектор?). Во всяком случае, я уверен, что есть более простое решение.
(давайте ... делать вид, вращающийся рычаг по центру, для иллюстрации)
Благодаря @Mark! Тригонометрическая функция подняла ошибку с нулевым делением. Вероятно, это можно было бы обойти вокруг этого, создав барьер вокруг центра круга, где все значения, полученные для mousex и mousey, равны 1. Я также столкнулся с чувствительностью - когда я передвинул мышь, конечная точка пошла бы по кругу. Интересно, не существует способа включить угловую скорость в уравнение, чтобы исправить это. @Meyer, это замечательно! Каковы элементы внутри векторного кортежа? (если есть имя.) –
Кроме того, не по теме напрямую, но я замечаю, что скаляр CENTER [0] + vector [0] * имеет тот же вид, что и радиус центра + cos (theta) *. Любопытно. –
Я знаю элементы как векторные координаты или векторные компоненты. Что касается деления на ноль, я смущающе забыл об этом, и исправил код соответствующим образом. Обратите внимание, что 'satelliteCenter' теперь обновляется только тогда, когда расстояние не равно нулю. Да, существует тесная связь с косинусом угла между векторами, см., Например, запись в Википедии о [векторной проекции] (https://en.wikipedia.org/wiki/Vector_projection). – Meyer