MathgeomGLS
232 строки · 5.4 Кб
1unit uGlobal;
2
3interface
4
5uses
6System.Classes,
7System.SysUtils,
8Printers,
9GLS.OpenGLTokens,
10Vcl.Graphics,
11GLS.VectorGeometry,
12GLS.Coordinates,
13GLS.VectorLists,
14GLS.Color,
15GLS.VectorTypes;
16
17const
18NewFName: TFileName = 'New Grid';
19
20PosFloat: Set of Char = ['0'..'9','e','E','.', #8];
21AnyFloat: Set of Char = ['-', '0'..'9','e','E', '.', #8];
22
23type
24TLayout = record
25IsMaximize: Boolean; // is true if ViewForm.WindowState = wsMaximized
26MainLeft: integer;
27MainTop: integer;
28MainWidth: integer;
29MainHeight: integer;
30CurrentGraphFName: ShortString;
31CurrentDataPath: ShortString;
32CurrentImagePath: ShortString;
33FuncLeft: integer;
34FuncTop: integer;
35FuncWidth: integer;
36FuncHeight: integer;
37GridsVisible: Boolean;
38GridsLeft: integer;
39GridsTop: integer;
40GridColorsLeft: integer;
41GridColorsTop: integer;
42PlotColorsLeft: integer;
43PlotColorsTop: integer;
44EvaluateVisible: Boolean;
45EvaluateLeft: integer;
46EvaluateTop: integer;
47CoordVisible: Boolean;
48CoordLeft: integer;
49CoordTop: integer;
50DerivLeft: integer;
51DerivTop: integer;
52AddColorsLeft: integer;
53AddColorsTop: integer;
54PointCount: integer;
55end;
56
57TViewMode = (vmAmbient, vmAmbientandDiffuse, vmDiffuse, vmEmmision, vmNone);
58TViewModes = set of TViewMode;
59
60TfxyMode = (fxyFill, fxyLines, fxyPoints);
61TfxyModes = set of TfxyMode;
62
63TAddedType = (AddNone, AddDerivX, AddDerivY, AddVolume);
64
65TRange = record
66Maximum: TGLFloat;
67Minimum: TGLFloat;
68Step: TGlFloat;
69end;
70
71TxyGrid = record
72Color: TGLColorVector;
73xRange, yRange: TRange;
74zPosition: TGLFloat; // unscaled
75zScale: TGLFloat; // actual zPosition = zPosition*zScale
76IsVisible: Boolean;
77IsChecked: Boolean;
78end;
79
80TxzGrid = record
81Color: TGLColorVector;
82xRange, zRange: TRange;
83yPosition: TGLFloat;
84IsVisible: Boolean;
85IsChecked: Boolean;
86end;
87
88TyzGrid = record
89Color: TGLColorVector;
90yRange, zRange: TRange;
91xPosition: TGLFloat;
92IsVisible: Boolean;
93IsChecked: Boolean;
94end;
95
96TViewData = record
97CameraCubeAt: TGLVector;
98CameraAt: TGLVector;
99fLength: TGLFloat;
100LightAt: TGLVector;
101ViewDepth: TGLFloat;
102BackColor: TColor;
103
104xyGrid: TxyGrid;
105xzGrid: TxzGrid;
106yzGrid: TyzGrid;
107
108xEvaluate: TGLFloat;
109yEvaluate: TGLFloat;
110CoordChecked: Boolean;
111ToGridsChecked: Boolean;
112dzdx_dyChecked: Boolean;
113BoxChecked: Boolean;
114CoordWidth: integer;
115CoordColor: TColor;
116BoxLnWidth: integer;
117BoxLnColor: TGLColorVector;
118
119TextVisible: Boolean;
120TextFontN: ShortString;
121TextFontSz: integer;
122xPosYMax: Boolean;
123xPosZMax: Boolean;
124xTextColor: TColor;
125
126yPosXMax: Boolean;
127yPosZMax: Boolean;
128yTextColor: TColor;
129
130zPosXMax: Boolean;
131zPosYMax: Boolean;
132zTextColor: TColor;
133ArrowSize: TGLFloat;
134end;
135
136TPlotData = record
137fxyStr: string; // function string e.g. 'sin(x*y)'
138txtStr: string;
139NoteStr: string;
140xMin, xMax, xInc: TGLFloat; // x limits and increment
141yMin, yMax, yInc: TGLFloat; // y limits and increment
142zMin, zMax: TGLFloat; // z limits
143zLim: Boolean; // limits upper & lower z
144zCap: Boolean; // caps the above z
145
146UpperColor, LowerColor: TGLColorVector;
147ColorBlend: TGLFloat;
148ColorMove: TGLFloat;
149ViewMode: TViewMode;
150fxyMode: TfxyMode;
151end;
152
153TPlotDataObject = class(TObject) // data object stored in listbox
154constructor Create(D: TPlotData);
155destructor Destroy; override;
156public
157Data: TPlotData;
158end;
159
160TAddedData = record
161xMin, xMax, xInc: TGLFloat; // x limits and increment
162yMin, yMax, yInc: TGLFloat; // y limits and increment
163zMin, zMax: TGLFloat; // z limits
164zLim: Boolean; // limits upper & lower z
165zCap: Boolean; // caps the above z
166
167UpperColor, LowerColor: TGLColorVector;
168ColorBlend: TGLFloat;
169ColorMove: TGLFloat;
170ViewMode: TViewMode;
171fxyMode: TfxyMode;
172AddLineWidth: integer;
173AddLineColor: integer;
174AddedAs: TAddedType;
175end;
176
177TVolumeLineObject = class(TObject)
178constructor Create(xT, yT, zT, xE, yE, zE, Vol: TGLFloat);
179destructor Destroy; override;
180public
181x1, y1, z1, x2, y2, z2, v: TGLFloat;
182end;
183
184var
185Altered: Boolean; // any alteration to the plot
186GridColorsAltered: Boolean;
187DerivativeAltered: Boolean;
188
189BinPath: TFileName; // the same as for Plot2d.dproj
190/// PlotPath: TFileName; // Now exe in BinPath
191DataPath: TFileName;
192ImagePath: TFileName;
193GraphFName: TFileName;
194LayoutFName: TFileName;
195RecentFName: TFileName;
196Layout: TLayout;
197ViewData: TViewData;
198PlotData: TPlotData;
199AddedData: TAddedData;
200
201//======================================================================
202implementation
203//======================================================================
204
205constructor TPlotDataObject.Create(D: TPlotData);
206begin
207inherited Create;
208Data := D;
209end;
210
211destructor TPlotDataObject.Destroy;
212begin
213inherited Destroy;
214end;
215
216constructor TVolumeLineObject.Create(xT, yT, zT, xE, yE, zE, Vol: TGLFloat);
217begin
218x1 := xT;
219y1 := yT;
220z1 := zT;
221x2 := xE;
222y2 := yE;
223z2 := zE;
224v := Vol;
225end;
226
227destructor TVolumeLineObject.Destroy;
228begin
229inherited Destroy;
230end;
231
232end.
233