Unit TriCP_Routines

DescriptionUsesClasses, Interfaces, Objects and RecordsFunctions and ProceduresTypesConstantsVariables

Description

This file contains routines for plotting contour lines based on data points at arbitrary locations.

Output from the procedures in this file are set to CalCompRoutines. You can alter the procedures in CalCompRoutines if you wish to capture the output in a different way.

Original source code http://www.netlib.org/toms/626

Conditions of use http://www.netlib.org/toms/

Translation from Fortran by Richard B. Winston. .

Although this file is in the public domain, the algorithm it contains is not. For conditions of use see http://www.netlib.org/toms/

Uses

Overview

Functions and Procedures

procedure TRICP_Pascal (const XD,YD,ZD, C: TRealArray; var WK: TRealArray; const ND, NCP, NC, MODE: longint; var NT: longint; var IPT, IPL: TIntArray);
procedure IDTANG_Pascal(const NDP: longint; const XD,YD: TRealArray; var NT, NL: longint; var IPT, IPL: TIntArray);
procedure Trmesh_2_Idtang(var NT: Integer; const IEND, IADJ: TIntArray; var IPL, IPT: TIntArray; const ND: Integer);
procedure Convert_1DArrayTo2DArray(const InArray: TRealArray; out OutArray: TRealArrayX_5);
procedure Convert_2DArrayTo1DArray(const InArray: TRealArrayX_5; out OutArray: TRealArray);

Types

TIntArray3 = array[0..2] of longint;
TIntArray25 = array[0..24] of longint;
TRealArray25 = array[0..24] of Real;
TRealArrayX_5 = array of array[0..4] of Real;
TRealArray3 = array[0..2] of Real;
TRealArray3_3 = array[0..2,0..2] of Real;
TRealArray6_3 = array[0..5, 0..2] of Real;
TRealArray6 = array[0..5] of Real;
TRealArray5_3 = array[0..4, 0..2] of Real;

Constants

NCP = 4;

Description

Functions and Procedures

procedure TRICP_Pascal (const XD,YD,ZD, C: TRealArray; var WK: TRealArray; const ND, NCP, NC, MODE: longint; var NT: longint; var IPT, IPL: TIntArray);

     T R I ANGLE    C  ONTOUR    P  LOTTING

     USER INTERFACE   (VERSION 0.1)

     COPYRIGHT(C): A. PREUSSER, 1984
                   SEN. F. WISS. U. FORSCH.
                   PROJEKTGRUPPE PARALLELRECHNEN
                   HEILBRONNER STR. 10
                   D-1000 BERLIN 31

   XD,YD,ZD   COORDINATES OF DATA POINTS
              XD AND YD MUST BE GIVEN IN CM.
              FOR USING INCH,  SET INSTALLATION PARAMETER
              CMSCAL= 2.54 .
   ND         NUMBER OF DATA POINTS
   C          CONTOUR LEVELS
   NC         NUMBER OF CONTOUR LEVELS
   NT         NUMBER OF TRIANGLES
   WK         REAL WORK ARRAY, DIMENSION 5*ND

              ON EXIT, WK CONTAINS THE PARTIAL DERIVATIVES
              (ZX(I),ZY(I),ZXX(I),ZXY(I),ZYY(I),I=1,ND)

   IPT           INTEGER ARRAY. THE DIMENSION IS 3*NT.
                 POINT NUMBERS FOR THE TRIANGLES.
                 THE FIRST 3 NUMBERS DETERMINE THE VERTICES OF THE
                 FIRST TRIANGLE, THE NEXT 3 FOR THE SECOND AND SO ON.
                 THE NUMBERS CORRESPOND TO THE INDICES OF THE
                 XD,YD,ZD ARRAYS. THEY ARE ARRANGED COUNTER-
                 CLOCKWISE WITHIN A TRIANGLE.

   IPL           INTEGER ARRAY. THE DIMENSION IS NCP*ND
                 A LIST OF NCP*ND POINT NUMBERS, REPRESENTING
                 NCP POINTS FOR EACH DATA POINT THAT ARE
                 THE CLOSEST TO THIS POINT. THE FIRST NCP
                 NUMBERS ARE FOR THE FIRST DATA POINT, THE NEXT
                 NCP FOR THE SECOND AND SO ON. THESE NUMBERS
                 WERE USED FOR THE COMPUTATION OF THE PARTIAL
                 DERIVATIVES.

   NCP           NCP IS AN INSTALLATION PARAMETER AND WILL BE SET
                 TO 4.

   MODE       MODE OF USAGE
              0, TRIANGULATION REQUESTED.
                 NT, IPT AND IPL WILL HAVE THE INFORMATION DESCRIBED
                 ABOVE ON EXIT.

              1, NO TRIANGULATION REQUESTED.
                 IPT MUST CONTAIN THE INFORMATION ABOUT
                 THE TRIANGLES AS DESCRIBED ABOVE
                 ON ENTRY AND NT MUST BE SPECIFIED ON ENTRY.
                 IPT WILL NOT BE CHANGED
                 AND IN ADDITION, THE INFORMATION DESCRIBED
                 IN IPL WILL BE AVAILABLE ON EXIT.

              2, NO TRIANGULATION AND NO DETERMINATION OF THE
                 NCP CLOSEST POINTS FOR EACH DATA POINT.
                 IPT AND IPL MUST CONTAIN THE INFORMATION AS DESCRIBED
                 AS INPUT INFORMATION AND NT MUST BE SPECIFIED ON ENTRY.
                 THE CONTENTS OF IPT AND IPL WILL NOT BE CHANGED.

              3, NO TRIANGULATION AND NO COMPUTATION OF THE
                 PARTIAL DERIVATIVES.
                 IPT MUST CONTAIN THE INFORMATION ABOUT
                 THE TRIANGLES AS DESCRIBED ABOVE
                 ON ENTRY AND NT MUST BE SPECIFIED ON ENTRY
                 AND
                 WK MUST CONTAIN THE PARTIAL DERIVATIVES
                 (ZX(I),ZY(I),ZXX(I),ZXY(I),ZYY(I),I=1,ND)
                 ON ENTRY.
                 IPL IS IGNORED.
                 THE CONTENTS OF WK AND IPT WILL NOT BE CHANGED.
                 THIS MODE IS ESPECIALLY USEFUL WHEN TRICP IS
                 CALLED AGAIN AFTER A PREVIOUS CALL. FOR INSTANCE,
                 ONLY THE CONTOUR LEVELS MAY HAVE CHANGED.
                 WHEN DESIGNING A SURFACE, IT MAY BE APPROPRIATE
                 TO CHANGE THE XD,YD,ZD PARAMETERS AND THE PARTIAL
                 DERIVATIVES INTERACTIVELY AND TO CALL TRICP AGAIN
                 USING THIS MODE.

procedure IDTANG_Pascal(const NDP: longint; const XD,YD: TRealArray; var NT, NL: longint; var IPT, IPL: TIntArray);

 THE IDTANG SUBROUTINE PERFORMS TRIANGULATION.  IT DIVIDES THE X-Y
 PLANE INTO A NUMBER OF TRIANGLES ACCORDING TO GIVEN DATA
 POINTS IN THE PLANE, DETERMINES LINE SEGMENTS THAT FORM THE
 BORDER OF DATA AREA, AND DETERMINES THE TRIANGLE NUMBERS
 CORRESPONDING TO THE BORDER LINE SEGMENTS.
 AT COMPLETION, POINT NUMBERS OF THE VERTEXES OF EACH TRIANGLE
 ARE LISTED COUNTER-CLOCKWISE.  POINT NUMBERS OF THE END POINTS
 OF EACH BORDER LINE SEGMENT ARE LISTED COUNTER-CLOCKWISE,
 LISTING ORDER OF THE LINE SEGMENTS BEING COUNTER-CLOCKWISE.
 THIS SUBROUTINE CALLS THE IDXCHG FUNCTION.

 THE INPUT PARAMETERS ARE
     NDP = NUMBER OF DATA POINTS,
     XD  = ARRAY OF DIMENSION NDP CONTAINING THE
           X COORDINATES OF THE DATA POINTS,
     YD  = ARRAY OF DIMENSION NDP CONTAINING THE
           Y COORDINATES OF THE DATA POINTS.
 THE OUTPUT PARAMETERS ARE
     NT  = NUMBER OF TRIANGLES,
     IPT = INTEGER ARRAY OF DIMENSION 6*NDP-15, WHERE THE
           POINT NUMBERS OF THE VERTEXES OF THE (IT)TH
           TRIANGLE ARE TO BE STORED AS THE (3*IT-3)ND,
           (3*IT-2)ST, AND (3*IT-1)TH ELEMENTS,
           IT=1,2,...,NT,
     NL  = NUMBER OF BORDER LINE SEGMENTS,
     IPL = INTEGER ARRAY OF DIMENSION 6*NDP, WHERE THE
           POINT NUMBERS OF THE END POINTS OF THE (IL)TH
           BORDER LINE SEGMENT AND ITS RESPECTIVE TRIANGLE
           NUMBER ARE TO BE STORED AS THE (3*IL-2)ND,
           (3*IL-1)ST, AND (3*IL)TH ELEMENTS,
           IL=1,2,..., NL.

 THE OTHER PARAMETERS ARE
     IWL = INTEGER ARRAY OF DIMENSION 18*NDP USED
           INTERNALLY AS A WORK AREA,
     IWP = INTEGER ARRAY OF DIMENSION NDP USED
           INTERNALLY AS A WORK AREA,
     WK  = ARRAY OF DIMENSION NDP USED INTERNALLY AS A
           WORK AREA.

procedure Trmesh_2_Idtang(var NT: Integer; const IEND, IADJ: TIntArray; var IPL, IPT: TIntArray; const ND: Integer);

Trmesh_2_Idtang converts the triangulation data structure used by TRMESH to that used by IDTANG_Pascal.

procedure Convert_1DArrayTo2DArray(const InArray: TRealArray; out OutArray: TRealArrayX_5);

Convert_1DArrayTo2DArray is used to convert a TRealArray to a TRealArrayX_5.

procedure Convert_2DArrayTo1DArray(const InArray: TRealArrayX_5; out OutArray: TRealArray);

Convert_2DArrayTo1DArray is used to convert a TRealArrayX_5 to a TRealArray.

Types

TIntArray3 = array[0..2] of longint;
 
TIntArray25 = array[0..24] of longint;
 
TRealArray25 = array[0..24] of Real;
 
TRealArrayX_5 = array of array[0..4] of Real;
 
TRealArray3 = array[0..2] of Real;
 
TRealArray3_3 = array[0..2,0..2] of Real;
 
TRealArray6_3 = array[0..5, 0..2] of Real;
 
TRealArray6 = array[0..5] of Real;
 
TRealArray5_3 = array[0..4, 0..2] of Real;
 

Constants

NCP = 4;

NCP = NUMBER OF DATA POINTS CLOSEST TO EACH DATA POINTS.

Author


Generated by PasDoc 0.12.1 on 2013-05-13 15:42:06