Thema: Delphi Logik-Problem (glscene)

Einzelnen Beitrag anzeigen

Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#1

Logik-Problem (glscene)

  Alt 23. Jun 2003, 18:53
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
Angehängte Dateien
Dateityp: zip i-gitter.zip (330,2 KB, 16x aufgerufen)
Alexander
  Mit Zitat antworten Zitat