Тема: Изолинии
Показать сообщение отдельно
  #5  
Старый 23.05.2014, 10:45
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Более правильно как-то так

Код:
function Poten
   (
     x,y:extended; // координаты пробной точки
     xq,yq:extended; // координаты заряда
     q:extended; //  заряд
    ):extended;
 var
   r : extended;
 begin
   r:=sqrt(sqr(x-xq)+sqr(y-yq));
   Result:=q/r;
 end;
const // заменить на нужные значения зарядов
  Q1 = 1;
  Q2 = 1;
  Q3 = 1;
  Q4 = 1;
procedure TForm1.Button1Click(Sender: TObject);
var
x,y:integer;
p:extended;
begin
for x:=0 to 100 do
  begin
    for y:=0 to 100 do
      begin
        p:=
               Poten(x,y,100,100,Q1)  +
               Poten(x,y,100,  0,Q2)  +
               Poten(x,y,  0,100,Q3)  +
               Poten(x,y,  0, 0,Q4) ;
        if p>0 then
          begin
            Image1.Canvas.Pixels[x,y] := clWhite;
          end
        else
          begin
            Image1.Canvas.Pixels[x,y] := clBlack;
          end;
      end;
    end;
end;
Ответить с цитированием