Clase para realizar las ondas
unit OndasPlanas;
interface
uses
Windows, Messages,Types, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Math,
Vector;
typeTOndasPlanas=class(TVector)
v,t:Real;
Tipo,Tipo2:Word;
Constructor Create(nXo,nYo:Real);
Destructor Destroy();
function Onda(x,y:Real):Word;
function Interferencia(x,y:Real):Word;function Huygens(x,y:Real):Word;
Procedure Encender();Override;
end;
implementation
uses
ModelosMat,Unit1;
Constructor TOndasPlanas.Create(nXo,nYo:Real);
begin
Xo := nXo;
Yo:= nYo;
end;
Destructor TOndasPlanas.Destroy();
begin
end;
function TOndasPlanas.Onda(x,y:Real):Word;
var
d,u:Real;
begin
d := sqrt(sqr(x - Xo)+ sqr(y - Yo));
u := 1.5*(d - t * v);//w = 1.5
u := 1 * Sin(u); //A = 1
Onda := Round((u + 1) * 7.5)
end;
function TOndasPlanas.Interferencia(x,y:Real):Word;
var
d1,d2,u,u1,u2:Real;
begin
d1 := sqrt(sqr(x - Xo)+ sqr(y -Yo));
d2 := sqrt(sqr(x - Xo-10)+ sqr(y - Yo));
u1 := 1.5*(d1 - t * v); //w = 1.5
u2 := 1.5*(d2 - t * v); //w = 1.5
u1 := 1 * Sin(u1); //A = 1
u2 := 1 * Sin(u2); //A = 1
// Onda :=Round((u + 1) * 7.5)
u:= u1 + u2;
Interferencia := Round((u + 2) * 3.75)
end;
function TOndasPlanas.Huygens(x,y:Real):Word;
var
i:Integer;
d:Array [0..40] of Real;
u:Array [0..40] ofReal;
sum:Real;
begin
sum := 0;
for i := 0 to 40 do
begin
d[i] := sqrt(sqr(x + (i-20))+ sqr(y - Yo));
u[i] := 1.5*(d[i] - (t * v)); //w = 1.5
u[i] := 1 *Sin(u[i]); //A = 1
sum := u[i] + sum + 1;
end;
Huygens := Round(sum * 0.375)
end;
Procedure TOndasPlanas.Encender;
var
i,j:Integer;
rx,ry:Real;
Color0:Word;
LM:TModelosMat;begin
for i := 0 to 600 do
for j := 0 to 400 do
begin
LM.Carta(i,j,rx,ry);
case Tipo of
0:begin
Color0 := Onda(rx,ry);
end;
1: begin...
Regístrate para leer el documento completo.