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?


Delete - Mo 09.01.12 23:06

So was haben wir nicht gern:
http://www.delphipraxis.net/165637-elektrisches-feld.html#post1145134


Martok - Mo 09.01.12 23:19

user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
So was haben wir nicht gern:
http://www.delphipraxis.net/165637-elektrisches-feld.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.


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:
// 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:


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);  // 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!!!)