1

Тема: Неделимый пиксель

Здравствуйте! Действительно ли пиксель должен быть целым? Когда нужно отрисовать какую-нибудь хитрую (овальную) шкалу, проще задать координаты формулами, но из-за округления до целых пикселей? шкала получается пляшушей. В приложении пример обычной круглой шкалы, заданной координатами. В случае если её же нарисовать через поворачивающуюся группу, всё выглядит нормальным

Post's attachments

Иконка вложений Lr0OAa.png 77.34 Кб, 47 скачиваний с 2017-01-13 

2

Re: Неделимый пиксель

Здравствуйте! Приносим свои извинения за задержку с ответом.
Нет, пиксель вовсе не обязан быть целым. В своё время, несколько лет назад, мы думали над этим и выбрали целочисленное представление координат. На то были следующие причины.
Процессоры современных персональных компьютеров давно имеют встроенные средства (сопроцессоры) для выполнения операций с числами с плавающей точкой. Скорость таких операций сопоставима со скоростью целочисленных операций. В результате, на персональном компьютере, созданный в САПР программный код, будет одинаково быстро выполняться не зависимо от типа использованных в нём значений и операций с ними.
Но программный код, созданный в САПР, должен иметь возможность отрабатывать и в разнообразных системах отображения информации. До сих пор львиная доля их реализуется на недостаточно производительной, а порой и просто на морально устаревшей элементной базе. Речь идёт в первую очередь об отечественных разработках. Например, в недавнем прошлом нам встречались МФИ созданные на intel 486 микропроцессорах без блока сопроцессора или процессоры, созданные на ПЛИС, в которых присутствовали только целочисленные операции и для работы с плавающей точкой приходилось подключать к исходному коду библиотеки программной эмуляции данных операций. Ни о каких аппаратных ускорителях графики при этом в подобных разработках не стоит и говорить. Вся рисующая аппаратная часть до сих пор реализуется исключительно на целочисленной арифметике.
В дополнение к этому мы убеждены, что для человека гораздо комфортнее использовать привычные нам целые типы данных. Они обеспечивают более однозначный и предсказуемый результат. Также не бойтесь использовать смещение и поворот локальных систем координат, это абсолютно никак не сказывается и не может влиять на скорость прорисовки OpenGL.
В настоящее время уже начинают появляться разработки систем индикаций с применением современных аппаратных ускорителей и рисующей частью на основе OpenGL. Мы следим за этим и, возможно, в ближайшем будущем издадим версию САПР с float значениями в качестве координат вершин примитивов. А пока, как и задумывалось нами изначально, пользователю для всех нужд прорисовки необходимо использовать имеющиеся виды примитивов.