Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Screen Savers
#49
Sierpinsky in Space

Code: (Select All)
_Title "Sierpinski in Space" 'b+ 2025-02-07 ported from:

'Sierpinski in Space.bas SmallBASIC 0.12.6 [B+=MGA] 2016-05-28
'From screen saver number 1.bas 2016-02-11 SmallBASIC 0.12.0 [B+=MGA]
'this version replaces solid triangle with Sierpinski line traingles.

Randomize Timer
Const XMax = 1200, YMax = 700
Screen _NewImage(XMax, YMax, 32): _FullScreen
Const xtop = XMax + 100
Const ytop = YMax + 100
Type tri
As Single x1, x2, x3, y1, y2, y3, dx1, dx2, dx3, dy1, dy2, dy3
As _Unsigned Long c
End Type

restart:

ntri = rand%(1, 5)
ReDim t(ntri) As tri 'setup new set of triangles
For i = 1 To ntri
t(i).x1 = rand%(-100, xtop): t(i).x2 = rand%(-100, xtop): t(i).x3 = rand%(-100, xtop)
t(i).y1 = rand%(-100, ytop): t(i).y2 = rand%(-100, ytop): t(i).y3 = rand%(-100, ytop)
t(i).dx1 = rand%(0, 10) * rdir: t(i).dx2 = rand%(0, 10) * rdir: t(i).dx3 = rand%(0, 10) * rdir
t(i).dy1 = rand%(0, 10) * rdir: t(i).dy2 = rand%(0, 10) * rdir: t(i).dy3 = rand%(0, 10) * rdir
t(i).c = _RGB32(rand%(55, 255) * rand%(0, 1), rand%(55, 255) * rand%(0, 1), rand%(55, 255) * rand%(0, 1))
If t(i).c = 0 Then t(i).c = _RGB32(rand%(60, 255), rand%(60, 255), rand%(60, 255))
Next

For count = 1 To 500
If _KeyDown(27) Then End
If Len(InKey$) Then GoTo restart
Cls
For i = 1 To ntri
Color t(i).c
SierLineTri t(i).x1, t(i).y1, t(i).x2, t(i).y2, t(i).x3, t(i).y3, 0
t(i).x1 = t(i).x1 + t(i).dx1
If t(i).x1 < -100 Then t(i).dx1 = t(i).dx1 * -1
If t(i).x1 > xtop Then t(i).dx1 = t(i).dx1 * -1
t(i).x2 = t(i).x2 + t(i).dx2
If t(i).x2 < -100 Then t(i).dx2 = t(i).dx2 * -1
If t(i).x2 > xtop Then t(i).dx2 = t(i).dx2 * -1
t(i).x3 = t(i).x3 + t(i).dx3
If t(i).x3 < -100 Then t(i).dx3 = t(i).dx3 * -1
If t(i).x3 > xtop Then t(i).dx3 = t(i).dx3 * -1
t(i).y1 = t(i).y1 + t(i).dy1
If t(i).y1 < -100 Then t(i).dy1 = t(i).dy1 * -1
If t(i).y1 > ytop Then t(i).dy1 = t(i).dy1 * -1
t(i).y2 = t(i).y2 + t(i).dy2
If t(i).y2 < -100 Then t(i).dy2 = t(i).dy2 * -1
If t(i).y2 > ytop Then t(i).dy2 = t(i).dy2 * -1
t(i).y3 = t(i).y3 + t(i).dy3
If t(i).y3 < -100 Then t(i).dy3 = t(i).dy3 * -1
If t(i).y3 > ytop Then t(i).dy3 = t(i).dy3 * -1
Next
_Display
_Limit 15
Next
GoTo restart

'Given 3 points of a triangle draw the Sierpinsky traiangle
'within from the midpoints of each line forming the outer
'triangle. This is the basic Sierpinski Unit that is repeated
'at greater depths.
Sub SierLineTri (x1, y1, x2, y2, x3, y3, depth)

If depth = 0 Then 'draw out triangle if level 0
Line (x1, y1)-(x2, y2)
Line (x2, y2)-(x3, y3)
Line (x1, y1)-(x3, y3)
End If

'find midpoints
If x2 < x1 Then mx1 = (x1 - x2) / 2 + x2 Else mx1 = (x2 - x1) / 2 + x1
If y2 < y1 Then my1 = (y1 - y2) / 2 + y2 Else my1 = (y2 - y1) / 2 + y1
If x3 < x2 Then mx2 = (x2 - x3) / 2 + x3 Else mx2 = (x3 - x2) / 2 + x2
If y3 < y2 Then my2 = (y2 - y3) / 2 + y3 Else my2 = (y3 - y2) / 2 + y2
If x3 < x1 Then mx3 = (x1 - x3) / 2 + x3 Else mx3 = (x3 - x1) / 2 + x1
If y3 < y1 Then my3 = (y1 - y3) / 2 + y3 Else my3 = (y3 - y1) / 2 + y1

Line (mx1, my1)-(mx2, my2) ' 'draw all inner triangles
Line (mx2, my2)-(mx3, my3)
Line (mx1, my1)-(mx3, my3)

If depth < 5 Then 'not done so call me again
SierLineTri x1, y1, mx1, my1, mx3, my3, depth + 1
SierLineTri x2, y2, mx1, my1, mx2, my2, depth + 1
SierLineTri x3, y3, mx3, my3, mx2, my2, depth + 1
End If
End Sub

Function rdir
If Rnd < .5 Then rdir = 1 Else rdir = -1
End Function

Function rand% (lo, hi)
rand% = (Rnd * (hi - lo + 1)) \ 1 + lo
End Function


   

Spacebar will reset triangle set number and colors.
b = b + ...
Reply


Messages In This Thread
Screen Savers - by bplus - 04-27-2022, 12:29 AM
RE: Screen Savers - by Dav - 04-27-2022, 02:26 PM
RE: Screen Savers - by bplus - 04-27-2022, 02:33 PM
RE: Screen Savers - by bplus - 04-30-2022, 11:55 PM
RE: Screen Savers - by Dav - 05-01-2022, 07:22 PM
RE: Screen Savers - by bplus - 05-01-2022, 08:26 PM
RE: Screen Savers - by bplus - 05-02-2022, 12:00 AM
RE: Screen Savers - by Coolman - 05-02-2022, 09:42 AM
RE: Screen Savers - by bplus - 05-03-2022, 02:13 AM
RE: Screen Savers - by bplus - 05-09-2022, 01:32 PM
RE: Screen Savers - by bplus - 05-19-2022, 07:22 PM
RE: Screen Savers - by bplus - 05-21-2022, 11:22 PM
RE: Screen Savers - by Pete - 05-21-2022, 11:27 PM
RE: Screen Savers - by bplus - 05-21-2022, 11:38 PM
RE: Screen Savers - by Pete - 05-22-2022, 04:39 AM
RE: Screen Savers - by bplus - 06-17-2022, 01:10 PM
RE: Screen Savers - by johnno56 - 06-18-2022, 12:23 AM
RE: Screen Savers - by Kernelpanic - 06-18-2022, 11:48 AM
RE: Screen Savers - by bplus - 06-18-2022, 01:47 AM
RE: Screen Savers - by bplus - 06-18-2022, 12:33 PM
RE: Screen Savers - by SierraKen - 06-20-2022, 09:50 PM
RE: Screen Savers - by bplus - 06-21-2022, 12:15 AM
RE: Screen Savers - by bplus - 06-29-2022, 04:52 PM
RE: Screen Savers - by SierraKen - 06-29-2022, 06:10 PM
RE: Screen Savers - by vince - 07-01-2022, 10:32 PM
RE: Screen Savers - by bplus - 07-01-2022, 11:05 PM
RE: Screen Savers - by bplus - 07-04-2022, 06:54 PM
RE: Screen Savers - by Kernelpanic - 07-04-2022, 09:11 PM
RE: Screen Savers - by bplus - 07-04-2022, 09:54 PM
RE: Screen Savers - by Kernelpanic - 07-05-2022, 02:14 PM
RE: Screen Savers - by bplus - 07-19-2022, 08:28 PM
RE: Screen Savers - by bplus - 08-28-2022, 12:55 AM
RE: Screen Savers - by TempodiBasic - 08-29-2022, 09:26 AM
RE: Screen Savers - by bplus - 09-06-2022, 12:35 AM
RE: Screen Savers - by SierraKen - 09-08-2022, 07:37 PM
RE: Screen Savers - by bplus - 09-09-2022, 02:22 AM
RE: Screen Savers - by SpriggsySpriggs - 09-15-2022, 04:38 PM
RE: Screen Savers - by bplus - 09-15-2022, 05:20 PM
RE: Screen Savers - by bplus - 01-31-2023, 04:21 PM
RE: Screen Savers - by vince - 02-01-2023, 07:27 AM
RE: Screen Savers - by bplus - 02-01-2023, 05:05 PM
RE: Screen Savers - by bplus - 03-13-2023, 10:51 PM
RE: Screen Savers - by vince - 03-31-2023, 11:09 PM
RE: Screen Savers - by bplus - 04-01-2023, 12:09 AM
RE: Screen Savers - by bplus - 05-14-2024, 03:00 PM
RE: Screen Savers - by PhilOfPerth - 05-15-2024, 08:24 AM
RE: Screen Savers - by bplus - 05-15-2024, 11:15 PM
RE: Screen Savers - by bplus - 08-20-2024, 12:00 AM
RE: Screen Savers - by bplus - 02-08-2025, 01:20 AM



Users browsing this thread: 2 Guest(s)