![]() |
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:
Ich glaube ich gehe vollkommen falsch dran. Bei den Kommentaren liegen die falschen Stellen
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; 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