Главная страница
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.025 c
15-1188140037
leonidus
2007-08-26 18:53
2007.09.30
Разыскивается Янис Прасоль


15-1187287439
pasha_golub
2007-08-16 22:03
2007.09.30
sopcast


2-1189071272
малой
2007-09-06 13:34
2007.09.30
FloatToInteger


3-1180421495
MZ
2007-05-29 10:51
2007.09.30
непонятки с Null в хранимых процедурах FireBird


15-1188802178
@!!ex
2007-09-03 10:49
2007.09.30
Преподавание религиозных предметов.