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