Ĺadny brzuch
Witam
Napisalem w DelphiX program ktory buduje modele atomow jednak tylko w 2D i przy wiekszych jadrach wyglada to nieciekawie czy ma ktos pomysl na algorytm
ktory przedstawi to w 3D.
to jest kod praogramu
procedure TForm1.pierwiastek(pierwiastek:string); var iniFile : TIniFile; ine, ip : integer; r : integer; k, l, m, n, o, p, q, u : integer; begin iniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'pierwiastki.ini'); r := iniFile.ReadInteger(pierwiastek,'r',50); Form1.DXDraw1.Surface.Fill(0); //protony for ip := 1 to High(protony) do begin protony[ip].X := cx - iniFile.ReadInteger(pierwiastek,'px' + IntToStr(ip),1000); protony[ip].Y := cy - iniFile.ReadInteger(pierwiastek,'py' + IntToStr(ip),1000); end; //neutrony for ine := 1 to High(neutrony) do begin neutrony[ine].X := cx - iniFile.ReadInteger(pierwiastek,'nx' + IntToStr(ine),1000); neutrony[ine].Y := cy - iniFile.ReadInteger(pierwiastek,'ny' + IntToStr(ine),1000); end; //elektrony //ukryj for u := 1 to High(elektrony) do begin elektrony[u].X := -400; elektrony[u].Y := -400; end; //1 powłoka for k := 1 to iniFile.ReadInteger(pierwiastek,'ek',0) do begin elektrony[k].X := cx - 5 + r * sin(Pi * k + alfa); elektrony[k].Y := cy - 5 + r * cos(Pi * k + alfa); end; //2 powłoka for l := 1 to iniFile.ReadInteger(pierwiastek,'el',0) do begin elektrony[l].X := cx - 5 + (r + 30) * sin(Pi * l + - alfa); elektrony[l].Y := cy - 5 + (r + 30) * cos(Pi * l + - alfa); end; //3 powłoka for m := 1 to iniFile.ReadInteger(pierwiastek,'em',0) do begin elektrony[m].X := cx - 5 + (r + 60) * sin(Pi * m + alfa); elektrony[m].Y := cy - 5 + (r + 60) * cos(Pi * m + alfa); end; //4 powłoka for n := 1 to iniFile.ReadInteger(pierwiastek,'en',0) do begin elektrony[n].X := cx - 5 + (r + 90) * sin(Pi * n + - alfa); elektrony[n].Y := cy - 5 + (r + 90) * cos(Pi * n + - alfa); end; //5 powłoka for o := 1 to iniFile.ReadInteger(pierwiastek,'eo',0) do begin elektrony[o].X := cx - 5 + (r + 120) * sin(Pi * o + alfa); elektrony[o].Y := cy - 5 + (r + 120) * cos(Pi * o + alfa); end; //6 powłoka for p := 1 to iniFile.ReadInteger(pierwiastek,'ep',0) do begin elektrony[p].X := cx - 5 + (r + 150) * sin(Pi * p + - alfa); elektrony[p].Y := cy - 5 + (r + 150) * cos(Pi * p + - alfa); end; //7 powłoka for q := 1 to iniFile.ReadInteger(pierwiastek,'eq',0) do begin elektrony[q].X := cx - 5 + (r + 180) * sin(Pi * q + alfa); elektrony[q].Y := cy - 5 + (r + 180) * cos(Pi * q + alfa); end; alfa := alfa + beta; Form1.DXSpriteEngine1.Draw; Form1.DXDraw1.Surface.Canvas.Release; Form1.DXDraw1.Flip; end;
a to plik ini dla wodoru i helu
[Wodor] r=50 px1=10 py1=10 ek=1 [Hel] r=50 px1=20 py1=10 px2=0 py2=10 nx1=10 ny1=20 nx2=10 ny2=0 ek=2
prosze o pomoc bo to jest dla mnie bardzo wazne
Hmm... bawiles sie kiedys w 3d?:P Jak nie to tworz kule w GLUT - b. latwa obsluga ;)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Napisalem w DelphiX program ktory buduje modele atomow jednak tylko w 2D i przy wiekszych jadrach wyglada to nieciekawie czy ma ktos pomysl na algorytm
ktory przedstawi to w 3D.
to jest kod praogramu
procedure TForm1.pierwiastek(pierwiastek:string); var iniFile : TIniFile; ine, ip : integer; r : integer; k, l, m, n, o, p, q, u : integer; begin iniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'pierwiastki.ini'); r := iniFile.ReadInteger(pierwiastek,'r',50); Form1.DXDraw1.Surface.Fill(0); //protony for ip := 1 to High(protony) do begin protony[ip].X := cx - iniFile.ReadInteger(pierwiastek,'px' + IntToStr(ip),1000); protony[ip].Y := cy - iniFile.ReadInteger(pierwiastek,'py' + IntToStr(ip),1000); end; //neutrony for ine := 1 to High(neutrony) do begin neutrony[ine].X := cx - iniFile.ReadInteger(pierwiastek,'nx' + IntToStr(ine),1000); neutrony[ine].Y := cy - iniFile.ReadInteger(pierwiastek,'ny' + IntToStr(ine),1000); end; //elektrony //ukryj for u := 1 to High(elektrony) do begin elektrony[u].X := -400; elektrony[u].Y := -400; end; //1 powłoka for k := 1 to iniFile.ReadInteger(pierwiastek,'ek',0) do begin elektrony[k].X := cx - 5 + r * sin(Pi * k + alfa); elektrony[k].Y := cy - 5 + r * cos(Pi * k + alfa); end; //2 powłoka for l := 1 to iniFile.ReadInteger(pierwiastek,'el',0) do begin elektrony[l].X := cx - 5 + (r + 30) * sin(Pi * l + - alfa); elektrony[l].Y := cy - 5 + (r + 30) * cos(Pi * l + - alfa); end; //3 powłoka for m := 1 to iniFile.ReadInteger(pierwiastek,'em',0) do begin elektrony[m].X := cx - 5 + (r + 60) * sin(Pi * m + alfa); elektrony[m].Y := cy - 5 + (r + 60) * cos(Pi * m + alfa); end; //4 powłoka for n := 1 to iniFile.ReadInteger(pierwiastek,'en',0) do begin elektrony[n].X := cx - 5 + (r + 90) * sin(Pi * n + - alfa); elektrony[n].Y := cy - 5 + (r + 90) * cos(Pi * n + - alfa); end; //5 powłoka for o := 1 to iniFile.ReadInteger(pierwiastek,'eo',0) do begin elektrony[o].X := cx - 5 + (r + 120) * sin(Pi * o + alfa); elektrony[o].Y := cy - 5 + (r + 120) * cos(Pi * o + alfa); end; //6 powłoka for p := 1 to iniFile.ReadInteger(pierwiastek,'ep',0) do begin elektrony[p].X := cx - 5 + (r + 150) * sin(Pi * p + - alfa); elektrony[p].Y := cy - 5 + (r + 150) * cos(Pi * p + - alfa); end; //7 powłoka for q := 1 to iniFile.ReadInteger(pierwiastek,'eq',0) do begin elektrony[q].X := cx - 5 + (r + 180) * sin(Pi * q + alfa); elektrony[q].Y := cy - 5 + (r + 180) * cos(Pi * q + alfa); end; alfa := alfa + beta; Form1.DXSpriteEngine1.Draw; Form1.DXDraw1.Surface.Canvas.Release; Form1.DXDraw1.Flip; end;
a to plik ini dla wodoru i helu
[Wodor] r=50 px1=10 py1=10 ek=1 [Hel] r=50 px1=20 py1=10 px2=0 py2=10 nx1=10 ny1=20 nx2=10 ny2=0 ek=2
prosze o pomoc bo to jest dla mnie bardzo wazne
Hmm... bawiles sie kiedys w 3d?:P Jak nie to tworz kule w GLUT - b. latwa obsluga ;)