AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi 3D Matrix darstellen
Thema durchsuchen
Ansicht
Themen-Optionen

3D Matrix darstellen

Ein Thema von runger · begonnen am 27. Nov 2005 · letzter Beitrag vom 29. Nov 2005
 
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#12

Re: 3D Matrix darstellen

  Alt 27. Nov 2005, 15:51
Das ganze nennt sich "Heightmap". und die darstellung ist eigentlich ganz einfach. hier mal der OpenGL-Teil für die Displayliste:

Delphi-Quellcode:
type Single2dArray = array of array of single;

function BuildDL(heightmap: Single2dArray; scalexy,scalez:single): integer;
var i,k,t:integer;
begin
result := glGenLists(1); //eine DL, bitte!

glNewlist(result, GL_COMPILE); //jetzt gehts los!
  t := round((length(heightmap) div 2) * scalexy);
  gltranslatef(-t,-t,0); // In die Mitte verschieben
  glbegin(gl_triangles);
  glcolor3f(255,0,0);
  for i:=1 to length(heightmap)-2 do // ich greife auch auf i-1 und i+1 zu!
    for k := 1 to length(heightmap[i])-2 do // ich greife auch auf k-1 und k+1 zu!
      begin
        //erstes dreieck
        glVertex3f(i * scalexy, k * scalexy, heightmap[i,k] * scalez);
        glVertex3f((i-1) * scalexy, (k) * scalexy, heightmap[i-1,k] * scalez);
        glVertex3f(i * scalexy, (k+1) * scalexy, heightmap[i,k+1] * scalez);
        //zweites dreieck
        glVertex3f((i-1) * scalexy, k * scalexy, heightmap[i-1,k] * scalez);
        glVertex3f((i-1) * scalexy, (k-1) * scalexy, heightmap[i-1,k-1] * scalez);
        glVertex3f((i+1) * scalexy, (k+1) * scalexy, heightmap[i+1,k+1] * scalez);
      end;
  glend;
  glcolor3f(255,255,255);
glEndList;
end;
hier wird immer ein quad, bestehend aus zwei dreiecken gerendert.

durch glCallist() mit dem rückgabewert der funktion lässt sich das dann auch flott rendern.

es gibt noch die interessante funktion glpolygonmode(), mit der man den gittermodus ein-/auschalten kann.

[edit=Luckie]Auf Wunsch Code ausgetuascht. Mfg, Luckie[/edit]
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz