Add CoulombEField and CoulombEFields to ElectroMag.asy.
authorW. Trevor King <wking@drexel.edu>
Wed, 11 Apr 2012 18:50:45 +0000 (14:50 -0400)
committerW. Trevor King <wking@drexel.edu>
Wed, 11 Apr 2012 18:50:45 +0000 (14:50 -0400)
asymptote/ElectroMag-test.asy
asymptote/ElectroMag.asy

index cac334af35b622fdc303c0df323762dd3a8bb9af..f80a0248628ae8764b5c468fa729eae8b48de7f2 100644 (file)
@@ -22,8 +22,8 @@ import ElectroMag;
 real u = 1cm;
 
 Charge a = pCharge(center=(0.5u,2u));
-Charge b = aCharge(center=(0,0), q=1);
-Charge c = nCharge(center=(-3u,0), q=-3);
+Charge b = aCharge(center=(0,-0.5u), q=1);
+Charge c = nCharge(center=(-3u,-0.5u), q=-3);
 Charge cs[] = {a,b,c};
 Distance dab = Distance(b.center(), a.center(), scale=u, L="$r_1$");
 Distance dbc = Distance(c.center(), b.center(), scale=u, L="$r_2$");
@@ -43,6 +43,7 @@ for (int i=0; i<ds.length; i+=1)
 for (int i=0; i<as.length; i+=1)
   as[i].draw();
 
+CoulombEFields((-1.5u, 1.4u), c=cs, scale=2u, unit=u/2);
 //Vector Fba = CoulombForce(b,a, scale=2u, unit=u);
 //Fba.draw();
 CoulombForces(c=cs, scale=2u, unit=u);
index d37c73803ad13bf2e7110de49fa97e0125bef397..06f131489431dc6d1e19a07cb1984b337176e820 100644 (file)
@@ -105,6 +105,34 @@ Vector Current(pair center=(0,0), real mag=5mm, real dir=0, real phi=0, Label L=
   return v;
 }
 
+// ------------------ Electric fields --------------------
+
+// Electric field at a due to b
+Vector CoulombEField(pair a, Charge b, Label L="", real scale=1mm,
+                     real unit=1mm)
+{
+  pair r = a - b.center();
+  real mag, dir;
+  mag = (abs(b.q)*(scale/length(r))^2)*unit;
+  dir = degrees(r);
+  if (b.q < 0) {
+    dir += 180;
+  }
+  Vector v = EField(center=a, mag=mag, dir=dir, L=L);
+  return v;
+}
+
+void CoulombEFields(pair a, Charge c[], real scale=1mm, real unit=1mm)
+{
+  Vector E;
+  string s;
+  for (int i=0; i<c.length; i+=1) {
+    s = "$E_{" + format("%d", i+1) + "}$";
+    E = CoulombEField(a, c[i], L=s, scale=scale, unit=unit);
+    E.draw();
+  }
+}
+
 // ---------------------- Forces -------------------------
 
 // Force of a on b