Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Lissajous-Figuren (https://www.delphipraxis.net/70715-lissajous-figuren.html)

turboPASCAL 4. Jun 2006 10:38

Re: Lissajous-Figuren
 
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:

Zitat von Der_Ventilator
Wenn dir das was hilft, ich hab vor 2 Jahren (12. Klasse Physik) auch mal so ein Programm geschrieben...

Zitat:

Zitat von Luckie
Und hier meine 8 KB Version. :mrgreen:

Zitat:

Zitat von Xenonz
Hmm nachdem mein Programm vorhin als ich geantwortet hatte schon fast fertig
war, hab ich nicht mehr hier geschaut...

Naja hier ist mein fertiges Programm

Und das kann sich sehen lassen. :thumb:


Das soll es ja auch als 3D geben oder ? :mrgreen:

Luckie 4. Jun 2006 13:49

Re: Lissajous-Figuren
 
Zitat:

Zitat von turboPASCAL
Das soll es ja auch als 3D geben oder ? :mrgreen:

Wenn dann bitte mit Source. ;)

turboPASCAL 4. Jun 2006 14:05

Re: Lissajous-Figuren
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von turboPASCAL
Das soll es ja auch als 3D geben oder ? :mrgreen:

Wenn dann bitte mit Source. ;)

Ist leider kein nonVCL und dann noch mit GLScene.
Im Grunde der selbe Code wie bei Luckie, nur noch ein Sinus in die "Z"-Richtung.
Den Sourcecode pack ich noch bei.

Luckie 5. Jun 2006 22:09

Re: Lissajous-Figuren
 
Und wie hast du das sinusz beim Line zeichnen mit einbezogen:

Delphi-Quellcode:
  sinusx := trunc(sin(Pi * i * a / 180) * 180);
  sinusy := trunc(-sin(Pi * i * b / 180) * 180);
  LineTo(hdcMem, sinusx + (WINDOWWIDTH div 2), sinusy + (WINDOWHEIGHT div 2));

turboPASCAL 5. Jun 2006 22:17

Re: Lissajous-Figuren
 
Delphi-Quellcode:
procedure TForm1.DrawLissajous(x, y, z: Single);
var
  sinX, sinY, sinZ, Pi_ : single;
  step: Integer;
begin
  GLLines1.Nodes.Clear;

  for step := 0 to 360 do
  begin
    sinX := sin(Pi * step * x / 180) * 180;
    sinY := -sin(Pi * step * y / 180) * 180;
    sinZ := sin(Pi * step * z / 180) * 180;

    GLLines1.Nodes.Add.AsAffineVector :=
      AffineVectorMake(sinX / 100, sinY / 100, sinZ / 100);
   
   if step mod 10 = 0 then // a little Speed
      Application.ProcessMessages;

    Label7.Caption := Format('X: %8.2f; Y: %8.2f; Z: %8.2f', [sinX, sinY, sinZ]);

    if CancelCalculate then Break;
  end;

  GLSceneViewer1.Refresh;
end;
So.

Einfach ein Sinus in die z-Richtung. Ob das korrekt ist bin ich noch am nachforschen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:16 Uhr.
Seite 2 von 2     12   

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