Entwickler-Ecke
Multimedia / Grafik - Elektrisches Feld
xixo - Mo 09.01.12 22:34
Titel: Elektrisches Feld
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
http://www.cco.caltech.edu/~phys1/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 - 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?
Martok - Mo 09.01.12 23:19
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.
glotzer - 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.
Tranx - 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:
http://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:
http://upload.wikimedia.org/wikipedia/de/math/9/a/5/9a5d5623443e175c4c2de15cc544626a.png
Da kannst Du Dir ja schon mal Gedanken bezüglich der Umsetzung machen.
xixo - 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 - 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:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Ex := 0.0; Ey := 0.0; 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:
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
Delphi-Quelltext
1: 2:
| cWert := round(255*(E[x,y]-Minimum)/(Maximum-Minimum)); c[x,y] := RGB(cWert,cWert,cWert); |
So, ich hoffe, Dir schon mal geholfen zu haben. Den Rest musst Du selber versuchen. (Die hier aufgeführten Codeschnipsel sind nicht fehlerfrei!!!)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!