Нарисуем силовые линии электрического диполя. Картину силовых линий диполя можно найти в интернете, однако нарисовать эту картину своими руками – отличная практическая работа по изучению свойств реальных физических объектов с помощью компьютерного моделирования.
Для понимания этого урока нужно знать, что такое электрическое поле, как рассчитать электрическое поле точечного заряда, что такое вектора, правила сложения векторов и принцип суперпозиции.
Напомним, что диполем называют пару точечных зарядов одинаковых по величине и противоположных по знаку. Поле диполя является суперпозицией (сложением ) полей каждого разряда. Поле точечного заряда определяется формулами (скалярные и векторный вид):

Разумеется, мы будем использовать векторный вид формулы. Эти формулы в системе СГС. От формул в системе СИ они отличаются лишь коэффициентами, что для нас не принципиально.

Вблизи одного точечного заряда (например, положительного) влиянием поля второго заряда можно пренебречь и силовые линии будут выглядеть, как показано на рисунке. Начнём движение по одной силовой линии, например по той, что смотрит на 2 часа, сделаем от точки заряда небольшой шаг, равный 1⁄20 расстояния между зарядами. В этой точке рассчитаем вектор электрического поля как сумму векторов полей первого и второго заряда. В направлении рассчитанного вектора поля сделаем следующий шаг той же длины. Совершая такие маленькие шаги мы фактически будем двигаемся по силовой линии электрического поля. Это движение должно закончится в точке расположения отрицательного заряда, но поскольку вся эта картина электрического поля симметрична, то достаточно построить только правую половину картины, а левую рисуем на втором слое, как зеркальное отражение правой.
Пусть заряд величиной +1 расположен на оси X в точке с координатами (1,0), а заряд величиной -1 - в точке с координатами (-1,0). Исходные силовые линии будем строить в цикле по углу от оси X до силовой линии против часовой стрелки от 10 до 360 градусов с шагом 10. Переменная цикла alfa - это угол силовой линии от оси X против часовой стрелки.
X1 = -17
Y1 = -17
X2 = 17
Y2 = 17
SetCoordinateSystem(X1,Y1,X2,Y2,2) # задали размер полотна
for alfa=10,360,10 # цикл по углу силовой линии
В теле цикла по углам задаём координаты начало движения (x,y), и помещаем туда перо.
x=1 # все силовые линии выходят из положительного заряда
y=0
MoveTo(x,y)
Вычисляем начальный вектор движения (Ex,Ey), образующий угол alfa с осью X, Задаём длину шага d, вычисляем координаты точки (x,y), в которую переместились в результате первого шага и соединяем отрезком начальную и текущую точки перемещения.
Ex=cos(alfa*PI/180) # x-составляющая единичного вектора
Ey=sin(alfa*PI/180) # y-составляющая
d=0.05 # длина шага в направлении силовой линии
x=x+Ex*d # координаты новой точки силовой линии
y=y+Ey*d
LineTo(x,y) # первый кусочек силовой линии
Следующие шаги построения силовой линии совершаем во вложенном цикле repeat. Вычисляем вектор (Rx,Ry) из точки расположения положительного заряда (1,0) в текущую точку (x,y), вычисляем r – длину этого вектора, r3 – куб длины. Вычисляем вектор напряжённости электрического поля (E1x,E1y), создаваемого положительным зарядом в точке (x,y).
repeat
q=1
Rx=x-1
Ry=y
r=sqrt(Rx*Rx+Ry*Ry) # расстояние от текушей точки до положительного заряда
r3=r*r*r # куб расстояния
E1x=q*Rx/r3 # x-составляющая напряженности электрического поля
E1y=q*Ry/r3 # y-составляющая
Аналогично вычисляем вектор напряжённости электрического поля (E2x,E2y), создаваемого отрицательным зарядом в точке (x,y).
q=-1
Rx=x+1
Ry=y
r=sqrt(Rx*Rx+Ry*Ry) # расстояние от текушей точки до отрицательного заряда
r3=r*r*r # куб расстояния
E2x=q*Rx/r3 # x-составляющая напряженности электрического поля
E2y=q*Ry/r3 # y-составляющая
Вычисляем суммарный вектор напряжённости электрического поля (Ex,Ey), создаваемого в точке (x,y) обеими зарядами и нормализуем этот вектор, т.е. делаем длину его равной единице
Ex=E1x+E2x # x-составляющая напряженности суммарного эл.поля
Ey=E1y+E2y # y-составляющая
E=sqrt(Ex*Ex+Ey*Ey) # абсолютная величина напряженности эл.поля
Ex=Ex/E # x-составляющая единичного вектора
Ey=Ey/E # y-составляющая.
Делаем очередной шаг длиной d вдоль напряженности суммарного электрического поля, рисуем очередной кусочек силовой линии
x=x+Ex*d # делаем шаг длиной d вдоль напряженности электрического поля
y=y+Ey*d
LineTo(x,y) # рисуем очередной кусочек силовой линии
На втором слое рисуем кусочек силовой линии, симметричный уже нарисованному относительно оси Y
LineTo(-x,y,2) # кусочек силовой линии в левой части, симметрично относительно оси Y
Проверяем условие завершения цикла построения одной силовой линии
BreakIf (x < 0) or (x > X2) or (y > Y2)
Условие выхода – силовая линия пересекает границы полотна или ось Y.
Запустите скрипт в автоматическом режиме.

Полный скрипт этого примера смотрите в файле …Vasilisa\Scripts\Graphics_Dipol.txt.
Поэкспериментируйте, как влияет параметр d на построение силовых линий.