2016-01-08 3 views
0

Итак, я создал эллипсоид, но когда я пытаюсь повернуть его, почти половина вокселей пропадает. Независимо от того, использую ли я его с помощью матрицы поворота или используя матрицу переноса от одной базы к другой, я сразу начинаю проигрывать пиксели. Если эллипсоид находится на 0 градусов, 90, 180 или 270, он выглядит отлично. Но когда он перемещается между этими углами, цвет фона начинает заглядывать в маленькие дыры во всем моем объекте. Я предполагаю, что это какая-то проблема с плавающей точкой для преобразования, но я не знаю, как это сделать. У кого-нибудь есть идеи?Отсутствующие пиксели при вращении объекта

+1

Посмотрите на ваш вопрос. Можете ли вы определить, что происходит от объема информации, которую вы предоставили? Код или алгоритм были бы хороши, ведь вы отметили его как C++, но кода на C++ нет. –

+0

Все матрицы передаются от одного базиса к другому. Это то, что они делают. Матрицы вращения - это те, которые переносятся с ортонормированных оснований. –

ответ

0

Причина, по которой это происходит, состоит в том, что когда вы рисуете свою повернутую форму из-за округления/усечения координат, несколько исходных пикселей сопоставляются с одним и тем же целевым пикселем, что означает, что есть целевые пиксели, которые не получают никакого значения ,

Правильный способ сделать это - взять все целевые пиксели и выполнить обратное преобразование и собрать значение, которое должно быть в целевом пикселе. Потенциально интерполяция.

+0

Ум. Что такое * целевой пиксель * в вашем объяснении? –

+0

Это пиксель в целевом изображении. Изображение «результат». – Photon

+0

* Целевое изображение * одинаково досадно. Если это изображение после преобразования, то утверждение, что целевой пиксель не получает никакого значения, не имеет смысла. –

Смежные вопросы