Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.30;
Скачать: CL | DM;

Вниз

Карта высот   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2007.09.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.022 c
8-1165830501
T54
2006-12-11 12:48
2007.09.30
Захват видео из области экрана монитора


15-1188495169
Kolan
2007-08-30 21:32
2007.09.30
Что за кодировка: «РЁСЂСЌРє Третий» ?


1-1184934235
Mitrofan
2007-07-20 16:23
2007.09.30
Отладка нитей в Delphi


2-1188981955
Bast
2007-09-05 12:45
2007.09.30
idsmtp и idpop3


2-1188719155
THandle
2007-09-02 11:45
2007.09.30
Проблема с чтением текста из TFileStream