ещё неброльшая оптимизация в MIDletPascal, дальше только реализация алгоритма в java. ....ну так как? какие у кого идеи? у меня сейчас логику делать - нету времени...
procedure drawMap;
var {вывод видимой проекции на экран}
px,py,dx,dy,k,y1,y2,depth,i,h:integer;
begin
//h:=map[(y div 1024) and 255, (x div 1024) and 255]+10;
for i:=8 to 8+sw do
begin
px:=x;
py:=y;
k:=(angle+1960+i) and 2047;//рисовать проекцию слева и справа от центрального угла
dy:=sintab[k];
dx:=costab[k];
y2:=sh;
for depth:=1 to 60{#1} do
begin
px:=px+dx;
py:=py+dy;
k:=map[(py div 1024) and 255, (px div 1024) and 255];
y1:=(((265{#2}-k)*8{#3}) div depth)+10{#4}; //constant #2 = (#1/#3)+2+h, h=255; #4 - place for the sky
if (y1<y2) then //вертикальная линия цветом "k" от "y1" до "y2" где "i"="x"
begin
setColor(cr[k],cg[k],cb[k]);
drawLine(i,y1,i,y2);
y2:=y1;
if y2<=0 then break; //выход если достигли границы экрана, дальше рисовать не имеет смысла
end;
end;
//if y2>0 then begin setColor(0,0,0); drawLine(i,0,i,y2); end; //fills in a background
end;
end;
p.s. Если придумать хорошую логику, и переделать в java, будет приемлемая скорость, даже для телефонов Motorola e398,v3,v3i и д.р.