// *****************************************************************************

//                              UVECT Library

//                  by Joao Paulo Schwarz Schuler 1999-2001

//                              version 0.1.0

//                    Web: http://www.schulers.com/jpss

//                       E-mail: jpss@schulers.com

//

// The contents of this file are subject to the Mozilla Public License Version

// 1.0; you may not use this file except in compliance with the License.

// You may obtain a copy of the License at http://www.mozilla.org/MPL/

// Software distributed under the License is distributed on an "AS IS" basis,

// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License

// for the specific language governing rights and limitations under the License.

// *****************************************************************************



unit UVECT;  { Unidade de vetores V 0.1}

{ por Joao Paulo Schwarz Schuler }

interface



procedure SomaVetorial(var X,Y:array of extended);

{ X : destino }

procedure SubtracaoVetorial(var X,Y:array of extended);

{ X : destino }

procedure MultiplicacaoVetorial(var X,Y:array of extended);

{ X : destino }

function ProdutoEscalar(var X,Y:array of extended):extended;

function Distancia(var X,Y:array of extended):extended;

procedure ProdutoPorEscalar(var X:array of extended;Y:extended);

procedure DefineVetor(var X:array of extended;Y:extended);

{ seta todos elementos do vetor }

procedure MakeRandomVector(var X:array of extended);

{ seta todos elementos do vetor }

procedure MostraVetor(var X:array of extended);

{ seta todos elementos do vetor }



{ se for o caso, insira "DELPHI" em compiler/options/conditional defines }

{$IFDEF DELPHI}

procedure CarregaVetor(var X:array of extended; Y:array of extended);

{$ENDIF}



implementation



{$IFDEF DELPHI}

procedure CarregaVetor(var X:array of extended; Y:array of extended);

var I,J:longint;

begin

J:=0;

for I:=Low(X) to High(X) do

    begin

    X[I]:=Y[J];

    inc(J);

    end;

end;

{$ENDIF}



procedure SomaVetorial(var X,Y:array of extended);

{ X : destino }

var I:longint;

begin

for I:=Low(X) to High(X) do

    X[I]:=X[I]+Y[I];

end;



procedure SubtracaoVetorial(var X,Y:array of extended);

{ X : destino }

var I:longint;

begin

for I:=Low(X) to High(X) do

    X[I]:=X[I]-Y[I];

end;



procedure MultiplicacaoVetorial(var X,Y:array of extended);

{ X : destino }

var I:longint;

begin

for I:=Low(X) to High(X) do

    X[I]:=X[I]*Y[I];

end;



function ProdutoEscalar(var X,Y:array of extended):extended;

var I:longint;

    R:extended;

begin

R:=0;

for I:=Low(X) to High(X) do

    R:=R+X[I]*Y[I];

ProdutoEscalar:=R;

end;



function Distancia(var X,Y:array of extended):extended;

var I:longint;

    R:extended;

begin

R:=0;

for I:=Low(X) to High(X) do

    R:=R+sqr(X[I]-Y[I]);

Distancia:=sqrt(R);

end;



procedure ProdutoPorEscalar(var X:array of extended;Y:extended);

var I:longint;

begin

for I:=Low(X) to High(X) do

    X[I]:=X[I]*Y;

end;



procedure DefineVetor(var X:array of extended;Y:extended);

{ seta todos elementos do vetor }

var I:longint;

begin

for I:=Low(X) to High(X) do

    X[I]:=Y;

end;



procedure MakeRandomVector(var X:array of extended);

{ seta todos elementos do vetor }

var I:longint;

begin

Randomize;

for I:=Low(X) to High(X) do

    X[I]:=0.5-Random(60000)/60000;

end;



procedure MostraVetor(var X:array of extended);

{ seta todos elementos do vetor }

var I:longint;

begin

for I:=Low(X) to High(X) do

    Write(X[I]:10:5);

WriteLn;

end;



end.

