Hier ist nochmal der "richtige" code (ohne Tippfehler
)
Delphi-Quellcode:
procedure TForm1.DrawModel(Canvas:TCanvas;AtomNr:Real;
Rad:integer);
var x0,y0,n,k:integer;
a,sa:Real;
begin
x0:=Form1.ClientWidth
div 2;
{Mitte der Form finden}
y0:=Form1.ClientHeight
div 2;
a:=AtomNr / 2;
{Formel für bestimmung von Elektronen pro Schale: 2*n^2}
sa:=sqrt(a);
{Gleichung aufstellen: nach n auflösen; ges.:n=Anzahl SchAle}
n:=round(sa);
{Atom Nummer=2*n^2 | /2}
{<=> Atom Nummer/2=n^2 | Wurzel}
{<=> Wurzel(Atom Nummer/2) = n}
Canvas.Ellipse(x0-
Rad,y0-
Rad,x0+
Rad,y0+
Rad);
{Für den (Atom)Kern}
for k:=1
to n
do {n gefunden}
begin
Canvas.Ellipse(x0-(
Rad*k),y0-(
Rad*k),x0+(
Rad*k),y0+(
Rad*k));
{Kreise zeichen mit gleichem Abstand}
end;
end;
abgesehen von der Formel, weiss ich, wegen den rundungen
bei der for-to-do Schleife müsste eigentl. k:=2 to n, weil die zeile vor der schleife den Atomkern zeichnet. wenn k:=1 und
Rad*k =
Rad, dann haut das nicht wirklich hin. Toll ....2. Problem
MfG