Я пытаюсь написать алгоритм, который вращает один квадрат вокруг его центра в 2D до тех пор, пока он не совпадёт или не станет «достаточно близко» к повернутому квадрату, который начался в том же положении, имеет тот же размер и имеет такой же центр. Это довольно легко.Эффективная аппроксимация вращения
Однако углы квадрата должны совпадать, чтобы получить соответствие, верхний правый угол квадрата для поворота должен быть достаточно близко к тому, что первоначально было в верхнем правом углу повернутого квадрата.
Я стараюсь сделать это как можно более эффективным, поэтому, если близость двух квадратов на основе вышеприведенных критериев ухудшается, я знаю, что мне нужно попробовать и повернуть назад в противоположном направлении.
Я уже писал методы, чтобы вращать квадраты, и проверить, насколько они близки друг к другу
Моя главная проблема заключается в том, как я должен изменить количество вращаться на каждой итерации на основе того, насколько близко я
Например Если текущее измерение ближе, чем предыдущее, уменьшите угол на половину и перейдите в том же направлении, иначе удвойте угол и поверните в противоположном направлении?
Однако я не думаю, что это довольно плохое решение с точки зрения эффективности.
Любые идеи были бы высоко оценены.
Ваши данные? Как он хранится/представлен? –
Почему бы вам не рассчитать углы, на которых повернутый квадрат имеет свои стороны? Это тривиальная тригонометрия в O (1). – liori
Его просто хранят в виде четырех координат, и я не вычисляю углы, потому что это гораздо более серьезная проблема, чем то, что было описано, когда наилучшим методом является аппроксимация. –