Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
15-1188915329
savyhinst
2007-09-04 18:15
2007.09.30
Лазарус


3-1179905312
Dush
2007-05-23 11:28
2007.09.30
дублирование записи


15-1188994278
Layner
2007-09-05 16:11
2007.09.30
Ряд 17,19,х,20,15, что подставить вместо x?


2-1188546595
VRSB
2007-08-31 11:49
2007.09.30
Слушатель порта


15-1188540456
ZeroDivide
2007-08-31 10:07
2007.09.30
Умственны способности депутата... какими они должны быть?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский