Autor Beitrag
xixo
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 09.01.12 22:34 
Hallo Leute, ich soll ein Programm schreiben, dass ganz einfach in einer 2D Grafik das elektrische Feld von zwei oder mehr Ladungen ausgibt ähnlich bzw genau wie dieses Java applet www.cco.caltech.edu/.../ja...ld/EField.html
ich habe überhaupt keine ahnung wie das funktionieren soll, daher bitte ich euch falls jemand ein solches programm bereit hat sich zu melden und mir den quellcode zur verfügung stellen könnte, in der codelib konnte ich nichts dergleichen finden
danke schonmal !
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 09.01.12 22:45 
Hallo und willkommen im Forum!

Erstens ist der Link kaputt und zweitens wirst du kaum jemanden finden, der zufällig ein solches Programm hat und dir den Quelltext gibt. Mal abgesehen davon, dass du das Programm ja vermutlich selbst schreiben sollst, oder?

Deshalb ist die Frage, ob du selbst das Programm schreiben möchtest und dabei hier Hilfe möchtest? Denn das ist ja der Sinn eines Forums.

Wenn ja:
Wie weit bist du, wo kommst du nicht weiter?
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 09.01.12 23:06 
So was haben wir nicht gern:
www.delphipraxis.net...eld.html#post1145134
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 09.01.12 23:19 
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
So was haben wir nicht gern:
www.delphipraxis.net...eld.html#post1145134
An sich stellen Crossposts kein Problem dar - aber wenn, dann müssen sie verlinkt werden!

Hier wurde schon alles gesagt: bei konkreten Problemen helfen wir gerne, aber ein einfaches "Code bitte" ohne jegliche Eigeninitiative wird nicht wirklich weiter helfen.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Mo 09.01.12 23:22 
doch wird es, aber nur gegen bares.

Falls du wirklich das vorhast, schau mal in die Job Börse.

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Di 10.01.12 11:43 
Die Umsetzung ist doch eigentlich ganz einfach, wenn man erst einmal die Formeln hat. Dann braucht man nur noch die Formeln an einem gegeben Punkt P in der X-Y-Ebene auszurechnen und kann anschließend das Feld konstruieren. Aber was soll den dargestellt werden? Die Feldlinien? oder die Feldstärke? Beim ersteren muss man dann etwas mehr Aufwand treiben, da ka Linien durch gleiche Feldstärke gekennzeichnet sind, während im Falls 2 einfach die errechnete Feldstärke in eine Farbe oder Grauskala umgerechnet wird. Das ist wesentlich einfacher. Apropos Formeln:

de.wikipedia.org/wiki/Elektrisches_Feld

Elektrisches Feld einer Ladungsverteilung

Wird das elektrische Feld durch mehrere Punktladungen Q1 ... Qn an den Positionen r_1 ... r_nerzeugt, so erhält man den Feldstärkevektor des Gesamtfeldes an der Position r gemäß dem Superpositionsprinzip durch Addition der einzelnen Feldstärkevektoren:

upload.wikimedia.org...4c2de15cc544626a.png

Da kannst Du Dir ja schon mal Gedanken bezüglich der Umsetzung machen.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
xixo Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 10.01.12 23:10 
ok, alles klar ich hab mich jetzt mal rangesetzt und begonnen selbst nachzudenken, eine sehr gute idee, nur die feldstärke ausgeben zu lassen, aber auch hier treten bei mir einige probleme auf
1. wie gehe ich mit der formel um ? erklärung der rechenzeichen -.-
2. wie bekomme ich die vektoren ins delphi ?
3. wie kann ich die werte dann einem farbspektrum zuordnen
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Mi 11.01.12 14:47 
zu 1) und 2)

Du benötigst die Variablen E, Ex, Ey, x(i), y(i) und die Konstante A (siehe unten)

Am Besten setzt Du x(0) != x und x(1..n) = x-Wert der Ladung i, sowie y(0) != y und y(1..n) = y-Wert der Ladung y, dann gilt für

Ex = 1/A*Summe[(x(0)-x(i))/wurzel((x(0)-x(i))^2+(y(0)-y(i))^2)]
Ey = 1/A*Summe[(y(0)-y(i))/wurzel((x(0)-x(i))^2+(y(0)-y(i))^2)]

für alle i von 1 bis n

A = 1/(4*PI*eps0*epsr), für epsr=1.0 (Vakuum) gilt für A = 1/(4*PI*8,854e-12) = 8.9876e+9

Der Betrag der Feldstärke E am Punkt x,y ist dann E = Wurzel(Ex^2+Ey^2)

Summenbildung:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
// 1. Summen auf Null setzen

Ex := 0.0;
Ey := 0.0;
//Summierung
for i:=1 to n do
begin
  Ex := Ex + 1/A*(x[0]-x[i])/sqrt(sqr(x[0]-x[i])+sqr(y[0]-y[i]));
  Ey := Ey + 1/A*(y[0]-y[i])/sqrt(sqr(x[0]-x[i])+sqr(y[0]-y[i]));  
end;
E := sqrt(sqr(Ex)+sqr(Ey));


Am Anfang definierst Du A sowie die Koordinaten Deiner n Ladungen.
Auch musst Du Dir Gedanken machen, wie Du mit 0 im Nenner umgehst (Abstand zu einer Ladung = 0) Denn dort ist ja das Elektrische Feld unendlich groß, macht also wenig Sinn!
Dann musst Du Dir nur Gedanken machen, wie Du die Orte x und y in eine zweidimensionale Matrix packst und lässt die Orte sowohl in x als auch in y durchlaufen. Dann bekommst Du eine zweidimensionale Ergebnismatrix der Feldstärke. Vielleicht schreibst Du die Berechnung der Feldstärke als Funktion mit der Übergabe der Feldstärke als Ergebnis und als Parameter x und y) Dann hast Du eine zweifache Schleife zur Berechnung der gesamten Matrix des Typs:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
  for x := UntergrenzeX to ObergrenzeX do
  begin
    For y := UntergrenzeY to ObergrenzeY do
    begin
      E[x,y] := Feldstaerke(xWert(x), yWert(y))
    end;
  end;


Funktion dann wie oben umsetzen

zu 3) Am Besten als Graustufenbild (weiß = größte Feldstärke, schwarz als niedrigste Feldstärke)

Du solltest dann das Minimum bzw. Maximum Deiner berechneten Feldstärken ermitteln und dann die Farbe c wie folgt ermitteln

ausblenden Delphi-Quelltext
1:
2:
  cWert := round(255*(E[x,y]-Minimum)/(Maximum-Minimum));
  c[x,y] := RGB(cWert,cWert,cWert);  // c als Array of TColor;


So, ich hoffe, Dir schon mal geholfen zu haben. Den Rest musst Du selber versuchen. (Die hier aufgeführten Codeschnipsel sind nicht fehlerfrei!!!)

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.