КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Алгоритмичные и программные методы построения динамических сцен в реальном времени
Рассмотрим задачу поворота символа с шагом 22,50, описанного матрицей 16´16 точек. Первая матрица изображения символа (16´16 или 208´208) в восьмеричной системе счисления имеет вид:
А 0,0; A 0,1; ……; A 0,16; A 0,17 А 1,0; A 1,1; ……; A 1,16; A 1,17 …………………….…… А 16,0; A 16,1; …..; A 16,16; A 16,17 А 17,0; A 17,1; ……; A 17,16; A 17,17, а в условных (т.е. не привязанных к конкретной точке экрана) восьмеричных адресах эта матрица выглядит так:
0, 1, ……16, 17 20, 21, …… 36, 37 ………….…………. 340, 341, …... 356, 357 360, 361, …... 376, 377.
При необходимости отобразить поворот по определенному признаку (конкретной величине угла поворота или номеру его азимутального направления) выбирается базовая матрица символа и соответствующий порядок ее считывания. Затем с помощью подпрограммы типа «цикл в цикле» считывается записанная в ОЗУ базовая матрица и на экране дисплея отображается изображение выбранного символа в нужном азимутальном направлении. Предлагаемый метод реализован в программе, по которой из трех базовых матриц изображений символа на экране видеотерминала формируется 16 изображений такого символа, ориентированных в различных азимутальных направлениях. Программа отображает последовательную выдачу всех 16 изображений, в целом отображающую маневр объекта в реальном времени. Исследования показали, что скорость вычислений получается максимальной в том случае, когда основные составляющие программы сформированы в отдельные модули, которые представляют собой независимые фрагменты. Известно, что движение символов на экране геоинформационного комплекса можно задать с помощью последовательности операций поворота и параллельного переноса. Операция параллельного переноса является простой для программной реализации и достаточно быстрой, поскольку требует не более двух операций сложения целых чисел для каждой точки символа. Операция поворота символа требует большого количества машинных ресурсов, поскольку требует для своего выполнения в общем случае четыре операции умножения действительных чисел. Количество операций в алгоритме поворота существенно сократится по сравнению с известными методами, если использовать алгоритм Брезенхема для построения прямых. Выберем точку начала относительной системы координат . Для удобства вычислений можно взять одну из вершин прямоугольной матрицы, в которой хранится растровое изображение символа . Для этой точки вычисляются ее координаты после поворота с помощью синусно-косинусного преобразования. Предлагается подсчитать значения тангенса и котангенса угла поворота и присвоить dx1:=h1∙tg( ); dy1:=h2∙ctg( ). Матрица растрового изображения символа , которая соответствует символу после поворота на угол вычисляются по циклу: x1:=x’-dx2; y1:=y’-dy2; от i:=0 до X начать j:=0; x:=x+dx1; y1:=y1+1; если int{x}=int{x-dx1} то x1:=x1+1; x2:=x1;y2:=y1; S'[i,j]:=S[x1,y1]; от j:=1 до Y начать x2:=x2+1; y:=y+dy1; если int{y2}=int{y2-dy1} то y2:=y2+1; S’[x2,y2]:=S[i,j]; конец цикла; конец цикла; Предлагаемый алгоритм быстрого экономичного поворота обеспечивает меньшее количество операций за счет того, что в нем совершается лишь одно сложение вещественных чисел, а две другие операции сложения в теле цикла осуществляются для целых чисел, что позволяет производить их выполнение в четыре раза быстрее, (в рассматриваемом примере использовались 16-ти разрядные числа). С учетом изложенного количество операций при выполнении поворота будет равно , где - количество элементов в матрице символа, в то время как известные методы поворота предусматривают не менее операций, то есть время выполнения составит 22% от времени выполнения описанных в литературе алгоритмов.
Дата добавления: 2014-01-11; Просмотров: 771; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |