Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Logik-Problem (glscene) (https://www.delphipraxis.net/5932-logik-problem-glscene.html)

Alexander 23. Jun 2003 18:53


Logik-Problem (glscene)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich zerbreche mir gerade den Kopf darüber wie ich folgendes machen kann. Eigentlich ist auch schon so gut wie alles fertig: ein einfaches Ionengitter.
Also derzeit wird ein 3d-Ionengitter gezeichnet. Nun will ich Kation und Anion durch Farben erkennbar machen. (ein Anion ist also in "alllen Ebenen" nur von Kationen umgeben und umgekehrt.)
Dabei liegt mein Problem. Das Färben habe ich jetzt dank tommie-lie hinbekommen. Doch färbt er in einer falschen Reihenfolge (kommt also nicht hin, dass Anion nur von Kationen umgeben sind und umgekehrt)
Also hier der Source:
Delphi-Quellcode:
procedure Tmodell.FormShow(Sender: TObject);
var
 Sphere_array : ARRAY OF TSphere;
 i, x, y, z : Integer;
 koordinaten : TGLCoordinates;
begin
  for z:=0 to settings.SpinEdit2.Value -1 do
   begin
     if (z >= 1) then
      koordinaten.Z := Z * 3;
      koordinaten.X := 0;
      koordinaten.Y := 0;
     SetLength(Sphere_array, Z+1);
     Sphere_array[Z] := TSphere(DummyCube1.AddNewChild(TSphere));
//hier sollen die Kugeln der x-Achse gefärbt werden
    if (z mod 2) = 0 then
      sphere_array[z].Material := GLMaterialLibrary1.Materials.Items[1].Material
    else
      sphere_array[z].Material := GLMaterialLibrary1.Materials.Items[0].Material;
     Sphere_array[Z].Radius := 1;
     Sphere_array[Z].Position.X := koordinaten.X;
     Sphere_array[Z].Position.Y := koordinaten.Y;
     Sphere_array[Z].Position.Z := koordinaten.Z;

    for y:=0 to settings.SpinEdit2.Value -1 do
     begin
       if (y >= 1) then
        koordinaten.Y := koordinaten.Y + 3;
        koordinaten.X := 0;
       SetLength(Sphere_array, y+1);
       Sphere_array[y] := TSphere(DummyCube1.AddNewChild(TSphere));
//hier sollen die Kugeln der y-Achse gefärbt werden
    if (y mod 2) = 0 then
      sphere_array[y].Material := GLMaterialLibrary1.Materials.Items[0].Material
    else
      sphere_array[y].Material := GLMaterialLibrary1.Materials.Items[1].Material;
       Sphere_array[y].Radius := 1;
       Sphere_array[y].Position.X := koordinaten.X;
       Sphere_array[y].Position.Y := koordinaten.Y;
       Sphere_array[y].Position.Z := koordinaten.Z;

       for x:=0 to settings.SpinEdit1.Value -1 do
        begin
         if (x >= 1) then
          koordinaten.X := koordinaten.X + 3;
         SetLength(Sphere_array, x+1);
         Sphere_array[x] := TSphere(DummyCube1.AddNewChild(TSphere));
//hier sollen die Kugeln der x-Achse gefärbt werden
    if (x mod 2) = 0 then
      sphere_array[x].Material := GLMaterialLibrary1.Materials.Items[1].Material
    else
      sphere_array[x].Material := GLMaterialLibrary1.Materials.Items[0].Material;
         Sphere_array[x].Radius := 1;
         Sphere_array[x].Position.X := koordinaten.X;
         Sphere_array[x].Position.Y := koordinaten.Y;
         Sphere_array[x].Position.Z := koordinaten.Z;
        end;
      end;
    end;
end;
Ich glaube ich gehe vollkommen falsch dran. Bei den Kommentaren liegen die falschen Stellen
Wäre toll, wenn ihr mir aus meiner Not helfen könntet. (brauche es für ein Chemie-Referat in Chemie)
PS: Zum Vorstellen meines Fehlers habe ich mal das Kompilat rangehängt. Nicht zu viele Kugeln auswählen ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 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