- y = 60 - py(INT((hlaz + 10) / 20) * 20 + INT((hlax + 10) / 20))\r
- IF hlay > y + 5 THEN hlay = hlay - 1\r
- IF hlay < y THEN hlay = hlay + 1\r
- IF hlay > y + 25 THEN hlay = hlay - 1\r
- IF hlay < y - 20 THEN hlay = hlay + 1\r
-\r
- s1 = SIN(hlka)\r
- c1 = COS(hlka)\r
- FOR a = 0 TO hlknu - 5\r
- x = hlkx(a + 1)\r
- z = hlkz(a + 1)\r
- px(a + hlkin) = x * s1 + z * c1 + hlax\r
- py(a + hlkin) = hlky(a + 1) - hlay\r
- pz(a + hlkin) = z * s1 - x * c1 + hlaz\r
- NEXT a\r
-\r
- hlkr = hlkr + .5\r
- s1 = SIN(hlkr)\r
- c1 = COS(hlkr)\r
- FOR a = hlknu - 4 TO hlknu - 1\r
- x = hlkx(a + 1)\r
- z = hlkz(a + 1)\r
- px(a + hlkin) = x * s1 + z * c1 + hlax\r
- py(a + hlkin) = hlky(a + 1) - hlay\r
- pz(a + hlkin) = z * s1 - x * c1 + hlaz\r
- NEXT a\r
-\r
- tim = tim + 1\r
-\r
- an1 = an1 + SIN(tim / 100) / 20\r
- an2 = SIN(tim / 42) * .3 + 1.15\r
-\r
- s1 = SIN(an1)\r
- c1 = COS(an1)\r
- s2 = SIN(an2)\r
- c2 = COS(an2)\r
-\r
- FOR a = 0 TO np\r
- x = px(a) - mx\r
- y = py(a) - my\r
- z = pz(a) - mz\r
-\r
- z2 = z * s1 + x * c1\r
- x1 = x * s1 - z * c1\r
-\r
- z1 = z2 * s2 + y * c2\r
- y1 = y * s2 - z2 * c2\r
-\r
- z1 = z1 + kau\r
- IF z1 < 1 THEN px1(a) = -1: GOTO 11\r
- x1 = x1 / z1 * 74 * 2\r
- y1 = y1 / z1 * 65 * 2\r
-\r
- px1(a) = x1 + 160\r
- py1(a) = y1 + 80\r
-11 :\r
- NEXT a\r
-\r
- FOR a = 1 TO nl\r
- l1 = lin1(a)\r
- l2 = lin2(a)\r
- x1 = px1(l1)\r
- x2 = px1(l2)\r
- LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0\r
- IF (x1 = -1) OR (x2 = -1) THEN GOTO 12\r
- y1 = py1(l1)\r
- y2 = py1(l2)\r
- LINE (x1, y1)-(x2, y2), linc(a)\r
- lbx1(a) = x1\r
- lby1(a) = y1\r
- lbx2(a) = x2\r
- lby2(a) = y2\r
-12 :\r
- NEXT a\r
- IF kau > 200 THEN kau = kau - 10\r
- IF tim < 28000 THEN GOTO 10\r
-13 :\r
+ localYVal = 60 - mainY(INT((holdAz + 10) / 20) * 20 + INT((holdAx + 10) / 20))\r
+ IF holdAy > localYVal + 5 THEN holdAy = holdAy - 1\r
+ IF holdAy < localYVal THEN holdAy = holdAy + 1\r
+ IF holdAy > localYVal + 25 THEN holdAy = holdAy - 1\r
+ IF holdAy < localYVal - 20 THEN holdAy = holdAy + 1\r
+\r
+ sinVal = SIN(holdAngle)\r
+ cosVal = COS(holdAngle)\r
+ FOR indexA = 0 TO holdNumber - 5\r
+ tempX = holdX(indexA + 1)\r
+ tempZ = holdZ(indexA + 1)\r
+ mainX(indexA + holdIndex) = tempX * sinVal + tempZ * cosVal + holdAx\r
+ mainY(indexA + holdIndex) = holdY(indexA + 1) - holdAy\r
+ mainZ(indexA + holdIndex) = tempZ * sinVal - tempX * cosVal + holdAz\r
+ NEXT indexA\r
+\r
+ holdRot = holdRot + .5\r
+ sinVal = SIN(holdRot)\r
+ cosVal = COS(holdRot)\r
+ FOR indexA = holdNumber - 4 TO holdNumber - 1\r
+ tempX = holdX(indexA + 1)\r
+ tempZ = holdZ(indexA + 1)\r
+ mainX(indexA + holdIndex) = tempX * sinVal + tempZ * cosVal + holdAx\r
+ mainY(indexA + holdIndex) = holdY(indexA + 1) - holdAy\r
+ mainZ(indexA + holdIndex) = tempZ * sinVal - tempX * cosVal + holdAz\r
+ NEXT indexA\r
+\r
+ timeCounter = timeCounter + 1\r
+\r
+ angleOne = angleOne + SIN(timeCounter / 100) / 20\r
+ angleTwo = SIN(timeCounter / 42) * .3 + 1.15\r
+\r
+ sin1 = SIN(angleOne)\r
+ cos1 = COS(angleOne)\r
+ sin2 = SIN(angleTwo)\r
+ cos2 = COS(angleTwo)\r
+\r
+ ' Project all points to 2D\r
+ FOR indexA = 0 TO totalPoints\r
+ shiftX = mainX(indexA) - moveX\r
+ shiftY = mainY(indexA) - moveY\r
+ shiftZ = mainZ(indexA) - moveZ\r
+\r
+ zIntermediate = shiftZ * sin1 + shiftX * cos1\r
+ xIntermediate = shiftX * sin1 - shiftZ * cos1\r
+\r
+ zProject = zIntermediate * sin2 + shiftY * cos2\r
+ yProject = shiftY * sin2 - zIntermediate * cos2\r
+\r
+ zProject = zProject + distanceScale\r
+ IF zProject < 1 THEN projectedX(indexA) = -1: GOTO skip2D\r
+ xProject = xIntermediate / zProject * 74 * 2\r
+ yProject = yProject / zProject * 65 * 2\r
+\r
+ projectedX(indexA) = xProject + 160\r
+ projectedY(indexA) = yProject + 80\r
+\r
+skip2D:\r
+ NEXT indexA\r
+\r
+ ' Erase old lines and draw new ones\r
+ FOR indexA = 1 TO totalLines\r
+ startIndex = lineStart(indexA)\r
+ endIndex = lineEnd(indexA)\r
+ x1Temp = projectedX(startIndex)\r
+ x2Temp = projectedX(endIndex)\r
+ LINE (lineBufferXOne(indexA), lineBufferYOne(indexA))-(lineBufferXTwo(indexA), lineBufferYTwo(indexA)), 0\r
+ IF (x1Temp = -1) OR (x2Temp = -1) THEN GOTO skipDrawing\r
+ y1Temp = projectedY(startIndex)\r
+ y2Temp = projectedY(endIndex)\r
+ LINE (x1Temp, y1Temp)-(x2Temp, y2Temp), lineColor(indexA)\r
+ lineBufferXOne(indexA) = x1Temp\r
+ lineBufferYOne(indexA) = y1Temp\r
+ lineBufferXTwo(indexA) = x2Temp\r
+ lineBufferYTwo(indexA) = y2Temp\r
+\r
+skipDrawing:\r
+ NEXT indexA\r
+\r
+ IF distanceScale > 200 THEN distanceScale = distanceScale - 10\r
+ IF timeCounter < 28000 THEN GOTO mainLoop\r
+\r
+finalArea:\r