![]() |
Re: Mein kleiner mp3-Player... Updated 13.12.04
Zitat:
Delphi-Quellcode:
procedure TDotSphere.DrawSphere(out bmp: TBitmap32; Source: TBassplayer; color: TColor32; const xRot, yRot, zRot: Double);
var C: TVector; i: Integer; sinX, cosX, sinY, cosY, sinZ, cosZ : Double; h: Integer; sx, sy, sz: Double; fact: Double; ind: Integer; d: Double; begin FFFT := Source.getfftdatalong; C.x := bmp.Width/2; C.y := bmp.Height/2; C.z := 0; sinX := sin(xRot); sinY := sin(yRot); sinZ := sin(zRot); cosX := cos(xRot); cosY := cos(yRot); cosZ := cos(zRot); d := 16*(FMaxRad-FBaseRad); h := (Length(FDrawDots) div 2)-1; for i := 0 to h do begin ind := 2*i+16; if FFFT[ind] < FFFTOld[ind] then FFFT[ind] := FFFTOld[ind]-0.001; fact := FFFT[ind]*d; FDrawDots[i].x := FDots[i].x + (FDots[i].x/FBaseRad)*fact; FDrawDots[i].y := FDots[i].y + (FDots[i].y/FBaseRad)*fact; FDrawDots[i].z := FDots[i].z + (FDots[i].z/FBaseRad)*fact; end; for i := h+1 to Length(FDrawDots)-1 do begin ind := 2*(i-h+1)+17; if FFFT[ind] < FFFTOld[ind] then FFFT[ind] := FFFTOld[ind]-0.001; fact := FFFT[ind]*d; FDrawDots[i].x := FDots[i].x + (FDots[i].x/FBaseRad)*fact; FDrawDots[i].y := FDots[i].y + (FDots[i].y/FBaseRad)*fact; FDrawDots[i].z := FDots[i].z + (FDots[i].z/FBaseRad)*fact; end; for i := 0 to Length(FDrawDots)-1 do begin sx := FDrawDots[i].x; sy := FDrawDots[i].y; sz := FDrawDots[i].z; FDrawDots[i].x := sx*( cosY*cosZ) - sy*(cosY*sinZ) + sz*(sinY); FDrawDots[i].y := sx*( sinX*sinY*cosZ+cosX*sinZ) - sy*(sinX*sinY*sinZ-cosX*cosZ) - sz*(sinX*cosY); FDrawDots[i].z := sx*(-cosX*sinY*cosZ+sinX*sinZ) + sy*(cosX*sinY*sinZ+sinX*cosZ) + sz*(cosX*cosY); FDrawDots[i].color := Lighten(color, trunc(FDrawDots[i].z*3)); bmp.PixelFS[FDrawDots[i].x+C.x, FDrawDots[i].y+C.y] := FDrawDots[i].color; end; Move(FFFT[0], FFFTOld[0], Length(FFFT)*SizeOf(Float)); end; |
Re: Mein kleiner mp3-Player... Updated 13.12.04
Hmmm, kann keinen Fehler sehen. Das Teil kompiliert bei mir klaglos :gruebel:
Hast du evtl. wo anders noch eine globale Variable mit dem Namen "bmp" deklariert? Zwar dürfte es trotzdem keine Probleme geben, da die Unit eigentlich vorzugsweise die eigenen nehmen sollte, und auch keine anderen Units used, aber man weiss ja nie :). (Ja, das Teil ist schrecklich OOP-Unkonform... ich weiss ich weiss 8)) Ansonsten bin ich ratlos. Im Zweifelsfall einfach mal ein ganz neues Projekt anlegen, und per Copy&Paste alles kopieren, und mal kompilieren. Vllt. hilft das ja. Gruss, Fabian |
Re: Mein kleiner mp3-Player... Updated 13.12.04
Zitat:
tja bei dir klaglos bei mir hat er ein problem mit dem PixelFS :( Zitat:
ach eine frage er spielt dir ganze zeit drauf an das "PixelFS" nicht deklariert wurde... muss die das? denke das ist ein ganz normaler befehl an die TBitmap oder irre ich mich stark? |
Re: Mein kleiner mp3-Player... Updated 13.12.04
Liste der Anhänge anzeigen (Anzahl: 1)
Durch den Hinweis von Alexander bin ich auf des Rätsels Lösungs gestoßen. Ihr habt die Version 1.5(.1) der G32-Lib, ich hingegen habe irgendwo her die Version 1.6! Den Downloadlink finde ich allerdings auch nicht mehr.
Aber so wie ich die Lizenz verstanden habe, ist es okay das Archiv weiterzugeben. Von daher hänge ich die Version 1.6 hier mal an. Falls das nicht gewünscht oder gar nicht erlaubt ist, dann bitte eine kurze Nachricht an mich - ich (oder ein Mod ;)) entferne(n) das dann wieder. btw: Was macht TBitmap.PixelFS? Es bietet die Möglichkeit einen Pixel auf Float-Koordinaten zu setzen, und das nötige Antialiasing macht die G32. Eine Funktion die ich unter keinen Umständen missen möchte! :) Gruss, Fabian |
Re: Mein kleiner mp3-Player... Updated 13.12.04
Danke noch mal ;)
Jetzt kann ich die Demo wunderbar kompilieren ;) |
Re: Mein kleiner mp3-Player... Updated 13.12.04
|
Re: Mein kleiner mp3-Player... Updated 13.12.04
super jetzt klappts perfekt ;)
|
Re: Mein kleiner mp3-Player... Updated 13.12.04
:wall: stimmt ja, die sind nach SourceForge gewechselt... Ich vergess es doch immer wieder.
Und: :shock: es gibt ja schon 1.7! *draufstürz* |
Re: Mein kleiner mp3-Player... Updated 13.12.04
hmmm aber beim 1.7er klappt das irgendwie net so mit der sphere... nach dem ablaufen des liedes wird sie nicht "zerstört" (nenn ich das jetzt mal) ich vermute das liegt am 1.7er... da ich den gfx code nicht verändert hab...
könnte man lösen in dem man die sphere genau eine sekunde vor ende des liedes auf false setzt und dann wieder in die normalstellung (entwäder true oder false) das wäre die wohl schnellste methode das zu lösen (aber wohl eine der undschönsten^^) um das mal genauer einzukreisen:
Delphi-Quellcode:
FFFT[ind] := FFFTOld[ind]-0.001;
begin
ind := 2*i+16; if FFFT[ind] < FFFTOld[ind] then FFFT[ind] := FFFTOld[ind]-0.001; fact := FFFT[ind]*d; FDrawDots[i].x := FDots[i].x + (FDots[i].x/FBaseRad)*fact; FDrawDots[i].y := FDots[i].y + (FDots[i].y/FBaseRad)*fact; FDrawDots[i].z := FDots[i].z + (FDots[i].z/FBaseRad)*fact; end; das rote ist die fehlerstelle |
Re: Mein kleiner mp3-Player... Updated 13.12.04
Das gibts doch nicht. Alexander hatte mir genau das selbe Problem per PN geschildert, und ich konnte es binher nicht nachvollziehen. Womit es definitiv problematisch werden kann sind Mono-Files.
Aber ich habe das Teil bisher noch nicht mit der 1.7er G32 getestet! Eventuell liegt's ja tatsächlich daran... Aber das wäre schon nen Hammer, weil eigentlich hat besagte Stelle im ersten Moment nichts mit der G32 zu tun. :gruebel: Das ist mir absolut suspekt - zumal ich diesen Fehler NIE hatte. Und ich habe wirklich ausgiebig getestet. Da aber ihr beide die 1.7er benutzt, und bisher die einzigen wart mit diesem Fehler, hab ich schon schlimmere Befürchtungen :pale: Das wird eine Debug-Orgie. Danke euch für die Hinweise, ich werde dem auch mal nachgehen. Sowas blödes :) Gruss, Fabian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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 by Thomas Breitkreuz