+// ------------------ 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();
+ }
+}
+