Autor Beitrag
webmaker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: Mo 23.06.03 20:29 
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:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
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 >= 1then 
      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 >= 1then 
        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 >= 1then 
          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 Problems habe ich mal das Kompilat hochgeladen. Nicht zu viele Kugeln auswählen klick!

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.

_________________
.::Wissen ist Macht, nichts wissen macht nichts::.