Операции с векторами реализованы в модуле иМаМх.рав, имеющемся на диске, приложенном к книге. В листинге 2.1 приведены фрагменты файла иМаМх.раз, относящиеся к этим операциям.

Листинг 2.1. Фрагменты файла UMatrix.pas, относящиеся к операциям с векторами

unit UMatrix; interface

type TVector = array of real;

// ShowErrorMatrix - надо ли показывать окна с сообщениями // об ошибках

// Если ShowErrorMatrix = false, то ErrorMatrix показывает, // были ли ошибки, a MessageMatrix содержит

// последнее сообщение об ошибке

var ShowErrorMatrix: boolean = false;
ErrorMatrix: boolean = false;
MessageMatrix: string;

// ************************************** // Операции с векторами

// ****************************************** // Создание вектора размерностью N

function CreateVector(N: integer): TVector; overload; // Создание вектора из массива Arr

function CreateVector(const Arr: array of real): TVector;
overload;

// Возвращает размерность вектора

function DimVector(const V: TVector): word;
// Возвращает последний индекс вектора function HighVector(const V: TVector): integer;

// Модуль вектора

function ModVector(const V: TVector): real; // Эквивалентность двух векторов

function EqVector(const VI, V2: TVector): boolean; // Сложение двух векторов

// Размерность векторов должна быть одинаковой function SumVector(const VI, V2: TVector): TVector;

// Разность двух векторов

// Размерность векторов должна быть одинаковой function SubVector(const VI, V2: TVector): TVector;

// Произведение скаляра (числа) на вектор

function CMultVector(С: real;
const V: TVector): TVector;

// Скалярное умножение двух векторов

// Размерность векторов должна быть одинаковой

function MultSVector(const VI, V2: TVector): real;

// Косинус угла между двумя векторами

// Размерность векторов должна быть одинаковой

function CosVector(const VI, V2: TVector): real;

// Угол в радианах между двумя векторами

// Размерность векторов должна быть одинаковой

function FVector(const VI, V2: TVector): real;

// Векторное умножение двух трехмерных векторов

function MultWector (const VI, V2: array of real): TVector;

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

implementation

uses Forms, // Для переменной Application

Windows, // Для обозначений флагов кнопок метода MessageBox

SysUtils, Math; // Для функции Abort

procedure Messages(S:string) ; begin

if ShowErrorMatrix then begin // Вариант для любых приложений, // кроме приложений VCL .NET в Delphi 2005 и 2006

Application.MessageBox(PChar(S), 1 Ошибка 1,MB_0K+MB_IC0NST0P);
// Вариант для приложений VCL .NET в Delphi 2005 и 2006 // Application.MessageBox (S, 'Ошибка ', MBjOK+MB__ICONSTOP) ;

Abort; end

else begin

ErrorMatrix := true;
MessageMatrix := S;
end;
end;
function CreateVector(N: integer): TVector;

// Создание вектора размерностью N

begin

SetLength (Result, N);
end;

function CreateVector(const Arr: array of real): TVector; // Создание., вектора из массива Arr var i, N:word; begin

ErrorMatrix := false; if (Length(Arr) = 0) then begin

Messages ( 1 Функция CreateVector :' +


|Следующая страница ⇒

Приемы программирования в Delphi на основе VCL



Новости за месяц

  • Март
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс