// ***************************************************************************** // 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.