Shape Maker - SierraKen - 07-11-2022
Now that I'm learning degrees, I decided to make a shape maker today. You type in how many sides you want, from 3 to 100 and what basic color (15 to choose from) you want and if you want it filled-in or not. Then it makes the shape. It makes it with a white background so you can press C to copy it to the clipboard and paste it to your favorite graphics program.
Code: (Select All) Dim img As Long
Dim cl As Long
Screen _NewImage(800, 600, 32)
start:
_Title "Shape Maker by SierraKen"
x = 400
y = 300
fill = 0
Cls
again:
Print: Print: Print
Input "Number Of Sides (3-100): ", sides
If sides > 100 Then Print "Too many, type between 3 to 100.": GoTo again:
If sides < 3 Then Print "Too few, type between 3 to 100.": GoTo again:
again2:
Print
Print "(1) Red"
Print "(2) Green"
Print "(3) Blue"
Print "(4) Purple"
Print "(5) Pink"
Print "(6) Orange"
Print "(7) Brown"
Print "(8) Gray"
Print "(9) Black"
Print "(10) Yellow"
Print "(11) Sky Blue"
Print "(12) Tan"
Print "(13) Light Green"
Print "(14) Light Red"
Print "(15) Dark Yellow"
Print
Input "Type color here (1-15): ", c
If c < 1 Or c > 15 Or Int(c) <> c Then Print "Type 1-15 only, without decimals.": GoTo again2:
If c = 1 Then cl = _RGB32(255, 0, 0)
If c = 2 Then cl = _RGB32(0, 255, 0)
If c = 3 Then cl = _RGB32(0, 0, 255)
If c = 4 Then cl = _RGB32(188, 0, 255)
If c = 5 Then cl = _RGB32(255, 0, 255)
If c = 6 Then cl = _RGB32(255, 122, 0)
If c = 7 Then cl = _RGB32(183, 83, 0)
If c = 8 Then cl = _RGB32(127, 127, 127)
If c = 9 Then cl = _RGB32(0, 0, 0)
If c = 10 Then cl = _RGB32(255, 255, 0)
If c = 11 Then cl = _RGB32(0, 255, 255)
If c = 12 Then cl = _RGB32(222, 150, 127)
If c = 13 Then cl = _RGB32(89, 255, 0)
If c = 14 Then cl = _RGB32(255, 0, 83)
If c = 15 Then cl = _RGB32(255, 188, 67)
Print
Input "Do you wish to have the shape filled in (Y/N)"; yn$
If Left$(yn$, 1) = "y" Or Left$(yn$, 1) = "Y" Then fill = 1
Cls
_Title "Shape Maker - C copies to clipboard, Space Bar starts over, Esc quits"
Paint (0, 0), _RGB32(255, 255, 255)
st = 360 / sides
For deg = 0 To 360 Step st
deg2 = 90 + deg
'Plot 300 points with equations.
oldx = x
oldy = y
For t = 1 To 800 / sides Step .25
x = (Sin(_D2R(deg2)) * t) + oldx
y = (Cos(_D2R(deg2)) * t) + oldy
Circle (x - 400 / sides, y), 1, cl
Next t
Next deg
If fill = 1 Then Paint (400, 250), cl
Do
a$ = InKey$
If a$ = Chr$(27) Then End
If a$ = " " Then GoTo start:
If a$ = "c" Or a$ = "C" Then
If img <> 0 Then _FreeImage (img&)
img& = _CopyImage(0)
_ClipboardImage = img&
Locate 1, 1: Print "Image Copied To Clipboard."
End If
Loop
RE: Shape Maker - bplus - 07-11-2022
Yep that was big step for me, learning to draw regular polygons with Sin and Cos. Nice job. How do you use a clipboard image?
Here's a quickie:
Code: (Select All) _Title "Basic Polygon" 'b+ 2020-08-27
' a circle is 360 degree
' a polyon of n side has central angles 360 / n > think of a pie the central angle are the angle of slices in center
Screen _NewImage(500, 500, 32)
_Delay .25
_ScreenMove _Middle
xC = _Width / 2 ' middle of screen
yC = _Height / 2 ' ditto
r = 200 ' radius = less than half screen height
For n = 3 To 12
Cls
Print "Sides = "; n
Circle (xC, yC), r ' here is our pie, Apple or Pepperroni :-))
For angle = 0 To 360 Step 360 / n ' step the size of pie angles
' let xC, yC be the coordinates at the center of the pie circle
' let r be the radius of the pie
' then the n outside points are
x = xC + r * Cos(_D2R(angle)) ' x coordinate of outter edge point
y = yC + r * Sin(_D2R(angle)) ' y coordinate of outter edge point
If angle = 0 Then PSet (x, y) Else Line -(x, y) ' outter edge edge
Line (xC, yC)-(x, y) ' slice from center of pie
_Limit 4
Next
_Delay 2
Print "press any to see next polygon up to 12..."
Sleep
Next
Print "Demo is done."
RE: Shape Maker - SierraKen - 07-12-2022
Wow thanks B+! Your demo is cool too, I think you even showed it to me years ago. I really don't use the clipboard image but I tossed it on there so people can paste it to any graphics program and change it, resize it, add to it, etc. and save it. I did test it a few times and it works good.
RE: Shape Maker - vince - 07-13-2022
(07-11-2022, 10:07 PM)bplus Wrote: Yep that was big step for me, learning to draw regular polygons with Sin and Cos. Nice job. How do you use a clipboard image?
Here's a quickie:
Code: (Select All) _Title "Basic Polygon" 'b+ 2020-08-27
B+ mod time
Code: (Select All) _Title "Basic Polygon" 'b+ 2020-08-27
' a circle is 360 degree
' a polyon of n side has central angles 360 / n > think of a pie the central angle are the angle of slices in center
Screen _NewImage(500, 500, 32)
xC = _Width / 2 ' middle of screen
yC = _Height / 2 ' ditto
r = 200 ' radius = less than half screen height
For n = 5 To 12
for m = 1 to 4
Cls
Print "Sides = "; n
'Circle (xC, yC), r ' here is our pie, Apple or Pepperroni :-))
For angle = 0 To 360 Step 360 / n ' step the size of pie angles
' let xC, yC be the coordinates at the center of the pie circle
' let r be the radius of the pie
' then the n outside points are
x = xC + r * Cos(m*_D2R(angle)) ' x coordinate of outter edge point
y = yC + r * Sin(m*_D2R(angle)) ' y coordinate of outter edge point
If angle = 0 Then PSet (x, y) Else Line -(x, y) ' outter edge edge
'Line (xC, yC)-(x, y) ' slice from center of pie
Next
Print "press any to see next polygon up to 12..."
Sleep
next
Next
Print "Demo is done."
RE: Shape Maker - bplus - 07-13-2022
Yeah find the prime numbers by looking at polygons m = 1 to SQR(n), you see a simpler one than m = 1 like a straight line, a triangle a square, then n is not prime.
RE: Shape Maker - SierraKen - 07-13-2022
Simple and incredible Vince.
RE: Shape Maker - bplus - 07-13-2022
We should show everything, number of sides and multiplier. Have to go to 720 degrees because some drawings aren't completing.
Code: (Select All) _Title "Basic Polygon with Multiplier Mod" 'b+ 2022-07-13
' a circle is 360 degree
' a polyon of n side has central angles 360 / n > think of a pie the central angle are the angle of slices in center
Screen _NewImage(500, 500, 32)
_ScreenMove 350, 100
xC = _Width / 2 ' middle of screen
yC = _Height / 2 ' ditto
r = 200 ' radius = less than half screen height
For n = 5 To 32
For m = 1 To n - 1
Cls
Print "Sides ="; n; " Multiplier ="; m
Circle (xC, yC), r ' here is our pie, Apple or Pepperroni :-))
For angle = 0 To 720 Step 360 / n ' step the size of pie angles
' let xC, yC be the coordinates at the center of the pie circle
' let r be the radius of the pie
' then the n outside points are
x = xC + r * Cos(m * _D2R(angle) - _Pi / 2) ' x coordinate of outter edge point
y = yC + r * Sin(m * _D2R(angle) - _Pi / 2) ' y coordinate of outter edge point
If angle = 0 Then PSet (x, y) Else Line -(x, y) ' outter edge edge
Line (xC, yC)-(x, y) ' slice from center of pie
Next
Print "press any to see next ..."
Sleep
Next
Next
Print "Demo is done."
RE: Shape Maker - SierraKen - 07-14-2022
B+, thanks so much for that code, I just made a mod of snowflakes falling down. I'll put it in a different thread and put credit to you.
|