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