Description | Uses | Classes, Interfaces, Objects and Records | Functions and Procedures | Types | Constants | Variables |
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/
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); |
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; |
NCP = 4; |
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); |
|
procedure Convert_1DArrayTo2DArray(const InArray: TRealArray; out OutArray: TRealArrayX_5); |
|
procedure Convert_2DArrayTo1DArray(const InArray: TRealArrayX_5; out OutArray: TRealArray); |
|
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; |
NCP = 4; |
NCP = NUMBER OF DATA POINTS CLOSEST TO EACH DATA POINTS. |