![]() |
Tunneleffekt in Delphi
Irgendwie hatte ich mal lust in Delphi was Grafisches zu realisieren und hab mit nem "Tunneleffekt" angefangen, also das es aussieht als würde man durch einen Tunnel fliegen/fahren/laufen.
Das hier kam raus:
Delphi-Quellcode:
Ich wollte nur fragen ob ich es a) noch optimieren kann, b) ob es andere gute Ansätze gäbe (DelphiX hab ich aber keine Lust zu, viel zu Platformspeziefisch), und c) ob jemand ne Idee hat ob es möglich ist Kurven oder sowas einzubauen das es mehr Achterbahnmäßig aussieht.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Timer1: TTimer; Box: TPaintBox; { 600x400 !!} procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Y: Integer; buf: TBitmap; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); var X: Integer; begin Y := Y + 5; X := Y*3 DIV 2; with buf.Canvas do begin Pen.Color := clWhite; Rectangle(0,0,600,400); Pen.Color := clBlack; Rectangle(300-X,200-Y,300+X,200+Y); { Second Box } if (Y-100) > 0 then begin X := (Y-100)*3 DIV 2; Rectangle(300-X,200-(Y-100),300+X,200+(Y-100)); end; { /Second Box } MoveTo(0,0); LineTo(600,400); MoveTo(600,0); LineTo(0,400); end; if Y > 200 then Y := 100; Box.Canvas.Draw(0,0,Buf); end; procedure TForm1.FormCreate(Sender: TObject); begin Y := 100; buf := Tbitmap.Create; buf.Height := 400; buf.Width := 600; end; end. |
Re: Tunneleffekt in Delphi
Zitat:
Das wären ein paar Optimierungen. Der Geschwindigkeitsvorteil ist nicht so deutlich spürbar, aber er ist vorhanden, wenn auch klein. Du hast nicht beachtet, dass gleiche Entfernungen in der Ferne kleiner sind als, wenn man direkt davor steht: So dürften sich die kleinen Rechtecke nicht so schnell vergrößern wie die großen. Außerdem sollten die Abstände zwischen den Rechtecken größer sein, wenn sie sich direkt vorm eigenen Auge befinden. |
Re: Tunneleffekt in Delphi
@Cöster: Das sind unnötige 'Optimierungen' die der Compiler eh selbst vornimmt. Wichtiger ist lesbarer Code.
Soweit sieht es sinnvoll aus, wobei das Konstrukt 'a*b div c' generell (also nicht unbedingt in diesem Fall) in 'MulDiv(a,b,c)' angepasst werden sollte. Diese Funktion vermeidet einen 32-bit Überlauf im Zwischenergebnis 'a*b'. Schneller wird das aber nicht, nur sicherer. Wenn Du aber (so wie hier) genau weisst, das a*b stehts < 2^32, dann verwende die einfache Schreibweise. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:40 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