From 42d4c9b40784b0c607428f749e03a76f47a72f19 Mon Sep 17 00:00:00 2001 From: Svjatoslav Agejenko Date: Tue, 29 Jul 2025 06:40:33 +0300 Subject: [PATCH] Streamlined helicopter demo. --- 2D GFX/Fractals/index.html | 40 +- 2D GFX/Spirals/index.html | 54 +- 2D GFX/Textures/index.html | 34 +- 3D GFX/3D Synthezier/doc/index.html | 162 +-- 3D GFX/Helicopter/{data2.dat => COPTER.DAT} | 0 3D GFX/Helicopter/Helicopter.bas | 375 +----- 3D GFX/Helicopter/data.dat | 1129 ----------------- 3D GFX/Helicopter/demo, 1.png | Bin 43377 -> 0 bytes 3D GFX/Helicopter/demo, 2.png | Bin 45394 -> 0 bytes .../{demo, 3.png => screenshot, 1.png} | Bin .../{demo, 4.png => screenshot, 2.png} | Bin 3D GFX/Miscellaneous/index.html | 54 +- 3D GFX/Space/index.html | 36 +- Math/Plotting/index.html | 36 +- Math/Simulation/index.html | 64 +- Math/Truth table/index.html | 64 +- index.org | 18 +- 17 files changed, 285 insertions(+), 1781 deletions(-) rename 3D GFX/Helicopter/{data2.dat => COPTER.DAT} (100%) delete mode 100755 3D GFX/Helicopter/data.dat delete mode 100644 3D GFX/Helicopter/demo, 1.png delete mode 100644 3D GFX/Helicopter/demo, 2.png rename 3D GFX/Helicopter/{demo, 3.png => screenshot, 1.png} (100%) rename 3D GFX/Helicopter/{demo, 4.png => screenshot, 2.png} (100%) diff --git a/2D GFX/Fractals/index.html b/2D GFX/Fractals/index.html index 3b83782..22bd7e9 100644 --- a/2D GFX/Fractals/index.html +++ b/2D GFX/Fractals/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Fractals @@ -210,11 +210,11 @@

Table of Contents

@@ -236,8 +236,8 @@ -
-

1. Fractal circles

+
+

1. Fractal circles

This QBasic program generates a visually captivating spiral fractal @@ -247,7 +247,7 @@ geometry, recursive programming, and graphical design.

-
+

fractal%20circles.png

@@ -266,8 +266,8 @@ indefinitely.
-
-

2. Fractal circles animated

+
+

2. Fractal circles animated

This QBasic program creates an animated fractal composed of circles, @@ -287,29 +287,29 @@ system to control the animation's progression.

-
-

3. Fractal of squares

+
+

3. Fractal of squares

This QBasic program generates and displays a fractal pattern composed of squares.

-
+

fractal%20squares,%201.png

-
+

fractal%20squares,%202.png

-
-

4. Fractal of squares animated

+
+

4. Fractal of squares animated

This QBasic program generates an animated fractal pattern composed of @@ -331,8 +331,8 @@ resulting in a dynamic and ever-changing geometric pattern.

-
-

5. Fractal of trees

+
+

5. Fractal of trees

QBasic program that generates a visually appealing fractal tree @@ -355,7 +355,7 @@ resembles a tree, with branches that grow and change over time.

-

Created: 2025-07-29 ti 03:07

+

Created: 2025-07-29 ti 04:01

Validate

diff --git a/2D GFX/Spirals/index.html b/2D GFX/Spirals/index.html index 10943cb..3767aa9 100644 --- a/2D GFX/Spirals/index.html +++ b/2D GFX/Spirals/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Spiral series @@ -210,12 +210,12 @@

Table of Contents

@@ -236,11 +236,11 @@ } -
-

1. Spiral with increasing density

+
+

1. Spiral with increasing density

-
+

spiral.png

@@ -320,11 +320,11 @@ userInput$ = INPUT$(1)
-
-

2. Spiral with varying height

+
+

2. Spiral with varying height

-
+

spiral, 2.png

@@ -391,11 +391,11 @@ a$ = INPUT$(1)
-
-

3. Shaded spiral

+
+

3. Shaded spiral

-
+

spiral, 3.png

@@ -497,8 +497,8 @@ a$ = INPUT$(1)
-
-

4. Sphere forming spiral

+
+

4. Sphere forming spiral

Similar to previous spiral, Line segments are connected between the @@ -507,7 +507,7 @@ multiple linked spherical shapes. Initially point cloud in shown:

-
+

spiral, 4, 1.png

@@ -517,7 +517,7 @@ In the next step, points are connected using lines:

-
+

spiral, 4, 2.png

@@ -622,11 +622,11 @@ a$ = INPUT$(1)
-
-

5. Textured spherical spiral

+
+

5. Textured spherical spiral

-
+

spiral, 5.png

@@ -749,11 +749,11 @@ a$ = INPUT$(1)
-
-

6. Textured and shaded spherical spiral

+
+

6. Textured and shaded spherical spiral

-
+

spiral, 6.png

@@ -937,7 +937,7 @@ yStep2 = (oppositePointY2 - oppositePointY1) / stepCount
-

Created: 2025-07-29 ti 03:07

+

Created: 2025-07-29 ti 04:01

Validate

diff --git a/2D GFX/Textures/index.html b/2D GFX/Textures/index.html index d8b7d55..240eba7 100644 --- a/2D GFX/Textures/index.html +++ b/2D GFX/Textures/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Algorithmic textures @@ -210,11 +210,11 @@

Table of Contents

@@ -233,8 +233,8 @@ } -
-

1. Circular waves

+
+

1. Circular waves

This QBasic program creates visually captivating circular wave @@ -313,8 +313,8 @@ algorithms can produce intricate and visually appealing results.

-
-

2. Diamond square clouds

+
+

2. Diamond square clouds

This QBasic program demonstrates the Diamond-Square algorithm, a @@ -429,8 +429,8 @@ WAITa$ = INPUT$(1)

-
-

3. Old paper

+
+

3. Old paper

This QBasic program generates a procedural texture that simulates the @@ -527,8 +527,8 @@ inputKey$ = INPUT$(1)

-
-

4. Wood

+
+

4. Wood

This QBasic program creates a visually appealing simulation of a wood @@ -622,8 +622,8 @@ exitKey$ = INPUT$(1)

-
-

5. Yellow flame

+
+

5. Yellow flame

"Yellow Flame" is a visually captivating program written in QBasic @@ -702,7 +702,7 @@ userInput$ = INPUT$(1)

-

Created: 2025-07-29 ti 03:07

+

Created: 2025-07-29 ti 04:01

Validate

diff --git a/3D GFX/3D Synthezier/doc/index.html b/3D GFX/3D Synthezier/doc/index.html index dbe3e1e..e0ee18d 100644 --- a/3D GFX/3D Synthezier/doc/index.html +++ b/3D GFX/3D Synthezier/doc/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + 3D Synthezier @@ -1103,39 +1103,39 @@ hsAddReviewPanels();

Table of Contents

@@ -1157,8 +1157,8 @@ hsAddReviewPanels(); -
-

1. Operating principle

+
+

1. Operating principle

Parses scene definition language and creates 3D world based on @@ -1221,60 +1221,60 @@ They were produced by importing generated -

1.1. Rectangular city

+
+

1.1. Rectangular city

-
+

rectangular city, 1.jpeg

-
+

rectangular city, 2.jpeg

-
+

rectangular city, 3.jpeg

-
-

1.2. Hexagonal city

+
+

1.2. Hexagonal city

-
+

hexagonal city, 1.jpeg

-
+

hexagonal city, 2.jpeg

-
+

hexagonal city, 3.jpeg

-
-

2. Scene description language

+
+

2. Scene description language

See also examples.

-
-

2.1. here

+
+

2.1. here

 here
@@ -1285,8 +1285,8 @@ defines new segment
 

-
-

2.2. p

+
+

2.2. p

 p  x y z
@@ -1297,8 +1297,8 @@ defines new point
 

-
-

2.3. f

+
+

2.3. f

 f  p1 p2 p3 p4
@@ -1309,8 +1309,8 @@ defines new polygon,  p4  may be unused
 

-
-

2.4. warn

+
+

2.4. warn

 warn  <message>
@@ -1321,8 +1321,8 @@ displays warning message, and wait for key
 

-
-

2.5. end

+
+

2.5. end

 end
@@ -1333,8 +1333,8 @@ terminates parser
 

-
-

2.6. mtl

+
+

2.6. mtl

 mtl  material
@@ -1345,8 +1345,8 @@ selects material
 

-
-

2.7. mtlrnd

+
+

2.7. mtlrnd

 mtlrnd  material ...
@@ -1357,8 +1357,8 @@ selects random material from list
 

-
-

2.8. obj

+
+

2.8. obj

 obj  object xz45 xy20 x+3 y*2
@@ -1373,14 +1373,14 @@ directly from file, and not chached, to allow loading of greater than
 

-
+

rotation.png

-
-

2.9. rnd

+
+

2.9. rnd

 rnd  p^1^2^3 p^7^2^1
@@ -1391,8 +1391,8 @@ select random command to execute, ^ will be converted to spaces.
 

-
-

2.10. #

+
+

2.10. #

 # whatever text
@@ -1403,8 +1403,8 @@ comment
 

-
-

2.11. out

+
+

2.11. out

 out  file
@@ -1415,8 +1415,8 @@ specify output file name, must be first command
 

-
-

2.12. set

+
+

2.12. set

 set  variable  contents
@@ -1428,8 +1428,8 @@ string. max variables is 100. first is 0.
 

-
-

2.13. variables usage

+
+

2.13. variables usage

 anycommand %1 anything
@@ -1440,8 +1440,8 @@ inserts variable 1 contents info line
 

-
-

2.14. cmp

+
+

2.14. cmp

 cmp  flag string1 string2
@@ -1452,8 +1452,8 @@ compares strings, and inserts TRUE to flag, if they are equal, else inserts FALS
 

-
-

2.15. ?

+
+

2.15. ?

 ?flag anycommand
@@ -1468,8 +1468,8 @@ exapmle: ?3 obj car z*2 xy45
 

-
-

2.16. dum

+
+

2.16. dum

 dum
@@ -1482,16 +1482,16 @@ dummy function, does notheing
 
-
-

3. Installation

+
+

3. Installation

Edit bin/3dparse.bas file and update include path in there.

-
-

3.1. System requirements

+
+

3.1. System requirements

@@ -1522,8 +1522,8 @@ Edit bin/3dparse.bas file and update include path in there. -
-

3.2. Directory layout

+
+

3.2. Directory layout

bin
@@ -1540,8 +1540,8 @@ Edit bin/3dparse.bas file and update include path in there.
-
-

4. Usage

+
+

4. Usage

Make sure you have QB binaries in your PATH. Execute @@ -1566,7 +1566,7 @@ Visualize scene with your favourite renderer.

-

Created: 2025-07-29 ti 03:08

+

Created: 2025-07-29 ti 04:02

Validate

diff --git a/3D GFX/Helicopter/data2.dat b/3D GFX/Helicopter/COPTER.DAT similarity index 100% rename from 3D GFX/Helicopter/data2.dat rename to 3D GFX/Helicopter/COPTER.DAT diff --git a/3D GFX/Helicopter/Helicopter.bas b/3D GFX/Helicopter/Helicopter.bas index d227cbc..49b9f39 100644 --- a/3D GFX/Helicopter/Helicopter.bas +++ b/3D GFX/Helicopter/Helicopter.bas @@ -1,33 +1,15 @@ DECLARE SUB DisplayScene1 () -DECLARE SUB DisplayScene9 () DECLARE SUB DisplayScene2 () -DECLARE SUB DisplayScene8 () DECLARE SUB DisplayScene3 () -DECLARE SUB DisplayScene4 () -DECLARE SUB DisplayScene5 () -DECLARE SUB DisplayScene7 () DECLARE SUB InitializeProgram () -DECLARE SUB DisplayScenePart1 () -DECLARE SUB DisplayScenePart2 () -DECLARE SUB DisplayScenePart3 () -DECLARE SUB DisplayScenePart4 () -DECLARE SUB DisplayScenePart5 () -DECLARE SUB DisplayScenePart6 () -DECLARE SUB DisplayScenePart7 () -DECLARE SUB DisplayScenePart8 () -DECLARE SUB DisplayScenePart10 () -DECLARE SUB DisplayScenePart9 () DECLARE SUB DrawRoundedBox (topLeftX!, topLeftY!, bottomRightX!, bottomRightY!) -DECLARE SUB ComputeShadeValue (firstPointX!, firstPointY!, firstPointZ!, secondPointX!, secondPointY!, secondPointZ!, thirdPointX!, thirdPointY!, thirdPointZ!, shadeValue!) DECLARE SUB GetAngle (firstPointX!, firstPointY!, secondPointX!, secondPointY!, angleBetween!) -DECLARE SUB RotatePoint (centerX!, centerY!, pointX!, pointY!, rotationAngle!) -DECLARE SUB FillPolygon (vertex1X!, vertex1Y!, vertex2X!, vertex2Y!, vertex3X!, vertex3Y!, fillColor!) +DECLARE SUB RotatePoint (rotationCenterX!, rotationCenterY!, pointX!, pointY!, rotationAngle!) DECLARE SUB InitializeFont () DECLARE SUB WaitForInput () DECLARE SUB MakeBackground () DECLARE SUB SetPalette (red!, green!, blue!, colorIndex!) DECLARE SUB PrintText (posX!, posY!, scale!, colorValue!, textString$) - ' Presentation demonstrating realtime 3D graphics. ' ' This program is free software: released under Creative Commons Zero (CC0) license @@ -51,10 +33,6 @@ InitializeProgram DisplayScene1 DisplayScene2 DisplayScene3 -DisplayScene4 -DisplayScene7 -DisplayScene8 - SUB ComputeShadeValue (firstPointX, firstPointY, firstPointZ, secondPointX, secondPointY, secondPointZ, thirdPointX, thirdPointY, thirdPointZ, shadeValue) ' @@ -110,351 +88,6 @@ SUB ComputeShadeValue (firstPointX, firstPointY, firstPointZ, secondPointX, seco END SUB SUB DisplayScene1 - ' - ' Loads a 3D model from data.dat and demonstrates real-time rotation. - ' The model is projected to 2D and animated with a rotating effect. - ' - - SetPalette 0, 63, 20, 255 - DIM modelVertexX(0 TO 1000) - DIM modelVertexY(0 TO 1000) - DIM modelVertexZ(0 TO 1000) - DIM projectedVertexX(0 TO 1000) - DIM projectedVertexY(0 TO 1000) - DIM lineStartVertex(0 TO 1500) - DIM lineEndVertex(0 TO 1500) - DIM oldLineStartX(1 TO 1500) - DIM oldLineStartY(1 TO 1500) - DIM oldLineEndX(1 TO 1500) - DIM oldLineEndY(1 TO 1500) - DIM totalVertices, totalLines - DIM rotationAngle1, rotationAngle2, rotationAngle3 - DIM rotationSpeed1, rotationSpeed2, rotationSpeed3 - DIM incrementVertices, incrementPolygons - DIM animationTime - DIM currentLines - DIM progressIndex - - animationTime = 0 - progressIndex = 1 - rotationAngle1 = 0 - rotationAngle2 = 0 - totalVertices = -1 - totalLines = 0 - incrementVertices = 0 - incrementPolygons = 0 - currentLines = 0 - - SetPalette 40, 40, 40, 254 - COLOR 254 - LOCATE 2, 11 - PRINT "One moment" - - OPEN "data.dat" FOR INPUT AS #1 - INPUT #1, incrementVertices - INPUT #1, incrementPolygons - - FOR vertexIndex = 1 TO incrementVertices - INPUT #1, xVal, yVal, zVal - totalVertices = totalVertices + 1 - modelVertexX(totalVertices) = xVal - 100 - modelVertexY(totalVertices) = yVal - modelVertexZ(totalVertices) = zVal - NEXT vertexIndex - - INPUT #1, lineVal1, lineVal2, lineVal3 - - FOR polygonIndex = 1 TO incrementPolygons - 1 - INPUT #1, lineVal1!, lineVal2!, lineVal3! - newLineStart! = lineVal1! - newLineEnd! = lineVal2! - GOSUB AddLine - newLineStart! = lineVal2! - newLineEnd! = lineVal3! - GOSUB AddLine - newLineStart! = lineVal1! - newLineEnd! = lineVal3! - GOSUB AddLine - LOCATE 4, 10 - PRINT STR$(INT(polygonIndex / (incrementPolygons - 1) * 100)) + "% ready" - NEXT polygonIndex - - CLOSE 1 - CLS - -RotateLoop: - animationTime = animationTime + 1 - quitKey$ = INKEY$ - IF quitKey$ = "q" THEN END - - varA = COS(animationTime / 25) - rotationAngle1 = COS(animationTime / 29) * varA - rotationAngle2 = (globalPiValue / 2) + SIN(animationTime / 42) * varA - sin1 = SIN(rotationAngle1) - cos1 = COS(rotationAngle1) - sin2 = SIN(rotationAngle2) - cos2 = COS(rotationAngle2) - - IF progressIndex >= 1 THEN - currentLines = currentLines + progressIndex - progressIndex = progressIndex + .03 - IF currentLines > totalLines THEN currentLines = totalLines: progressIndex = 0 - END IF - - ' Project each 3D vertex to 2D - FOR vertexIndex = 0 TO totalVertices - x = modelVertexX(vertexIndex) - y = modelVertexY(vertexIndex) - z = modelVertexZ(vertexIndex) - zTemp = z * sin1 + y * cos1 - yTemp = y * sin1 - z * cos1 - zFinal = zTemp * sin2 + x * cos2 - xFinal = x * sin2 - zTemp * cos2 - zFinal = zFinal + 100 - xFinal = xFinal / zFinal * 74 * 2 - yFinal = yTemp / zFinal * 65 * 2 - projectedVertexX(vertexIndex) = xFinal + 160 - projectedVertexY(vertexIndex) = yFinal + 80 - NEXT vertexIndex - - ' Draw lines between vertices - FOR lineIndex = 1 TO currentLines - startVertex = lineStartVertex(lineIndex) - endVertex = lineEndVertex(lineIndex) - x1 = projectedVertexX(startVertex) - y1 = projectedVertexY(startVertex) - x2 = projectedVertexX(endVertex) - y2 = projectedVertexY(endVertex) - LINE (oldLineStartX(lineIndex), oldLineStartY(lineIndex))-(oldLineEndX(lineIndex), oldLineEndY(lineIndex)), 0 - LINE (x1, y1)-(x2, y2), 255 - oldLineStartX(lineIndex) = x1 - oldLineStartY(lineIndex) = y1 - oldLineEndX(lineIndex) = x2 - oldLineEndY(lineIndex) = y2 - NEXT lineIndex - - SOUND 0, .5 - IF animationTime < 280 THEN GOTO RotateLoop - GOTO EndScene - -AddLine: - FOR checkIndex = 1 TO totalLines - IF lineStartVertex(checkIndex) = newLineStart! THEN - IF lineEndVertex(checkIndex) = newLineEnd! THEN RETURN - END IF - IF lineStartVertex(checkIndex) = newLineEnd! THEN - IF lineEndVertex(checkIndex) = newLineStart! THEN RETURN - END IF - NEXT checkIndex - - totalLines = totalLines + 1 - lineStartVertex(totalLines) = newLineStart! - lineEndVertex(totalLines) = newLineEnd! - RETURN - -EndScene: - globalAngleOne = rotationAngle1 - globalAngleTwo = rotationAngle2 -END SUB - -SUB DisplayScene2 - ' - ' Loads human face 3D model "data.dat" and projects triangular faces in 2D. - ' Each triangle's average depth is computed, and polygons are drawn - ' from back to front with FillPolygon. The shading is computed too. - ' - - SetPalette 0, 63, 20, 255 - CLS - globalAngleOne = 0 - globalAngleTwo = 1.5 - DIM pointX(0 TO 2000) - DIM pointY(0 TO 2000) - DIM pointZ(0 TO 2000) - DIM rotatedX(0 TO 2000) - DIM rotatedY(0 TO 2000) - DIM rotatedZ(0 TO 2000) - DIM polyVertex1(1 TO 2000) - DIM polyVertex2(1 TO 2000) - DIM polyVertex3(1 TO 2000) - numPoints = 0 - numTriangles = 0 - - OPEN "data.dat" FOR INPUT AS #1 - INPUT #1, totalPoints - INPUT #1, totalPolys - - FOR loopIndex = 1 TO totalPoints - INPUT #1, posXVal, posYVal, posZVal - pointX(numPoints) = posXVal - 100 - pointY(numPoints) = posYVal - pointZ(numPoints) = posZVal - numPoints = numPoints + 1 - NEXT loopIndex - - INPUT #1, lineValA, lineValB, lineValC - - FOR loopIndex = 1 TO totalPolys - 1 - INPUT #1, lineValA, lineValB, lineValC - numTriangles = numTriangles + 1 - polyVertex1(numTriangles) = lineValA - polyVertex2(numTriangles) = lineValB - polyVertex3(numTriangles) = lineValC - NEXT loopIndex - - CLOSE #1 - - sin1 = SIN(globalAngleOne) - cos1 = COS(globalAngleOne) - sin2 = SIN(globalAngleTwo) - cos2 = COS(globalAngleTwo) - - ' Project each 3D point - FOR loopIndex = 0 TO numPoints - localX = pointX(loopIndex) - localY = pointY(loopIndex) - localZ = pointZ(loopIndex) - zTmp = localZ * sin1 + localY * cos1 - yTmp = localY * sin1 - localZ * cos1 - zFin = zTmp * sin2 + localX * cos2 - xFin = localX * sin2 - zTmp * cos2 - zFin = zFin + 100 - xFin = xFin / zFin * 74 * 2 - yFin = yTmp / zFin * 65 * 2 - rotatedX(loopIndex) = xFin + 160 - rotatedY(loopIndex) = yFin + 80 - rotatedZ(loopIndex) = zFin - NEXT loopIndex - - ' Adjust palette for shading - FOR loopIndex = 1 TO 49 - SetPalette loopIndex * 1.1 + 20, loopIndex * 1.1 + 10, loopIndex * 1.1, loopIndex - NEXT loopIndex - - DIM polyDepth(1 TO numTriangles) - - FOR loopIndex = 1 TO numTriangles - polyDepth(loopIndex) = (rotatedZ(polyVertex1(loopIndex)) + rotatedZ(polyVertex2(loopIndex)) + rotatedZ(polyVertex3(loopIndex))) - NEXT loopIndex - - endIndex = numTriangles - - ' Sort by descending depth (z) - FOR loopIndex = 1 TO numTriangles - bigVal = -10000 - bigIndex = 1 - FOR checkIdx = 1 TO endIndex - IF polyDepth(checkIdx) > bigVal THEN - bigVal = polyDepth(checkIdx) - bigIndex = checkIdx - END IF - NEXT checkIdx - - vertexA = polyVertex1(bigIndex) - vertexB = polyVertex2(bigIndex) - vertexC = polyVertex3(bigIndex) - polyDepth(bigIndex) = polyDepth(endIndex) - polyVertex1(bigIndex) = polyVertex1(endIndex) - polyVertex2(bigIndex) = polyVertex2(endIndex) - polyVertex3(bigIndex) = polyVertex3(endIndex) - endIndex = endIndex - 1 - - ComputeShadeValue rotatedX(vertexA), rotatedY(vertexA), rotatedZ(vertexA), rotatedX(vertexB), rotatedY(vertexB), rotatedZ(vertexB), rotatedX(vertexC), rotatedY(vertexC), rotatedZ(vertexC), shadeVal - - FillPolygon INT(rotatedX(vertexA)), INT(rotatedY(vertexA)), INT(rotatedX(vertexB)), INT(rotatedY(vertexB)), INT(rotatedX(vertexC)), INT(rotatedY(vertexC)), INT(shadeVal) - NEXT loopIndex - -' Delay before proceeding to next scene - FOR loopIndex = 1 TO 20 - SOUND 0, 1 - NEXT loopIndex - -END SUB - -SUB DisplayScene3 - ' - ' Demonstrates simple raster/wave effects by copying screen slices, - ' does some random shifting, then shows text with circles around the bits. - ' - - DIM bufferArray(1 TO 10000) - DIM waveArray(0 TO 35) - - - ' Build a wave-like boundary in waveArray() - FOR loopIndex = 0 TO 30 - IF loopIndex <= 5 THEN waveArray(loopIndex) = 120 + (SQR((20 - loopIndex) * loopIndex)) - IF (loopIndex > 5) AND (loopIndex < 25) THEN waveArray(loopIndex) = 120 + 10 - IF loopIndex >= 25 THEN waveArray(loopIndex) = 120 + (SQR((30 - loopIndex) * (loopIndex - 10))) - NEXT loopIndex - - ' Slide the screen upward in small blocks - FOR screenY = 0 TO 30 - FOR screenX = 10 TO 300 STEP 10 - GET (screenX, 0)-(screenX + 9, 198), bufferArray(1) - PUT (screenX, 1), bufferArray(1), PSET - NEXT screenX - - ' Slight color shift - FOR colorIx = 1 TO 49 - SetPalette colorIx * 1.1 + (20 - screenY), colorIx * 1.1 + 10 + (screenY / 1.5), colorIx * 1.1, colorIx - NEXT colorIx - - SOUND 0, 1 - LINE (160 - waveArray(screenY), 20)-(160 + waveArray(screenY), 20), 255 - NEXT screenY - - LOCATE 1, 1 - COLOR 254 - SetPalette 0, 0, 0, 254 - PRINT "Test 123456789" - SetPalette 63, 0, 0, 253 - - ' Draw circles around the nonzero pixels of the printed text - FOR rowY = 0 TO 8 - FOR rowX = 0 TO 120 - pixelVal = POINT(rowX, rowY) - IF pixelVal > 0 THEN CIRCLE (rowX * 2 + 50, rowY * 3 + 26), 2, 0 - NEXT rowX - - FOR rowX = 0 TO 120 - pixelVal = POINT(rowX, rowY + 1) - IF pixelVal > 0 THEN CIRCLE (rowX * 2 + 50, (rowY + 1) * 3 + 26), 2, 253 - NEXT rowX - - SOUND 0, 2 - NEXT rowY - - RANDOMIZE 1 - - ' Perform random screen shifts - FOR loopIndex = 1 TO 10 - randY = RND * 100 + 50 - FOR screenX = 10 TO 300 STEP 10 - GET (screenX, randY)-(screenX + 9, 198), bufferArray(1) - PUT (screenX, randY - 1), bufferArray(1), PSET - NEXT screenX - NEXT loopIndex - - COLOR 253 - SetPalette 0, 0, 0, 253 - LOCATE 1 - PRINT " Author: Svjatoslav Agejenko 30.09.2001 " - - GET (0, 0)-(319, 8), bufferArray(1) - LOCATE 1 - PRINT " " - PUT (0, 190), bufferArray(1), PSET - - FOR loopIndex = 1 TO 32 - SetPalette 0, loopIndex, loopIndex * 2, 253 - SOUND 0, 1 - NEXT loopIndex - - WaitForInput -END SUB - -SUB DisplayScene4 ' ' Builds a fractal backdrop, prints short text lines @@ -473,7 +106,7 @@ SUB DisplayScene4 WaitForInput END SUB -SUB DisplayScene7 +SUB DisplayScene2 ' ' Simple transitional effect: draws horizontal lines across the screen ' in steps, clearing or darkening each row to black. @@ -488,7 +121,7 @@ SUB DisplayScene7 NEXT outerIndex END SUB -SUB DisplayScene8 +SUB DisplayScene3 ' ' A more complex 3D scene: ' Terrain with various heights. @@ -612,7 +245,7 @@ FractalSubLoop: destinationZ = 200 ' Load helicopter model - OPEN "data2.dat" FOR INPUT AS #1 + OPEN "copter.dat" FOR INPUT AS #1 indexA = 0 indexB = 0 helicopterPointer = totalPoints + 1 diff --git a/3D GFX/Helicopter/data.dat b/3D GFX/Helicopter/data.dat deleted file mode 100755 index b97fdd7..0000000 --- a/3D GFX/Helicopter/data.dat +++ /dev/null @@ -1,1129 +0,0 @@ -410 718 -89 6 10 -88 2 7 -87 6 8 -83 6 6 -99 -6 17 -99 -10 13 -96 -10 12 -95 -6 16 -93 -9 10 -92 -5 15 -90 -4 8 -91 -6 6 -88 -2 2 -90 2 12 -87 5 14 -88 2 16 -91 -3 18 -94 -4 19 -99 -5 20 -83 -1 23 -79 4 17 -76 1 22 -71 6 16 -70 6 19 -66 12 14 -64 12 16 -63 16 11 -62 17 13 -60 23 10 -64 17 7 -63 15 2 -59 22 4 -70 10 5 -83 1 -0 -75 4 -0 -75 7 5 -69 7 0 -57 22 -8 -60 14 -8 -68 4 -8 -74 0 -9 -86 -3 -9 -90 -8 -2 -93 -14 4 -92 -11 1 -92 -14 -1 -88 -14 -6 -90 -18 -5 -88 -12 -9 -91 -10 -14 -89 -8 -16 -85 -8 -19 -77 -1 -20 -71 4 -30 -69 4 -17 -90 -12 -19 -94 -15 -15 -92 -13 -12 -96 -16 6 -99 -17 6 -99 -25 0 -96 -21 1 -93 -17 2 -93 -21 -0 -93 -23 -4 -96 -25 -1 -90 -14 -10 -90 -16 -9 -91 -18 -8 -92 -19 -9 -94 -19 -10 -95 -24 -6 -96 -17 -13 -95 -17 -12 -96 -15 -15 -94 -15 -13 -99 -27 -3 -96 -26 -3 -99 -25 -8 -98 -16 -15 -98 -14 -19 -96 -14 -19 -94 -14 -18 -98 -16 -23 -96 -16 -23 -93 -15 -23 -89 -13 -24 -84 -9 -25 -78 -3 -27 -77 -2 -30 -80 -4 -33 -81 -3 -30 -84 -9 -32 -98 -12 -39 -96 -16 -33 -98 -16 -33 -93 -11 -38 -93 -15 -33 -88 -12 -33 -88 -10 -37 -84 -9 -36 -80 -3 -41 -86 -7 -41 -89 -9 -41 -93 -11 -40 -98 -13 -46 -92 -12 -46 -89 -10 -46 -86 -8 -46 -81 -3 -46 -74 3 -46 -74 3 -40 -61 14 -16 -57 23 -15 -57 23 -24 -62 14 -27 -60 23 -34 -66 15 -38 -62 22 -38 -67 16 -45 -64 22 -45 -69 17 -51 -73 17 -56 -71 21 -56 -79 20 -62 -78 5 -57 -83 5 -61 -67 21 -52 -69 10 -39 -75 4 -52 -80 -3 -52 -98 -13 -54 -93 -13 -54 -93 -9 -59 -98 -10 -59 -98 -2 -63 -93 -2 -62 -88 -3 -61 -89 -9 -57 -89 -11 -53 -86 -9 -53 -83 -3 -57 -98 5 -64 -93 6 -63 -98 20 -67 -92 18 -66 -86 20 -65 -88 6 -62 -61 18 14 -62 12 18 -60 22 20 -63 16 23 -68 5 22 -69 8 27 -61 22 27 -63 19 28 -63 21 32 -70 12 35 -70 10 31 -76 1 25 -76 2 29 -76 4 32 -77 7 37 -76 9 42 -70 14 40 -65 20 38 -71 19 46 -77 12 48 -82 5 43 -75 18 51 -79 18 55 -82 20 59 -85 19 60 -84 14 57 -83 25 62 -87 25 62 -91 24 64 -90 18 62 -95 24 64 -94 17 63 -99 24 64 -99 17 63 -99 11 59 -93 11 59 -89 12 59 -82 8 50 -83 3 38 -82 0 34 -83 -0 31 -82 -1 27 -89 -3 23 -89 -3 28 -93 -3 24 -99 -4 25 -93 -3 28 -99 -4 28 -89 -2 32 -93 -2 32 -99 -2 32 -93 -0 35 -99 -0 35 -93 0 38 -99 0 39 -92 2 44 -99 2 44 -93 7 55 -99 5 52 -93 4 51 -88 6 51 -89 3 43 -89 1 38 -89 -0 34 -66 11 11 -68 10 8 -72 6 12 -74 6 8 -80 4 13 -81 5 9 -84 5 10 -110 6 8 -109 2 7 -109 6 10 -114 6 6 -103 -6 16 -102 -10 12 -105 -5 15 -105 -9 10 -107 -4 8 -107 -6 6 -109 -2 2 -107 2 12 -110 5 13 -110 2 16 -106 -3 18 -103 -4 19 -114 -1 23 -118 5 16 -121 1 21 -128 6 18 -126 7 16 -134 12 15 -132 12 13 -135 17 12 -134 16 11 -138 23 9 -133 17 7 -138 22 4 -134 15 2 -127 10 5 -114 1 -0 -122 4 -0 -122 7 5 -128 8 0 -140 23 -9 -137 14 -9 -129 4 -9 -123 0 -9 -111 -3 -9 -107 -8 -2 -106 -11 1 -104 -14 4 -106 -14 -1 -109 -14 -6 -107 -18 -5 -109 -12 -9 -106 -10 -14 -108 -8 -16 -112 -8 -19 -120 -0 -21 -128 4 -18 -125 4 -30 -107 -12 -19 -103 -15 -15 -105 -13 -12 -102 -16 6 -101 -21 1 -104 -17 2 -104 -21 -0 -104 -23 -4 -101 -25 -1 -107 -14 -10 -107 -16 -9 -106 -18 -8 -105 -19 -9 -102 -24 -6 -104 -19 -10 -102 -17 -12 -101 -17 -13 -101 -15 -15 -103 -15 -13 -102 -26 -3 -101 -14 -19 -103 -14 -18 -101 -16 -23 -104 -15 -23 -108 -13 -24 -113 -9 -25 -118 -3 -28 -120 -1 -30 -117 -4 -34 -116 -2 -30 -113 -9 -32 -101 -16 -33 -104 -11 -38 -104 -15 -33 -109 -12 -33 -109 -10 -37 -112 -8 -36 -116 -3 -41 -110 -7 -41 -108 -9 -41 -103 -11 -40 -104 -12 -46 -108 -10 -46 -111 -8 -46 -116 -3 -47 -122 4 -46 -123 4 -40 -136 14 -17 -140 23 -16 -139 23 -25 -134 14 -27 -136 23 -34 -135 23 -38 -131 16 -38 -132 22 -46 -129 16 -45 -125 21 -56 -123 18 -56 -127 17 -51 -117 21 -62 -119 5 -57 -113 6 -61 -129 21 -52 -127 10 -39 -121 4 -52 -116 -3 -52 -103 -13 -54 -103 -9 -59 -103 -2 -62 -109 -3 -61 -108 -9 -57 -108 -11 -54 -111 -9 -53 -113 -3 -57 -104 6 -63 -104 18 -66 -109 6 -63 -110 20 -65 -135 13 18 -136 18 14 -138 22 19 -135 16 22 -128 8 26 -129 6 22 -134 19 27 -136 22 26 -135 22 32 -127 11 30 -128 13 35 -122 1 25 -122 2 29 -121 4 32 -121 7 37 -128 14 39 -121 9 41 -132 20 38 -127 19 46 -121 12 48 -115 5 43 -123 18 51 -119 18 55 -114 14 56 -113 20 60 -116 20 59 -111 25 62 -115 25 61 -108 18 62 -107 24 64 -104 17 63 -103 24 64 -105 11 59 -109 12 58 -115 9 50 -115 3 38 -115 1 34 -115 -0 31 -115 -1 27 -109 -3 23 -109 -3 28 -104 -3 24 -105 -3 28 -109 -2 32 -105 -2 31 -105 -0 34 -105 0 38 -105 2 43 -105 7 55 -105 4 51 -110 6 50 -109 3 43 -109 1 38 -109 -0 34 -129 10 7 -131 11 11 -125 6 12 -123 6 7 -117 5 12 -117 5 9 -113 5 10 -2 0 1 -3 2 1 -6 4 5 -4 6 7 -8 7 6 -7 8 9 -8 10 9 -11 10 8 -12 10 11 -1 10 12 -13 10 1 -9 10 13 -0 13 1 -14 13 0 -15 13 14 -9 15 16 -15 9 13 -17 9 16 -9 17 7 -18 7 17 -7 18 4 -19 15 14 -20 19 14 -19 20 21 -22 21 20 -21 22 23 -24 23 22 -23 24 25 -26 25 24 -25 26 27 -28 27 26 -28 26 29 -31 29 30 -32 30 29 -33 3 1 -12 33 1 -34 3 33 -3 34 35 -36 35 34 -35 36 32 -30 32 36 -31 30 37 -37 30 38 -38 30 36 -39 38 36 -34 39 36 -40 34 33 -40 33 41 -34 40 39 -41 33 12 -42 41 12 -44 8 43 -8 44 11 -42 11 44 -11 42 12 -42 44 45 -46 42 45 -47 46 45 -42 46 41 -48 41 46 -41 48 49 -50 41 49 -41 50 51 -52 41 51 -54 52 53 -52 54 40 -41 52 40 -50 49 55 -51 50 55 -56 55 49 -57 56 49 -8 58 43 -58 8 6 -58 5 59 -5 58 6 -61 59 60 -59 61 58 -62 58 61 -58 62 43 -44 43 62 -45 44 62 -63 45 62 -47 63 64 -63 47 45 -61 63 62 -63 61 65 -48 57 49 -57 48 66 -67 66 48 -46 67 48 -47 68 67 -46 47 67 -69 47 64 -47 69 68 -64 70 69 -70 64 71 -73 71 72 -71 73 70 -74 73 72 -75 74 56 -75 56 57 -74 75 73 -76 61 60 -61 76 65 -64 65 77 -65 64 63 -77 65 76 -78 77 76 -77 78 71 -77 71 64 -79 71 78 -71 79 72 -74 72 79 -80 74 79 -74 80 81 -56 81 82 -81 56 74 -55 56 82 -84 80 83 -80 84 81 -85 81 84 -81 85 82 -55 82 85 -86 55 85 -55 86 87 -51 55 87 -88 51 87 -51 88 52 -52 88 89 -53 52 89 -90 53 89 -89 91 90 -88 91 89 -90 91 92 -95 93 94 -96 94 93 -94 96 97 -98 97 96 -99 98 96 -98 99 100 -92 98 100 -90 92 100 -101 90 100 -102 101 100 -99 102 100 -102 99 103 -96 103 99 -103 96 104 -93 104 96 -106 93 105 -93 106 104 -107 104 106 -104 107 103 -108 103 107 -103 108 102 -101 102 109 -109 102 108 -101 109 110 -111 101 110 -101 111 53 -90 101 53 -39 40 54 -112 39 54 -39 112 38 -113 38 112 -38 113 37 -114 113 112 -115 114 112 -114 115 116 -118 115 117 -115 118 116 -120 117 119 -117 120 118 -123 121 122 -124 123 122 -125 124 122 -124 125 126 -127 119 121 -119 127 120 -128 119 117 -115 128 117 -128 115 53 -111 128 53 -128 111 110 -119 128 110 -121 119 110 -129 121 110 -109 129 110 -129 109 130 -115 54 53 -54 115 112 -127 121 123 -132 105 131 -105 132 106 -132 131 133 -133 131 134 -135 133 134 -133 135 136 -137 133 136 -138 133 137 -133 138 132 -139 132 138 -140 139 138 -141 140 138 -140 141 130 -109 140 130 -140 109 108 -139 140 108 -107 139 108 -142 136 135 -136 142 143 -144 143 142 -143 144 145 -147 145 146 -145 147 143 -124 147 146 -147 124 126 -121 125 122 -125 121 129 -141 129 130 -129 141 125 -126 137 147 -141 126 125 -126 141 137 -138 137 141 -147 136 143 -136 147 137 -132 107 106 -107 132 139 -28 29 31 -148 25 27 -25 148 149 -28 148 27 -148 28 150 -151 148 150 -148 151 149 -153 152 149 -151 153 149 -154 151 150 -151 154 155 -156 155 154 -158 156 157 -156 158 155 -151 155 158 -153 151 158 -149 152 25 -25 152 23 -152 21 23 -21 152 159 -153 159 152 -159 153 160 -158 160 153 -160 158 161 -162 161 158 -157 162 158 -157 163 162 -163 157 164 -156 164 157 -164 156 165 -164 165 166 -167 164 166 -164 167 163 -168 163 167 -166 169 167 -170 167 169 -172 170 171 -170 172 173 -174 172 171 -172 174 175 -172 176 177 -176 172 175 -179 176 178 -176 179 177 -181 178 180 -178 181 179 -183 181 182 -181 183 179 -184 179 183 -179 184 177 -173 177 184 -177 173 172 -167 173 185 -173 167 170 -167 185 168 -163 168 162 -186 162 168 -161 186 187 -188 161 187 -161 188 160 -189 160 188 -160 189 159 -159 189 19 -21 159 19 -190 19 189 -191 190 189 -19 190 16 -15 19 16 -192 16 190 -16 192 17 -193 17 192 -17 193 18 -194 193 192 -193 194 195 -190 194 192 -194 190 191 -188 191 189 -191 188 196 -194 196 197 -196 194 191 -198 194 197 -194 198 195 -199 198 197 -198 199 200 -201 200 199 -200 201 202 -203 202 201 -202 203 204 -183 182 205 -205 182 206 -207 205 206 -205 207 208 -173 184 185 -185 184 208 -168 185 208 -209 168 208 -168 209 210 -186 168 210 -211 186 210 -186 211 187 -196 187 211 -187 196 188 -199 196 211 -196 199 197 -210 199 211 -199 210 201 -209 201 210 -201 209 203 -207 203 209 -208 207 209 -204 207 206 -207 204 203 -162 186 161 -183 205 184 -205 208 184 -0 2 14 -26 32 29 -213 26 212 -26 24 212 -212 22 214 -22 212 24 -214 213 212 -213 214 215 -22 216 214 -216 22 20 -214 217 215 -217 214 216 -218 217 216 -216 14 218 -14 216 20 -221 219 220 -219 222 220 -5 223 224 -223 5 4 -224 225 226 -225 224 223 -227 226 225 -227 228 226 -227 229 228 -227 220 229 -227 230 220 -227 225 230 -230 221 220 -230 231 221 -230 232 231 -233 230 225 -230 233 232 -233 223 234 -223 233 225 -234 4 18 -4 234 223 -232 235 231 -235 236 231 -236 235 237 -236 238 239 -238 236 237 -239 240 241 -240 239 238 -241 242 243 -242 241 240 -242 244 243 -243 244 245 -245 246 247 -247 248 245 -222 249 220 -249 229 220 -222 250 249 -250 222 251 -251 252 250 -252 251 248 -248 247 252 -247 246 253 -247 253 254 -247 254 252 -254 255 252 -255 250 252 -250 256 249 -249 256 257 -256 250 255 -249 257 229 -257 258 229 -260 228 259 -228 260 226 -259 229 258 -229 259 228 -259 258 261 -258 262 261 -262 263 261 -262 258 257 -257 264 262 -264 257 265 -257 266 265 -266 257 267 -257 268 267 -268 269 270 -269 268 256 -268 257 256 -265 266 271 -266 267 271 -271 272 265 -272 273 265 -260 224 226 -224 260 274 -59 224 274 -224 59 5 -60 274 275 -274 60 59 -275 260 276 -260 275 274 -260 259 276 -259 261 276 -261 277 276 -278 261 263 -261 278 277 -276 279 275 -279 276 277 -265 280 264 -280 265 273 -280 281 264 -281 262 264 -282 263 281 -263 262 281 -278 282 283 -282 278 263 -283 284 278 -284 283 285 -287 285 286 -285 287 284 -286 288 287 -288 289 272 -272 289 273 -289 288 286 -60 279 76 -279 60 275 -290 277 278 -277 290 279 -279 290 76 -76 284 78 -284 76 290 -284 290 278 -284 79 78 -79 284 287 -287 288 79 -79 291 80 -291 79 288 -292 288 272 -288 292 291 -272 271 292 -83 291 293 -291 83 80 -293 292 294 -292 293 291 -292 271 294 -271 295 294 -295 271 296 -271 267 296 -267 297 296 -297 267 268 -297 268 298 -268 270 298 -270 299 298 -300 298 299 -300 297 298 -300 299 301 -93 95 302 -302 303 93 -303 302 304 -304 305 303 -305 306 303 -306 305 307 -305 301 307 -301 299 307 -299 308 307 -308 309 307 -307 310 306 -310 307 309 -306 311 303 -311 306 310 -311 93 303 -105 311 312 -311 105 93 -312 310 313 -310 312 311 -313 309 314 -309 313 310 -309 308 315 -309 315 314 -315 308 316 -308 317 316 -317 308 270 -308 299 270 -256 255 269 -255 318 269 -318 255 254 -254 319 318 -319 254 253 -319 320 318 -320 321 318 -321 320 322 -324 322 323 -322 324 321 -326 323 325 -323 326 324 -329 327 328 -327 330 328 -330 331 328 -331 330 332 -326 333 329 -333 326 325 -326 334 324 -334 321 324 -321 334 270 -334 317 270 -317 334 316 -334 326 316 -326 329 316 -329 335 316 -316 336 315 -336 316 335 -269 321 270 -321 269 318 -329 333 327 -131 312 337 -312 131 105 -131 337 338 -131 338 134 -134 339 135 -339 134 338 -338 340 339 -338 341 340 -341 338 337 -337 342 341 -342 343 341 -343 344 341 -344 343 336 -343 315 336 -315 343 314 -343 342 314 -342 313 314 -135 345 142 -345 135 339 -142 346 144 -346 142 345 -348 345 347 -345 348 346 -348 332 330 -332 348 347 -328 335 329 -335 328 331 -336 331 344 -331 336 335 -340 332 347 -331 340 344 -340 331 332 -340 341 344 -345 340 347 -340 345 339 -312 342 337 -342 312 313 -245 244 246 -242 349 350 -349 242 240 -350 244 242 -244 350 351 -350 352 351 -352 350 349 -354 353 349 -353 352 349 -351 355 356 -355 351 352 -355 357 356 -359 355 358 -355 359 357 -355 352 358 -352 353 358 -354 349 240 -354 240 238 -238 360 354 -360 238 237 -354 361 353 -361 354 360 -353 362 358 -362 353 361 -362 363 358 -363 359 358 -363 364 359 -364 363 365 -359 366 357 -366 359 364 -366 364 367 -367 365 368 -365 367 364 -365 369 368 -370 367 368 -368 371 370 -374 372 373 -372 374 371 -374 375 376 -375 374 373 -377 375 373 -375 377 378 -380 377 379 -377 380 378 -180 379 181 -379 180 380 -182 379 381 -379 182 181 -381 377 382 -377 381 379 -382 373 372 -373 382 377 -383 371 368 -371 383 372 -383 368 369 -369 365 363 -363 384 369 -384 362 385 -385 361 386 -361 385 362 -386 360 387 -360 386 361 -387 360 235 -360 237 235 -235 388 387 -388 389 387 -388 235 233 -235 232 233 -233 390 388 -390 233 234 -234 193 390 -193 234 18 -390 195 391 -195 390 193 -390 389 388 -389 390 391 -387 392 386 -392 387 389 -393 389 391 -389 393 392 -393 195 198 -195 393 391 -393 200 394 -200 393 198 -394 202 395 -202 394 200 -395 204 396 -204 395 202 -182 381 397 -182 397 206 -397 398 206 -398 397 399 -382 372 383 -382 383 399 -383 369 399 -369 400 399 -400 369 401 -369 384 401 -401 385 402 -385 401 384 -402 386 392 -386 402 385 -402 393 394 -393 402 392 -394 401 402 -401 394 395 -401 396 400 -396 401 395 -396 398 400 -398 399 400 -206 396 204 -396 206 398 -384 363 362 -397 381 382 -399 397 382 -219 221 231 -248 243 245 -243 403 404 -241 243 404 -405 241 404 -241 405 239 -404 406 405 -406 404 403 -405 236 239 -236 405 407 -406 407 405 -407 406 408 -408 409 407 -231 407 409 -407 231 236 diff --git a/3D GFX/Helicopter/demo, 1.png b/3D GFX/Helicopter/demo, 1.png deleted file mode 100644 index 2710913102e2bd9b89e4fae8de3507c6b0a6ace9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43377 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

Table of Contents

BCP*F&PEctg`i2 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 U*@H*>zZ(w~MNNfLIg6102XSaa`2YX_ diff --git a/3D GFX/Helicopter/demo, 3.png b/3D GFX/Helicopter/screenshot, 1.png similarity index 100% rename from 3D GFX/Helicopter/demo, 3.png rename to 3D GFX/Helicopter/screenshot, 1.png diff --git a/3D GFX/Helicopter/demo, 4.png b/3D GFX/Helicopter/screenshot, 2.png similarity index 100% rename from 3D GFX/Helicopter/demo, 4.png rename to 3D GFX/Helicopter/screenshot, 2.png diff --git a/3D GFX/Miscellaneous/index.html b/3D GFX/Miscellaneous/index.html index 3a7c9d8..2ea1fc4 100644 --- a/3D GFX/Miscellaneous/index.html +++ b/3D GFX/Miscellaneous/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Miscellaneous 3D graphics demos @@ -210,14 +210,14 @@

@@ -238,8 +238,8 @@ } -
-

1. Rotating exclamation mark

+
+

1. Rotating exclamation mark

Wireframe 3D model of a rotating exclamation mark. @@ -258,8 +258,8 @@ Wireframe 3D model of a rotating exclamation mark.

-
-

2. 3D bouncing ball

+
+

2. 3D bouncing ball

This QBasic program creates a visually engaging 3D animation of a @@ -280,8 +280,8 @@ of early computer graphics techniques.

-
-

3. 3D text in a room

+
+

3. 3D text in a room

Wireframe 3D text hanging in a wireframe 3D room. User can look and @@ -301,8 +301,8 @@ fly around in all directions.

-
-

4. 3D bouncing cubes on grid floor

+
+

4. 3D bouncing cubes on grid floor

3D wireframe cubes bouncing on a grid floor, creating an immersive and @@ -322,8 +322,8 @@ dynamic visual effect.

-
-

5. Matrix math for rotation in 3D space

+
+

5. Matrix math for rotation in 3D space

Instead of combining simple 2D rotors, pixels in this 3D space are @@ -343,8 +343,8 @@ rotated by using matrix multiplications.

-
-

6. Maze explorer

+
+

6. Maze explorer

The Evolving 3D Maze Explorer is a QBasic program that generates and @@ -355,7 +355,7 @@ changes as they navigate through it.

-
+

Maze%20explorer.png

@@ -366,8 +366,8 @@ changes as they navigate through it.
-
-

7. Tank animation

+
+

7. Tank animation

Animated tank driving through the bridge back and forward. User can @@ -387,8 +387,8 @@ look and fly around in all directions.

-
-

8. Tiled room

+
+

8. Tiled room

Room with some tiles on the wall and on the floor. User can freely fly @@ -409,7 +409,7 @@ around.

-

Created: 2025-07-29 ti 03:08

+

Created: 2025-07-29 ti 04:02

Validate

diff --git a/3D GFX/Space/index.html b/3D GFX/Space/index.html index 8d5e261..21b395b 100644 --- a/3D GFX/Space/index.html +++ b/3D GFX/Space/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Space themed 3D graphics @@ -210,10 +210,10 @@

Table of Contents

@@ -234,8 +234,8 @@ } -
-

1. Galaxy explorer

+
+

1. Galaxy explorer

This QBasic program renders a navigable 3D point cloud galaxy, @@ -245,7 +245,7 @@ galaxy with stars distributed in a spiral pattern.

-
+

Galaxy%20explorer.png

@@ -256,8 +256,8 @@ galaxy with stars distributed in a spiral pattern.
-
-

2. Rocket simulator

+
+

2. Rocket simulator

QBasic program that simulates the takeoff and flight of a rocket from @@ -279,8 +279,8 @@ observe the rocket's trajectory from various angles.

-
-

3. Stars

+
+

3. Stars

The 3D Starfield Simulation is a QBasic program that creates a @@ -320,8 +320,8 @@ based on its distance, with closer stars appearing brighter.

-
-

4. Universe explorer

+
+

4. Universe explorer

This QBasic program that simulates a navigable 3D universe. Users can @@ -358,19 +358,19 @@ limiting the number of rendered objects based on distance. -

+

1.png

-
+

2.png

-
+

3.png

@@ -382,7 +382,7 @@ limiting the number of rendered objects based on distance.
-

Created: 2025-07-29 ti 03:08

+

Created: 2025-07-29 ti 04:02

Validate

diff --git a/Math/Plotting/index.html b/Math/Plotting/index.html index 1b42107..3c382e2 100644 --- a/Math/Plotting/index.html +++ b/Math/Plotting/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Plotting @@ -210,10 +210,10 @@

Table of Contents

@@ -234,8 +234,8 @@ } -
-

1. 2D graph

+
+

1. 2D graph

The 2D Graph Plotter is a simple yet effective program written in @@ -251,7 +251,7 @@ based on a user-defined mathematical function.

-
+

2D%20graph%20plot.png

@@ -262,8 +262,8 @@ based on a user-defined mathematical function.
-
-

2. 3D graph

+
+

2. 3D graph

The 3D Heightmap Explorer is a QBasic program designed to visualize @@ -299,7 +299,7 @@ grid.

-
+

3D%20graph.png

@@ -310,8 +310,8 @@ grid.
-
-

3. Deriviative calculator

+
+

3. Deriviative calculator

This QBasic program is designed to compute and plot an arbitrary @@ -324,7 +324,7 @@ visualized.

-
+

Deriviative%20calculator.png

@@ -335,8 +335,8 @@ visualized.
-
-

4. Sine and cosine table

+
+

4. Sine and cosine table

The SIN & COS Table Generator is a QBasic program designed to visually @@ -346,7 +346,7 @@ visual representation of these fundamental trigonometric functions.

-
+

Sine%20and%20cosine%20table.png

@@ -358,7 +358,7 @@ visual representation of these fundamental trigonometric functions.
-

Created: 2025-07-29 ti 03:29

+

Created: 2025-07-29 ti 04:02

Validate

diff --git a/Math/Simulation/index.html b/Math/Simulation/index.html index 549a53d..02195e3 100644 --- a/Math/Simulation/index.html +++ b/Math/Simulation/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Simulation @@ -210,14 +210,14 @@

Table of Contents

@@ -238,8 +238,8 @@ } -
-

1. Explosion simulator

+
+

1. Explosion simulator

This QBasic program simulates the propagation of shock waves in a gas @@ -265,7 +265,7 @@ conditions by setting velocities to zero at wall boundaries.

-
+

Explosion%20simulator.png

@@ -276,8 +276,8 @@ conditions by setting velocities to zero at wall boundaries.
-
-

2. Gravity in 2D

+
+

2. Gravity in 2D

The Gravitation Simulation program is a simple yet insightful QBasic @@ -289,7 +289,7 @@ educational tool for understanding basic orbital mechanics.

-
+

Gravity%20in%202D.png

@@ -300,8 +300,8 @@ educational tool for understanding basic orbital mechanics.
-
-

3. Gravity in 3D

+
+

3. Gravity in 3D

This QBasic program simulates the gravitational interactions between @@ -335,8 +335,8 @@ will reach stable configuration.

-
-

4. Interference

+
+

4. Interference

This QBasic program simulates the interference pattern created by two @@ -364,8 +364,8 @@ displayed as a third waveform.

-
-

5. Interferogram

+
+

5. Interferogram

This QBasic program simulates the interference pattern created by @@ -375,7 +375,7 @@ used in physics and engineering to analyze wave interactions.

-
+

Interferogram.png

@@ -386,8 +386,8 @@ used in physics and engineering to analyze wave interactions.
-
-

6. Surface tension

+
+

6. Surface tension

This QBasic program simulates the behavior of water spills and the @@ -411,7 +411,7 @@ water cell if surrounded by a high density of water cells.

-
+

Surface%20tension.png

@@ -422,8 +422,8 @@ water cell if surrounded by a high density of water cells.
-
-

7. Wave 1

+
+

7. Wave 1

This QBasic program simulates the propagation of waves across a @@ -439,7 +439,7 @@ loss.

-
+

Wave%201.png

@@ -450,8 +450,8 @@ loss.
-
-

8. Wave 2

+
+

8. Wave 2

This QBasic program simulates and visualizes the behavior of water @@ -463,7 +463,7 @@ understanding wave mechanics.

-
+

Wave%202.png

@@ -475,7 +475,7 @@ understanding wave mechanics.
-

Created: 2025-07-29 ti 03:58

+

Created: 2025-07-29 ti 04:02

Validate

diff --git a/Math/Truth table/index.html b/Math/Truth table/index.html index 89a2606..90f6a04 100644 --- a/Math/Truth table/index.html +++ b/Math/Truth table/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Truth table calculator @@ -1103,20 +1103,20 @@ hsAddReviewPanels();

Table of Contents

@@ -1133,12 +1133,12 @@ the input variables, with the corresponding output value. Truth tables are cruci designing and understanding digital circuits, Boolean algebra, and logical expressions.

-
-

1. Implemented logical operations

+
+

1. Implemented logical operations

-
-

1.1. Equivalent ( ⇔ , 1 )

+
+

1.1. Equivalent ( ⇔ , 1 )

The equivalent operation, also known as logical biconditional, is true if and only if @@ -1196,8 +1196,8 @@ Truth Table:

-
-

1.2. Implies ( ⇒ , 2 )

+
+

1.2. Implies ( ⇒ , 2 )

An implication asserts that if the first proposition is true, the @@ -1255,8 +1255,8 @@ Truth table:

-
-

1.3. OR ( ∨ , 3 )

+
+

1.3. OR ( ∨ , 3 )

The OR operation, also known as logical disjunction, is true if at @@ -1314,8 +1314,8 @@ Truth table:

-
-

1.4. AND ( ∧ , 4 )

+
+

1.4. AND ( ∧ , 4 )

The AND operation, also known as logical conjunction, is true if and @@ -1372,8 +1372,8 @@ Truth table:

-
-

1.5. NOT ( ¬ , 5 )

+
+

1.5. NOT ( ¬ , 5 )

The NOT operation, also known as logical negation, inverts the value @@ -1414,12 +1414,12 @@ Truth Table:

-
-

2. Examples

+
+

2. Examples

-
-

2.1. Example: (A ∧ B) ∨ ¬C

+
+

2.1. Example: (A ∧ B) ∨ ¬C

@@ -1502,8 +1502,8 @@ Truth Table: -
-

2.2. Example: A ⇒ (B ∨ ¬C)

+
+

2.2. Example: A ⇒ (B ∨ ¬C)

@@ -1586,8 +1586,8 @@ Truth Table: -
-

2.3. Example: (A ⇔ B) ∧ C

+
+

2.3. Example: (A ⇔ B) ∧ C

Truth Table: @@ -1676,7 +1676,7 @@ Truth Table:

-

Created: 2025-05-31 la 07:09

+

Created: 2025-07-29 ti 04:03

Validate

diff --git a/index.org b/index.org index d5d88a8..449b217 100644 --- a/index.org +++ b/index.org @@ -182,23 +182,23 @@ See directory: ** Helicopter demo -TODO: description goes here ... +This QBasic program is a demonstration of real-time 3D graphics +rendering. Also it shows 3D transformations, fractal terrain +generation, and simple animation. -#+attr_html: :class responsive-img -#+attr_latex: :width 1000px -[[file:3D%20GFX/Helicopter/demo,%201.png][file:3D%20GFX/Helicopter/demo,%201.png]] +A fractal algorithm is used to create a realistic terrain by +iteratively subdividing and perturbing pixel values. -#+attr_html: :class responsive-img -#+attr_latex: :width 1000px -[[file:3D%20GFX/Helicopter/demo,%202.png][file:3D%20GFX/Helicopter/demo,%202.png]] +The program includes an animated sequence featuring a helicopter that +moves across the terrain and picks up objects. #+attr_html: :class responsive-img #+attr_latex: :width 1000px -[[file:3D%20GFX/Helicopter/demo,%203.png][file:3D%20GFX/Helicopter/demo,%203.png]] +[[file:3D%20GFX/Helicopter/Helicopter.bas][file:3D%20GFX/Helicopter/screenshot,%201.png]] #+attr_html: :class responsive-img #+attr_latex: :width 1000px -[[file:3D%20GFX/Helicopter/demo,%204.png][file:3D%20GFX/Helicopter/demo,%204.png]] +[[file:3D%20GFX/Helicopter/Helicopter.bas][file:3D%20GFX/Helicopter/screenshot,%202.png]] [[https://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=tree;f=3D+GFX/Helicopter;hb=HEAD][Project files]] -- 2.20.1