Skip to content

Commit 73d514c

Browse files
ADD: Optional clear "old" points on start
1 parent 5642302 commit 73d514c

File tree

3 files changed

+76
-45
lines changed

3 files changed

+76
-45
lines changed

miniprojects/Spirograph/project1.lpi

Lines changed: 44 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
<IsPartOfProject Value="True"/>
5050
<EditorIndex Value="-1"/>
5151
<CursorPos X="35" Y="5"/>
52-
<UsageCount Value="43"/>
52+
<UsageCount Value="44"/>
5353
</Unit0>
5454
<Unit1>
5555
<Filename Value="unit1.pas"/>
@@ -59,11 +59,11 @@
5959
<ResourceBaseClass Value="Form"/>
6060
<UnitName Value="Unit1"/>
6161
<IsVisibleTab Value="True"/>
62-
<TopLine Value="268"/>
63-
<CursorPos X="44" Y="288"/>
64-
<UsageCount Value="43"/>
62+
<TopLine Value="472"/>
63+
<CursorPos X="15" Y="495"/>
64+
<UsageCount Value="44"/>
6565
<Bookmarks Count="1">
66-
<Item0 Y="356" ID="1"/>
66+
<Item0 Y="503" ID="1"/>
6767
</Bookmarks>
6868
<Loaded Value="True"/>
6969
<LoadedDesigner Value="True"/>
@@ -102,7 +102,7 @@
102102
<EditorIndex Value="-1"/>
103103
<TopLine Value="2886"/>
104104
<CursorPos Y="2909"/>
105-
<UsageCount Value="25"/>
105+
<UsageCount Value="26"/>
106106
</Unit7>
107107
<Unit8>
108108
<Filename Value="/home/corpsman/lazarus/lcl/include/control.inc"/>
@@ -238,121 +238,130 @@
238238
<WindowIndex Value="-1"/>
239239
<TopLine Value="-1"/>
240240
<CursorPos X="-1" Y="-1"/>
241-
<UsageCount Value="20"/>
241+
<UsageCount Value="21"/>
242242
</Unit25>
243243
</Units>
244-
<JumpHistory Count="28" HistoryIndex="27">
244+
<JumpHistory Count="30" HistoryIndex="29">
245245
<Position1>
246246
<Filename Value="unit1.pas"/>
247+
<Caret Line="281" Column="28" TopLine="274"/>
247248
</Position1>
248249
<Position2>
249250
<Filename Value="unit1.pas"/>
250-
<Caret Line="309" TopLine="277"/>
251+
<Caret Line="310" TopLine="308"/>
251252
</Position2>
252253
<Position3>
253254
<Filename Value="unit1.pas"/>
254-
<Caret Line="224" Column="64" TopLine="213"/>
255+
<Caret Line="315" Column="28" TopLine="308"/>
255256
</Position3>
256257
<Position4>
257258
<Filename Value="unit1.pas"/>
258-
<Caret Line="275" Column="45" TopLine="268"/>
259+
<Caret Line="316" Column="28" TopLine="309"/>
259260
</Position4>
260261
<Position5>
261262
<Filename Value="unit1.pas"/>
262-
<Caret Line="273" Column="9" TopLine="258"/>
263+
<Caret Line="353" Column="36" TopLine="328"/>
263264
</Position5>
264265
<Position6>
265266
<Filename Value="unit1.pas"/>
266-
<Caret Line="288" Column="3" TopLine="258"/>
267+
<Caret Line="304" Column="3" TopLine="262"/>
267268
</Position6>
268269
<Position7>
269270
<Filename Value="unit1.pas"/>
270-
<Caret Line="117" Column="16" TopLine="95"/>
271+
<Caret Line="305" Column="3" TopLine="270"/>
271272
</Position7>
272273
<Position8>
273274
<Filename Value="unit1.pas"/>
274-
<Caret Line="446" Column="10" TopLine="419"/>
275+
<Caret Line="306" Column="3" TopLine="271"/>
275276
</Position8>
276277
<Position9>
277278
<Filename Value="unit1.pas"/>
278-
<Caret Line="118" Column="24" TopLine="94"/>
279+
<Caret Line="307" Column="3" TopLine="272"/>
279280
</Position9>
280281
<Position10>
281282
<Filename Value="unit1.pas"/>
282-
<Caret Line="443" TopLine="409"/>
283+
<Caret Line="308" Column="3" TopLine="273"/>
283284
</Position10>
284285
<Position11>
285286
<Filename Value="unit1.pas"/>
286-
<Caret Line="115" Column="15" TopLine="93"/>
287+
<Caret Line="335" Column="5" TopLine="334"/>
287288
</Position11>
288289
<Position12>
289290
<Filename Value="unit1.pas"/>
290-
<Caret Line="421" Column="37" TopLine="407"/>
291+
<Caret Line="347" Column="21" TopLine="334"/>
291292
</Position12>
292293
<Position13>
293294
<Filename Value="unit1.pas"/>
294-
<Caret Line="273" TopLine="271"/>
295+
<Caret Line="284" Column="10" TopLine="268"/>
295296
</Position13>
296297
<Position14>
297298
<Filename Value="unit1.pas"/>
298-
<Caret Line="278" Column="28" TopLine="271"/>
299+
<Caret Line="274" Column="24" TopLine="268"/>
299300
</Position14>
300301
<Position15>
301302
<Filename Value="unit1.pas"/>
302-
<Caret Line="279" Column="28" TopLine="272"/>
303+
<Caret Line="275" Column="24" TopLine="269"/>
303304
</Position15>
304305
<Position16>
305306
<Filename Value="unit1.pas"/>
306-
<Caret Line="281" Column="28" TopLine="274"/>
307+
<Caret Line="263" Column="3" TopLine="261"/>
307308
</Position16>
308309
<Position17>
309310
<Filename Value="unit1.pas"/>
310-
<Caret Line="310" TopLine="308"/>
311+
<Caret Line="128" Column="16" TopLine="97"/>
311312
</Position17>
312313
<Position18>
313314
<Filename Value="unit1.pas"/>
314-
<Caret Line="315" Column="28" TopLine="308"/>
315+
<Caret Line="498" Column="18" TopLine="491"/>
315316
</Position18>
316317
<Position19>
317318
<Filename Value="unit1.pas"/>
318-
<Caret Line="316" Column="28" TopLine="309"/>
319+
<Caret Line="132" Column="16" TopLine="112"/>
319320
</Position19>
320321
<Position20>
321322
<Filename Value="unit1.pas"/>
322-
<Caret Line="353" Column="36" TopLine="328"/>
323+
<Caret Line="556" Column="18" TopLine="535"/>
323324
</Position20>
324325
<Position21>
325326
<Filename Value="unit1.pas"/>
326-
<Caret Line="304" Column="3" TopLine="262"/>
327+
<Caret Line="263" Column="3" TopLine="261"/>
327328
</Position21>
328329
<Position22>
329330
<Filename Value="unit1.pas"/>
330-
<Caret Line="305" Column="3" TopLine="270"/>
331+
<Caret Line="128" Column="16" TopLine="112"/>
331332
</Position22>
332333
<Position23>
333334
<Filename Value="unit1.pas"/>
334-
<Caret Line="306" Column="3" TopLine="271"/>
335+
<Caret Line="494" Column="20" TopLine="491"/>
335336
</Position23>
336337
<Position24>
337338
<Filename Value="unit1.pas"/>
338-
<Caret Line="307" Column="3" TopLine="272"/>
339+
<Caret Line="126" Column="13" TopLine="112"/>
339340
</Position24>
340341
<Position25>
341342
<Filename Value="unit1.pas"/>
342-
<Caret Line="308" Column="3" TopLine="273"/>
343+
<Caret Line="240" Column="19" TopLine="222"/>
343344
</Position25>
344345
<Position26>
345346
<Filename Value="unit1.pas"/>
346-
<Caret Line="335" Column="5" TopLine="334"/>
347+
<Caret Line="133" Column="18" TopLine="115"/>
347348
</Position26>
348349
<Position27>
349350
<Filename Value="unit1.pas"/>
350-
<Caret Line="347" Column="21" TopLine="334"/>
351+
<Caret Line="561" Column="31" TopLine="479"/>
351352
</Position27>
352353
<Position28>
353354
<Filename Value="unit1.pas"/>
354-
<Caret Line="284" Column="10" TopLine="268"/>
355+
<Caret Line="200" Column="3" TopLine="198"/>
355356
</Position28>
357+
<Position29>
358+
<Filename Value="unit1.pas"/>
359+
<Caret Line="128" Column="16" TopLine="112"/>
360+
</Position29>
361+
<Position30>
362+
<Filename Value="unit1.pas"/>
363+
<Caret Line="494" Column="31" TopLine="470"/>
364+
</Position30>
356365
</JumpHistory>
357366
</ProjectOptions>
358367
<CompilerOptions>

miniprojects/Spirograph/unit1.lfm

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,16 @@ object Form1: TForm1
195195
TabOrder = 12
196196
OnClick = Button10Click
197197
end
198+
object CheckBox2: TCheckBox
199+
Left = 144
200+
Height = 22
201+
Top = 8
202+
Width = 105
203+
Caption = 'Clear on start'
204+
Checked = True
205+
State = cbChecked
206+
TabOrder = 13
207+
end
198208
object Timer1: TTimer
199209
OnTimer = Timer1Timer
200210
Left = 312

miniprojects/Spirograph/unit1.pas

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
Button8: TButton;
8686
Button9: TButton;
8787
CheckBox1: TCheckBox;
88+
CheckBox2: TCheckBox;
8889
CheckBox3: TCheckBox;
8990
Edit1: TEdit;
9091
Edit2: TEdit;
@@ -122,6 +123,7 @@
122123
Spiral: TSpirals;
123124
State: TState;
124125
pts: Tpts; // Leider funktioniert der Accumulationbuffer von OpenGL nicht mit OpenGlControl -> Also muss das von Hand nachgebildet werden.
126+
ptsStack: Array Of TPTS;
125127
StartTime, LastRenderTime: QWord;
126128
Procedure RenderScene();
127129
Procedure StartSim;
@@ -235,6 +237,7 @@
235237
Spiral := Nil;
236238
State := sIdle;
237239
pts := Nil;
240+
ptsStack := Nil;
238241
edit1.text := '50';
239242
edit2.text := '1';
240243
Button6.Click;
@@ -415,7 +418,7 @@
415418

416419
Procedure TForm1.RenderScene;
417420
Var
418-
i: Integer;
421+
i, j: Integer;
419422
n: QWord;
420423
d: Extended;
421424
m: TMatrix4x4;
@@ -458,7 +461,6 @@
458461
pts[high(pts)] := v2(m[3, 0], m[3, 1]);
459462
End;
460463
glPopMatrix;
461-
462464
// Render der Linien falls gewünscht
463465
If CheckBox1.Checked Then Begin
464466
glPushMatrix;
@@ -474,7 +476,6 @@
474476
End;
475477
glPopMatrix;
476478
End;
477-
// If State = sSimulate Then Begin
478479
glPushMatrix;
479480
glTranslatef(-OpenGLControl1.Width / 2, -OpenGLControl1.Height / 2, 0);
480481
glColor3f(1, 1, 1);
@@ -483,21 +484,23 @@
483484
glVertex2fv(@pts[i]);
484485
End;
485486
glend;
487+
For j := 0 To high(ptsStack) Do Begin
488+
glColor3f(1, 1, 1);
489+
glBegin(GL_LINE_STRIP);
490+
For i := 0 To high(ptsStack[j]) Do Begin
491+
glVertex2fv(@ptsStack[j, i]);
492+
End;
493+
glend;
494+
End;
486495
glPopMatrix;
487-
// End;
488496
End;
489497

490498
Procedure TForm1.StartSim;
491-
Var
492-
i: Integer;
493499
Begin
494500
State := sSimulate;
495501
LastRenderTime := GetTickCount64;
496502
StartTime := LastRenderTime;
497-
setlength(pts, 0);
498-
For i := 0 To high(Spiral) Do Begin
499-
Spiral[i].Rotation := 0;
500-
End;
503+
Reset;
501504
End;
502505

503506
Procedure TForm1.AddLCLElement;
@@ -554,6 +557,15 @@
554557
Var
555558
i: Integer;
556559
Begin
560+
If CheckBox2.Checked Then Begin
561+
setlength(ptsStack, 0);
562+
End
563+
Else Begin
564+
setlength(ptsStack, high(ptsStack) + 2);
565+
setlength(ptsStack[high(ptsStack)], length(pts));
566+
For i := 0 To high(pts) Do
567+
ptsStack[high(ptsStack)][i] := pts[i];
568+
End;
557569
setlength(pts, 0);
558570
For i := 0 To high(Spiral) Do Begin
559571
Spiral[i].Rotation := 0;

0 commit comments

Comments
 (0)