Учитывая точку в квадрате, мне нужно вычислить, как далеко эта точка проходит через квадрат (0% прогресса на одном конце, 100% на другом). Для простых горизонтальных (или вертикальных) обходов прогресс - это просто X-координата (или Y-координата), деленная на размер квадрата.
Но вот где я борюсь: мне нужно, чтобы обход был под углом, так что несколько (градусов? радианы?) либо наклоняются вверх, либо вниз. Если это помогает: все точки с совпадающими значениями «прогресса» должны образовывать линию, перпендикулярную пути / углу обхода.
Мне нужно написать такой метод (почти любой язык), который возвращает значение между 0 и 1:
float calculateProgress(float x, float y, float size, float angle) { }
... но не уверен, с чего начать.
Любая помощь очень ценится!
Редактировать / Добавлено Описание: для квартиры / горизонтальный обход, точки, которые сообщают о "50% прогрессе", будут образовывать вертикальную линию в середине квадрата. Но поверните немного против часовой стрелки, я хочу, чтобы те же самые точки (теперь повернутые, чтобы сформировать наклонную линию) сообщали о «50% -ом прогрессе», хотя верхняя половина теперь слева от размера x / size, а нижняя половина теперь право на х / размер.