Самый быстрый способ сделать преобразования (Move, Rotate, Scale) - PullRequest
2 голосов
/ 08 июля 2010

Я смотрел на это векторное приложение для рисования под названием Creative Docs .Net. Я заметил, что у меня могут быть сотни форм, и перемещение, вращение и масштабирование не запаздывают вообще. Учитывая, что все вершины должны быть изменены, как приложения обычно выполняют эти преобразования как можно быстрее?

Спасибо

Ответы [ 3 ]

2 голосов
/ 08 июля 2010

Один из типичных способов сделать это - применить к координатам матрицу аффинного преобразования 3x3 (или 3x2, или 2x3), которая может описывать такие вещи, как положение, вращение, масштаб и сдвиг.

Если вы используете OpenGL или Direct3D, вы можете использовать графическое оборудование для выполнения реальных преобразований за вас.

Если вы делаете это в программном обеспечении, то, скорее всего, узким местом станет расторжение, а не трансформация вершин.

1 голос
/ 08 июля 2010

Помимо использования матриц для имитации аффинного преобразования (линейные преобразования с переводом), вас может заинтересовать использование Кватернионов для выполнения этих операций в R 3.

0 голосов
/ 08 июля 2010

Обычно это делается с помощью матриц преобразования.Это позволяет довольно быстро преобразовывать отдельные точки и является наиболее распространенным методом, используемым в большинстве 2D (и 3D) векторных рисунков.

Это приложение, в частности, построено поверх Anti-Grain Geometry - довольно высокопроизводительный движок 2D-рендеринга с открытым исходным кодом.Он предоставляет множество «примитивов», которые могут быть использованы для приложений такого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...