Форум: "Media";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
ВнизКарта высот Найти похожие ветки
← →
S1lent (2006-12-26 19:06) [0]Здоровенько булы, уважаемые мастера! Не подскажите как рисовать в Delphi карты высот или на худой конец графики от футкций двух переменных?
← →
ors_archangel © (2006-12-26 20:05) [1]Не совсем понял, что ты имеешь в виду под картами высот, просто 3д-поверхность, а может ты землю и горы хочешь? Если первое или что-то подобное, то может быть:
const
planesize = 64;
segsz = 1; // visual size factor
var
vpWidth,vpHeight: int;
i,j: int;
v1,v2,v3: TVertex;
n: int;
t: dword;
r: single;
plane: array[0..planesize-1,0..planesize-1] of single;
x,y,z,w: single;
a,b,c: TVertex;
norm: TVector;
begin
{ Begin Scene }
vpWidth := VisDisplay.ClientWidth;
vpHeight := VisDisplay.ClientHeight;
glViewport(0,0,vpWidth,vpHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(fov,vpWidth/vpHeight,znear,zfar);//Уст. Клиппинг
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
{ Render Scene }
glTranslate(0,0,-50);
t := GetTickCount;
glRotate(45, 1,0,0);
glRotate(-45, 0,1,0);
glRotate((t div 100), 0,1,0);
for i := 0 to planesize-1 do
for j := 0 to planesize-1 do
plane[i,j] := каким-то образом f(i,j)
glColor3f(0,1,0);
glPushMatrix;
glTranslate(-segsz*planesize/2,0,segsz*planesize/2);
for j:=0 to planesize-2 do
for i:=0 to planesize-2 do begin
glBegin(GL_TRIANGLES);
a := Vertex(i*segsz,plane[j,i],-j*segsz);
b := Vertex(i*segsz,plane[j+1,i],-j*segsz-segsz);
c := Vertex(i*segsz+segsz,plane[j+1,i+1],-j*segsz-segsz);
norm := Normal(a,b,c);
glNormal3fv(@norm);
glVertex3fv(@a); glVertex3fv(@b); glVertex3fv(@c);
a := Vertex(i*segsz,f(j,i,-j*segsz);
b := Vertex(i*segsz+segsz,plane[j+1,i+1],-j*segsz-segsz);
c := Vertex(i*segsz+segsz,plane[j,i+1],-j*segsz);
norm := Normal(a,b,c);
glNormal3fv(@norm);
glVertex3fv(@a); glVertex3fv(@b); glVertex3fv(@c);
glEnd;
end;
glPopMatrix;
{ End Scene }
glFlush;
SwapBuffers(GLDC);
end;
хотя мне этот код не оч нравится, тут перед прорисовкой создаётся временный 2д-массив plane (можно сказать, карта высот), хотя может быть он у тебя уже есть, тогда ладно
← →
SamBrook © (2006-12-27 00:37) [2]
> Здоровенько булы, уважаемые мастера! Не подскажите как рисовать
> в Delphi карты высот или на худой конец графики от футкций
> двух переменных?
использовать TeeChart Pro
← →
ors_archangel © (2006-12-27 01:28) [3]Вот как бы мне нарисовать Nd поверхность.......
Нужда - мать изобретения (Индийская мудрость)
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.049 c