Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Demo Making    >>    lens
   
 
 Линза или Натягиваем Рисунок на Шар   Aleksey Mashihin 24.03.1998

Два варианта программы (Ассемблер и Паскаль), демонстрирующей принцип наложения (с растяжением) изображения на сферическую поверхность (эффект линзы). [320x200x256]



4k 
 

* 3D |_|_|ap * Привет ! Вот алгоритм натягивания рисунка на шар. Для просмотра работы проги 3Der следует запускать её с параметром. Пример : 3der Image1.pic Код Asm файла не оптимизирован. Если кого-то интересует скорость или мин.обьем, напишите лучше сами прогу ! Алгоритм : R:=20; { Радиус } Коорд. центра экрана 320Х200 For i:=0 to 2*R do / \ For t:=0 to 2*R do MMM[i,t]:=getpset(160+i-R,100+t-R); { заносит в массив МММ картинку оригинальную (не растянутую ) } for i:=0 to 2*R do begin for t:=0 to 2*R do begin X:=i-r;Y:=t-r; { X от -R до R ,и Y от -R до R } if (X*X+Y*Y)<=(R*R) then begin Z:=round(sqrt(R*R-X*X-Y*Y)); X1:=round((X*R)/(Z+R)); Y1:=round((Y*R)/(Z+R)); pset(160+X,100+Y,MMM[X1+R,Y1+R]); end; end; end; ШАР (X,Y,Z) --|-- / *_/ | \_ /|\ | \ / | \ | \ -----+--\--+--------+--- Экран (X1,Y1,0) \ | / \ | / \| / |/ * (0,0,-R) /Orel 2:5027/12.71/ Mashihin Aleksey Present