Delphi-PRAXiS
Seite 10 von 11   « Erste     8910 11      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Mein kleiner mp3-Player... Updated 13.12.04 (https://www.delphipraxis.net/30460-mein-kleiner-mp3-player-updated-13-12-04-a.html)

Red_Dragon 15. Jan 2005 14:33

Re: Mein kleiner mp3-Player... Updated 13.12.04
 
Zitat:

Zitat von dizzy
Hmmm :gruebel: Hast du evtl. was im Code verändert? Bei mir klappt das nämlich. Poste doch mal die ganze Funktion in der die Zeile vorkommt (ich kann's grad nicht identifizieren ;)).

nope keine veränderung in der GFX datei die hab ich nicht angefast ;)

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;

dizzy 16. Jan 2005 05:31

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

Red_Dragon 16. Jan 2005 18:00

Re: Mein kleiner mp3-Player... Updated 13.12.04
 
Zitat:

Zitat von dizzy
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))

ne leider nicht ich arbeite selten (sogut wie nie) mit der deklarierung bmp ;) (weil ich ja meist ni irgendwas mit oberflächen hab^^)
tja bei dir klaglos bei mir hat er ein problem mit dem PixelFS :(

Zitat:

Zitat von dizzy
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

nischt gut na ja werd ich wohl nicht drum herum kommen :(

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?

dizzy 22. Jan 2005 17:21

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

Alexander 22. Jan 2005 17:51

Re: Mein kleiner mp3-Player... Updated 13.12.04
 
Danke noch mal ;)
Jetzt kann ich die Demo wunderbar kompilieren ;)

jfheins 23. Jan 2005 11:21

Re: Mein kleiner mp3-Player... Updated 13.12.04
 
Download: http://sourceforge.net/projects/graphics32

Red_Dragon 23. Jan 2005 16:29

Re: Mein kleiner mp3-Player... Updated 13.12.04
 
super jetzt klappts perfekt ;)

dizzy 23. Jan 2005 23:48

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*

Red_Dragon 28. Jan 2005 00:18

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:
  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;
FFFT[ind] := FFFTOld[ind]-0.001;
das rote ist die fehlerstelle

dizzy 28. Jan 2005 00:35

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.
Seite 10 von 11   « Erste     8910 11      

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