AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Metaballs (opengl) !?
Thema durchsuchen
Ansicht
Themen-Optionen

Metaballs (opengl) !?

Ein Thema von Dracoon · begonnen am 23. Apr 2010 · letzter Beitrag vom 25. Apr 2010
Antwort Antwort
Seite 1 von 2  1 2      
Dracoon

Registriert seit: 21. Dez 2006
11 Beiträge
 
#1

Metaballs (opengl) !?

  Alt 23. Apr 2010, 11:41
hallo,
ich möchte gerne in mein programm ein nettes about einbauen.
habe da bislang immer die jedi vorlagen für genommen, aber ich hab neulich ein kleines programm gefunden das ein richtig schönes about hatte.

hier mal ein screenshot davon.

http://img145.imageshack.us/img145/272/metaballs.png

meine frage ist nun ob mir jemand sagen könnte wie ich das ganze realisiere.
ich hab bereits ein wenig gegoogelt und bin dabei auf das hier gestossen

http://www.sulaco.co.za/opengl_project_metaballs.htm

jeddoch kann ich damit nicht wirklich viel anfangen =(
da das was ich haben möchte ganz anders aussieht, und ich drch den code in den src nicht ganz durchsteige.
wäre nett wenn da jemand helfen könnte.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#2

Re: Metaballs (opengl) !?

  Alt 23. Apr 2010, 12:01
http://de.wikipedia.org/wiki/Metaball

Die Formel ist bekannt, in 2D ist der Rechenaufwand für aktuelle Prozessoren auch nicht zu groß, so daß zum Test erst einmal auf Optimierung verzichtet werden kann.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Metaballs (opengl) !?

  Alt 23. Apr 2010, 12:01
Nimm ein TImage, leg es in deinen About-Dialog, papp da dieses Bild rein und fertig.

Tut mir leid, aber ich glaub viele verstehen nicht, was hier überhaupt gemeint ist ... für mich ist dieser Screeshot jedenfalls nur starres und unveränderliches Bild und ich kann bei bestem Willen nicht erkennen, was da jetzt sooo schön sein soll.
$2B or not $2B
  Mit Zitat antworten Zitat
Dracoon

Registriert seit: 21. Dez 2006
11 Beiträge
 
#4

Re: Metaballs (opengl) !?

  Alt 23. Apr 2010, 12:09
@ blup
thx aber da war ich schon, kann ich nich viel mit anfangen
hab von opengl nich so den plan =(

@ himitsu
solche comments kannst dir schenken..
wenn du den titel gelesen hättest dann solltest dur dir eigentlich denken können worum es mir geht.


ich hab dafür über google nur ne vorlage in ASm gefunden, und damit kann ich noch weniger anfangen
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#5

Re: Metaballs (opengl) !?

  Alt 23. Apr 2010, 16:37
Warum so unfreundlich, ich hab auch nicht ganz verstanden was du eigentlich erreichen willst.
Es gilt doch erst mal nur simpel die Formel umzusetzen.

Also hier ein extrem einfache Variante ohne Optimierung:
Delphi-Quellcode:
type
  TMetaball = record
    x: Double;
    y: Double;
    vx: Double;
    vy: Double;
  end;

var
  FMetaball: array of TMetaball;

procedure TForm1.BtnMetaballClick(Sender: TObject);
var
  xMax, yMax, i, n: Integer;
begin
  xMax := ImgMetaball.Width - 1;
  yMax := ImgMetaball.Height - 1;
  n := 5;
  SetLength(FMetaball, n);
  for i := 0 to n - 1 do
  begin
    FMetaball[i].x := Random(xMax + 1);
    FMetaball[i].y := Random(yMax + 1);
    {Richtung * Geschwindigkeit}
    FMetaball[i].vx := (Random(2) * 2 - 1) + (Random * 0.5 + 0.5);
    FMetaball[i].vy := (Random(2) * 2 - 1) + (Random * 0.5 + 0.5);
  end;
  {Rendern}
  RenderMetaball;
  TimerMetaball.Enabled := True;
end;

procedure TForm1.RenderMetaball;
var
  xMax, yMax,
  i, x, y: Integer;
  m, d: Double;
begin
  xMax := ImgMetaball.Width - 1;
  yMax := ImgMetaball.Height - 1;
  ImgMetaball.Picture := nil;
  ImgMetaball.Picture.Bitmap.SetSize(xMax + 1, yMax + 1);
  for y := 0 to yMax do
  begin
    for x := 0 to xMax do
    begin
      m := 0;
      for i := 0 to High(FMetaball) do
      begin
        d := sqr(x - FMetaball[i].x) + sqr(y - FMetaball[i].y);
        if d = 0 then
          m := m + 1
        else
          m := m + (1 / d);
      end;
      if m > 0.001 then
        ImgMetaball.Picture.Bitmap.Canvas.Pixels[x, y] := clBlack;
    end;
  end;
end;

procedure TForm1.TimerMetaballTimer(Sender: TObject);
var
  xMax, yMax,
  i: Integer;
begin
  {Metaball bewegen}
  xMax := ImgMetaball.Width - 1;
  yMax := ImgMetaball.Height - 1;
  for i := 0 to High(FMetaball) do
  begin
    with FMetaball[i] do
    begin
      x := x + vx;
      if x < 0 then
      begin
        x := 0;
        vx := Abs(vx);
      end
      else if x > xMax then
      begin
        x := xMax;
        vx := -Abs(vx);
      end;
      y := y + vy;
      if y < 0 then
      begin
        y := 0;
        vy := Abs(vy);
      end
      else if y > yMax then
      begin
        y := yMax;
        vy := -Abs(vy);
      end;
    end;
  end;
  {Rendern}
  RenderMetaball;
end;
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#6

Re: Metaballs (opengl) !?

  Alt 23. Apr 2010, 16:48
Nur so als kleiner Tipp:

Versuche lieber nicht, OpenGL dafür zu verwenden, wenn deine Anwendung ansonsten kein OpenGL nutzt.
Nur für einen About-Screen wäre die Initialisierung eines OpenGL-Rendercontext etwas, sagen wir mal, "übertrieben"
Ausserdem handelst du dir damit mehr Ärger als Nutzen ein, falls du dein Programm an andere verteilst, da du dann dein Programm von einer OpenGL-fähigen Grafikkarte abhängig machst (und es gibt leider noch viele PC's, die das nicht haben)

Das soll keine Kritik an deinem Vorhaben sein, sondern nur ein kleiner Hinweis, wenn das Ding wirklich nur für den About benutzt werden soll
Hat deine Anwendung eh schon OpenGL drin, ists egal

grüssle,

Fin
  Mit Zitat antworten Zitat
Dracoon

Registriert seit: 21. Dez 2006
11 Beiträge
 
#7

Re: Metaballs (opengl) !?

  Alt 23. Apr 2010, 17:43
thx blackfin
nein sie hat sonst kein opengl.
ich dachte das ich das dafür brauche, weil ich halt beim googeln immer wieder auf opengl foren oder webseiten hängen geblieben bin in denen es um opengl geht.
  Mit Zitat antworten Zitat
Dracoon

Registriert seit: 21. Dez 2006
11 Beiträge
 
#8

Re: Metaballs (opengl) !?

  Alt 23. Apr 2010, 18:17
hab mal das asm beispiel in den anhang gepackt.
habs auf virustotal überprüfen lassen, hier der link.
http://www.virustotal.com/de/analisi...450-1272039166

das möchte ich erreichen.
Angehängte Dateien
Dateityp: exe about_585.exe (57,5 KB, 25x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#9

Re: Metaballs (opengl) !?

  Alt 23. Apr 2010, 18:25
Ja, und woher ist das ASM-Beispiel ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Dracoon

Registriert seit: 21. Dez 2006
11 Beiträge
 
#10

Re: Metaballs (opengl) !?

  Alt 23. Apr 2010, 18:29
Zitat von Dracoon:
ich hab dafür über google nur ne vorlage in ASm gefunden, und damit kann ich noch weniger anfangen
weiss leider nicht mehr aus welchem forum -.-"
aber in dem thread gings halt um so sachen und da hatt jemand n bild und den src gepostet davon.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz