* 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
|