Post by B+ on Jul 13, 2019 0:58:20 GMT
A very simple method that works on a fancy equation:
'Knot #3.txt for JB v2 bplus 2019-07-12 try fancy sin /cos equation for x, y coordinates
' To demo Celtic Knot mastery, attempt another one, no straight lines and no circular curves!
global pi, XMAX, YMAX
pi = 3.14159265
XMAX = 720 'full screen width
YMAX = 720
nomainwin
UpperLeftX = 300
UpperLeftY = 10
WindowWidth = XMAX + 8 'adjust +10 for screen frame plus slight white frame
WindowHeight = YMAX + 32 'add +32 for screen frame plus slight white frame
open "Knot #3" for graphics_nsb_nf as #gr '_nf =no full screen, _nsb =no scroll bars
#gr "trapclose [quit]"
#gr "down"
r = 135 : p = 35 * pi * r : s = 2 * pi / p 'stepper in all for loops
pm2d3 = pi * 2 / 3 ' all crucial points are 1/3 circle symmetric
xc = XMAX/2 : yc = YMAX/2
'outline whole design
#gr "color red"
#gr "size 40"
FOR t = 0 TO 2 * pi STEP s
x = xc + r * (COS(t) + COS(4 * t) / .7 + SIN(2 * t) / 12)
y = yc + r * (SIN(t) + SIN(4 * t) / .7 + COS(2 * t) / 12)
#gr "set ";x;" ";y
NEXT
'fill in design, same as above only smaller circle fills
#gr "color blue"
#gr "size 26"
FOR t = 0 TO 2 * pi STEP s
x = xc + r * (COS(t) + COS(4 * t) / .7 + SIN(2 * t) / 12)
y = yc + r * (SIN(t) + SIN(4 * t) / .7 + COS(2 * t) / 12)
#gr "set ";x;" ";y
NEXT
'another surprise fill!
#gr "color green"
#gr "size 12"
FOR t = 0 TO 2 * pi STEP s
x = xc + r * (COS(t) + COS(4 * t) / .7 + SIN(2 * t) / 12)
y = yc + r * (SIN(t) + SIN(4 * t) / .7 + COS(2 * t) / 12)
#gr "set ";x;" ";y
NEXT
'over bridges borders, locate over the top passes and draw circles over the over pass
#gr "color red"
#gr "size 40"
FOR t = 0 TO 2 * pi STEP s
x = xc + r * (COS(t) + COS(4 * t) / .7 + SIN(2 * t) / 12)
y = yc + r * (SIN(t) + SIN(4 * t) / .7 + COS(2 * t) / 12)
IF ABS(t - pi * 51 / 384) < .11 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 51 / 384 - pm2d3) < .11 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 51 / 384 - 2 * pm2d3) < .11 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 111 / 384) < .11 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 111 / 384 - pm2d3) < .11 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 111 / 384 - 2 * pm2d3) < .11 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 424 / 384) < .11 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 424 / 384 - pm2d3) < .11 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 424 / 384 + 1 * pm2d3) < .11 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 680 / 384) < .11 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 680 / 384 + 2 * pm2d3) < .11 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 680 / 384 + 1 * pm2d3) < .11 THEN #gr "set ";x;" ";y
NEXT
'over bridges fills , now draw farther up and down the bridge work the fill color
#gr "color blue"
#gr "size 26"
FOR t = 0 TO 2 * pi STEP s
x = xc + r * (COS(t) + COS(4 * t) / .7 + SIN(2 * t) / 12)
y = yc + r * (SIN(t) + SIN(4 * t) / .7 + COS(2 * t) / 12)
IF ABS(t - pi * 51 / 384) < .13 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 51 / 384 - pm2d3) < .13 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 51 / 384 - 2 * pm2d3) < .13 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 111 / 384) < .13 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 111 / 384 - pm2d3) < .13 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 111 / 384 - 2 * pm2d3) < .13 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 424 / 384) < .13 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 424 / 384 - pm2d3) < .13 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 424 / 384 + 1 * pm2d3) < .13 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 680 / 384) < .13 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 680 / 384 + 2 * pm2d3) < .13 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 680 / 384 + 1 * pm2d3) < .13 THEN #gr "set ";x;" ";y
NEXT
'continue surprise fill over bridges still further than blue
#gr "color green"
#gr "size 12"
FOR t = 0 TO 2 * pi STEP s
x = xc + r * (COS(t) + COS(4 * t) / .7 + SIN(2 * t) / 12)
y = yc + r * (SIN(t) + SIN(4 * t) / .7 + COS(2 * t) / 12)
IF ABS(t - pi * 51 / 384) < .16 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 51 / 384 - pm2d3) < .16 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 51 / 384 - 2 * pm2d3) < .16 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 111 / 384) < .16 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 111 / 384 - pm2d3) < .16 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 111 / 384 - 2 * pm2d3) < .16 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 424 / 384) < .16 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 424 / 384 - pm2d3) < .16 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 424 / 384 + 1 * pm2d3) < .16 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 680 / 384) < .16 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 680 / 384 + 2 * pm2d3) < .16 THEN #gr "set ";x;" ";y
IF ABS(t - pi * 680 / 384 + 1 * pm2d3) < .16 THEN #gr "set ";x;" ";y
NEXT
#gr "flush"
wait
[quit]
timer 0
close #gr
end