У меня есть приложение CAD, которое позволяет пользователю рисовать линии и многоугольники и все такое.
Одна сложная проблема, с которой я сталкиваюсь, заключается в том, что рисование пользователя может быть очень неточным, например, пользователь может захотеть нарисовать два прямоугольника, которые связаны друг с другом. Следовательно, должна быть одна линия, разделенная двумя прямоугольниками. Однако пользователю легко вместо рисования линии нарисовать две линии, которые расположены очень близко друг к другу, настолько близко друг к другу, что, глядя на экран, вы ошибаетесь, что они та же строка, за исключением того, что это не так, когда вы немного увеличиваете.
Моему приложению потребуется, чтобы пользователь правильно рисовал линии (или моя предварительная обработка должна иметь возможность выполнять автокоррекцию), иначе мой внутренний алгоритм (назовем его Алгоритм ) не сможет обработать входы правильно.
Какова лучшая стратегия борьбы с такого рода проблемами? Я думаю о округлении координат точек с определенной степенью точности, но хотя я не могу точно определить проблему этого подхода, но я чувствую , что это не правильный способ делать вещи, что это создаст новые проблемы.
Редактировать: ради аргумента привязка недоступна. Между прочим, все виды «входной стороны» не доступны. Исправление должно быть сделано с помощью предварительной обработки моего кода, когда рисование закончено, но перед тем, как я отправлю его в свой алгоритм.
Безумное ограничение, говорите вы. Но пользователь может создать свои входные данные либо в моем приложении, либо они могут создать свои входные данные в другом программном обеспечении САПР, а затем отправить его в мой движок для выполнения расчетов. Я не могу контролировать, как они вводят в другое программное обеспечение САПР.
Редактировать 2: я могу позволить пользователю указать «радиус кластера», но важный момент заключается в том, что мне нужно убедиться, что мой алгоритм предварительной обработки непротиворечив и не будет действительно вводить новый набор проблемы.
Есть идеи?