У меня есть фиксированный набор (вокруг хрустали) форм svg, каждый из которых содержит один <path>
. Представьте, что любое количество этих фигур помещается где угодно в новый документ. то я применить любой из следующих операций на каждой форме столько раз, сколько я хочу:Идентификация измененных путей в документе svg
- Поворот
- Зеркало (вертикальное/горизонтальное)
- Scale (X/Y)
Эти операции затем выводятся на новый путь (ни одна из операций svg не используется, как атрибут преобразования). В основном, это результат иллюстратора adobe save-as-svg.
Учитывая произвольный такой документ, я хотел бы найти алгоритм для обратной инженерии это в список форм и операций, таких как
- Форма лодка: позиция (4,5), вращение 20deg, масштабируются й 50% у 100%, не зеркальный v = Да, Н = нет
- формы автомобиля: и т.д ...
можно было бы ввести, что формы в документе названы после того, как их соответствующий " оригинальной "формы с использованием идентификатора слоя, но я хотел бы избежать этого, насколько это возможно.
Моя первая мысль заключалась в том, чтобы сделать какой-то хэш для фигур для их идентификации (может быть х хешей, по одному для каждой операции с зеркалом), а затем использовать две опорные точки в форме для поиска вращения. Вариантом этого может быть измерение абсолютного значения всех расстояний между точками в форме и разделение каждого расстояния между точками с этим, чтобы получить уникальный хеш. Хотя потребность в шкале x/y, по-видимому, сильно испортила эту идею. К сожалению, я не могу отказаться от этого требования.
Как выбрать P'_k и P_k для каждого уравнения? Насколько я понимаю, они должны соответствовать одной и той же точке преобразованной формы для разрешимости уравнения? Мне может быть повезло, что начальная точка всегда одна и та же (отмечена знаком M в svg), но в любом другом случае мне нужно выбрать случайную отправную точку в преобразованной форме и затем пересечь все точки оригинала пока я не найду соответствующие точки? whoosh Я надеюсь, что мой вопрос ясен – Tewr
Да, вам нужно найти соответствующие точки. Попытка каждого в качестве отправной точки будет работать. Уравнение можно решить, даже если вы выбрали неправильный, но вы легко узнаете правильный выбор, потому что он подходит лучше всего, т. Е. Остатки являются наименьшими. – pentadecagon