Haiku Gallery
X Y + X Y + X Y + X Y +
first one - hello world
david mead
'24 Dec 22
: r dup 631 * cos abs swap 127 * log * dup floor - ; : d r> r r> r 2dup >r >r y - dup * swap x - dup * + ; : c 2dup > if swap then drop ; .27 .31 >r >r d d d d d d d d d d d d d c c c c c c c c c c c c r> r> drop drop 20 * 1 min 1 over - 99 ** 3 / +
Blood Cells
Manwe
'24 Dec 22
: y0 y 1.6 * .45 - ; : d dup ; : c rot d >r ; : l c c c >r swap >r over * over d r> * swap r> * 4 + d * swap d * + over d * + 7 - swap 1 + min + r> r> r> ; 0 x 1.7 * .85 - d d * y0 d * + 4 + sqrt d d >r >r / y0 r> / -2 t 6.2 + 9 / sin 2 / + r> / l l l l l l l l l l l l l l l l drop drop drop 3.7 / d d * over sqrt -rot
Coffee (final) Redux
Tuby Cheeks
'24 Dec 22
x 0.0000000001 t * / y mod \ x 0.0000000001 t * / 1 mod \ x 0.0000000001 t * / 1 mod \ (x / .0001t ) mod 1
rune combinator, broken Redux Redux
Willamette Stand
'24 Dec 22
: o push negate swap negate y x z+ dup * swap dup * + pop dup * < ; : k push -rot negate swap negate y x z+ 2dup dup * swap dup * + pop dup * < push atan2 - abs 0.1 < pop * ; : q dup rot dup sin swap cos rot * -rot * rot + -rot + swap ; : d t 2 * sin ; : e d 1.2 * ; : n x 15 * + + sin 1 over dup * - sqrt atan2 swap / y 0.7 - > ; 0.6 0.8 -1.57 0.35 k 0.6 0.5 -1.57 d + 0.2 k + 0.6 0.5 -1.57 d + 0.2 q -2 e + 0.25 k + 0.6 0.5 -1.57 d - 0.2 k + 0.6 0.5 -1.57 d - 0.2 q -2 e - 0.25 k + 0.6 0.7 -1.57 d + 0.15 k + 0.6 0.7 -1.57 d + 0.15 q -0.6 e + 0.15 k + 0.6 0.7 -1.57 d - 0.15 k + 0.6 0.7 -1.57 d - 0.15 q -0.6 e - 0.15 k + 0.6 0.8 0.1 o + dup 0 swap 18 1 t 2 / n 22 3 t n + 27 0 t 4 / n 33 4 t 4 / n + + y 0.25 > * +
chatGPT
Anonymous
'24 Dec 22
swap 8 / swap
Untitled
Anonymous
'24 Dec 22
1 1 ang x 0.5 - y 0.5 - atan2 pi / 2.5 * 0.25 - 1 mod 0.5 > x 0.5 - dup * y 0.5 - dup * + .1 < and
Asterisk Redux 2023
Anonymous
'24 Dec 22
: c! 0 ! ; : c@ 0 @ ; : x! 1 ! ; : x@ 1 @ ; : y! 2 ! ; : y@ 2 @ ; : t! 3 ! ; : t@ 3 @ ; : z! 4 ! ; : z@ 4 @ ; : k! 5 ! ; : k@ 5 @ ; : w! 6 ! ; : w@ 6 @ ; : d! 7 ! ; : d@ 7 @ ; : a! 8 ! ; : a@ 8 @ ; : b! 9 ! ; : b@ 9 @ ; : s ( -- ) x@ r@ >= dup if x@ r@ - x! then y@ r@ >= dup if y@ r@ - y! then + 2 mod r@ * c@ + c! r> 1.618033988749895 / >r ; : f 0.0 c! 1.0 >r s s s s s s s s s s s s r> drop ; t t floor - t! 1 t@ - d! t@ 0.618033988749895 * 1 + z! 1 t@ - 0.618033988749895 * t@ + w! x 1.04 - 2 / x! y 0.5 - 2 / y! x@ 0.7071067811865476 * y@ -0.7071067811865476 * + 0.5 + a! x@ 0.7071067811865476 * y@ 0.7071067811865476 * + 0.5 + b! a@ z@ / x! b@ z@ / y! f c@ k! a@ w@ / x! b@ w@ / y! f k@ d@ * c@ t@ * + dup dup
Fibonacci xor zoom
Rinat Fakhrullin
'24 Dec 22
x 256 * floor 0 ! y 256 * floor 1 ! : fr dup floor - ; t pi / fr 2 ! : 2m 2 mod ; : /f / floor ; : s 6.283185307179586 * sin 1 + 2 / ; : p ( a l -- ) >r 0 @ r@ /f 2m 1 @ r@ /f 2m + 2m r> * ; 0 @ 2m 1 @ 2m + 2m 2 p + 4 p + 8 p + 16 p + 32 p + 64 p + 128 p + 256 / 3 ! 3 @ 2 @ + s 3 @ 2 @ + 0.333333 + s 3 @ 2 @ + 0.666666 + s
acid xor texture
Rinat Fakhrullin
'24 Dec 22
: n0 34 ; : n2 0.618033988749895 ; : n3 1.618033988749895 ; : v! 0 ! ; : v@ 0 @ ; : x! 1 ! ; : x@ 1 @ ; : y! 2 ! ; : y@ 2 @ ; : a! 3 ! ; : a@ 3 @ ; : t! 4 ! ; : t@ 4 @ ; : z1! 5 ! ; : z1@ 5 @ ; : z2! 6 ! ; : z2@ 6 @ ; : t2! 7 ! ; : t2@ 7 @ ; : p0 swap * n0 * floor dup 255 > if 256 - then dup 0 < if 256 + then ; : r0 ; : s0 n0 1 - / dup dup ; : x0r over over or -rot and not and ; : xor2 v! y! x! a! x@ v@ - dup 0 >= if x! 1 else drop 0 then y@ v@ - dup 0 >= if y! 1 else drop 0 then x0r if a@ v@ + a! then a@ x@ y@ ; : f0 0 -rot 34 xor2 21 xor2 13 xor2 8 xor2 5 xor2 3 xor2 2 xor2 1 xor2 drop drop ; t n3 / dup floor - t! 1 t@ - t2! t2@ n3 * t@ + z1! t2@ t@ n2 * + z2! z1@ x p0 z1@ y p0 f0 t@ * z2@ x p0 z2@ y p0 f0 t2@ * + s0
The Fibonacci XOR Texture Zoom
Rinat Fakhrullin
'24 Dec 22
: n0 255 ; : v! 0 ! ; : v@ 0 @ ; : x! 1 ! ; : x@ 1 @ ; : y! 2 ! ; : y@ 2 @ ; : a! 3 ! ; : a@ 3 @ ; : t! 4 ! ; : t@ 4 @ ; : z1! 5 ! ; : z1@ 5 @ ; : z2! 6 ! ; : z2@ 6 @ ; : t2! 7 ! ; : t2@ 7 @ ; : p0 0.5 - swap * 0.5 + n0 * floor dup 255 > if 256 - then dup 0 < if 256 + then ; : r0 ; : s0 n0 1 - / dup dup ; : x0r over over or -rot and not and ; : xor2 v! y! x! a! x@ v@ - dup 0 >= if x! 1 else drop 0 then y@ v@ - dup 0 >= if y! 1 else drop 0 then x0r if a@ v@ + a! then a@ x@ y@ ; : f0 0 -rot 128 xor2 64 xor2 32 xor2 16 xor2 8 xor2 4 xor2 2 xor2 1 xor2 drop drop ; t pi / 2 * dup floor - t! 3 2 t@ * - t@ * t@ * t2! 2 t2@ - z1! 2 t2@ - 0.5 * z2! z1@ x p0 z1@ y p0 f0 t2@ * z2@ x p0 z2@ y p0 f0 1 t2@ - * + s0
The XOR Texture Infinite Zoom
Rinat Fakhrullin
'24 Dec 22
: n0 377 ; : p0 n0 * floor ; : s0 n0 1 - / dup dup ; : v! 0 ! ; : v@ 0 @ ; : xr v! swap dup v@ - 0 >= dup if swap v@ - swap then rot dup v@ - 0 >= dup if swap v@ - swap then rot over over or -rot and not and if rot v@ + -rot then ; 0 x p0 y p0 377 xr 233 xr 144 xr 89 xr 55 xr 34 xr 21 xr 13 xr 8 xr 5 xr 3 xr 2 xr 1 xr drop drop s0
The Fibonacci XOR Texture
Rinat Fakhrullin
'24 Dec 22
: n0 256 ; : p0 n0 * floor ; : s0 n0 1 - / dup dup ; : v! 0 ! ; : v@ 0 @ ; : xr v! swap dup v@ - 0 >= dup if swap v@ - swap then rot dup v@ - 0 >= dup if swap v@ - swap then rot over over or -rot and not and if rot v@ + -rot then ; 0 x p0 y p0 256 xr 128 xr 64 xr 32 xr 16 xr 8 xr 4 xr 2 xr 1 xr drop drop s0
The XOR Texture Redux
Rinat Fakhrullin
'24 Dec 22
: n0 255 ; : p0 ( float -- integer ) n0 * floor ; : s0 ( integer -- r g b ) n0 1 - / dup dup ; : v! 0 ! ; : v@ 0 @ ; : xor2 ( acc xval yval lvl -- acc xval yval ) v! ( -- acc xval yval ) swap dup v@ - 0 >= ( -- acc yval xval xflag ) dup if swap v@ - swap then rot dup v@ - 0 >= ( -- acc xval xflag yval yflag ) dup if swap v@ - swap then rot over over or -rot and not and ( -- acc xval yval xyflag ) if rot v@ + -rot then ( -- acc xval yval ) ; 0 x p0 y p0 ( 8 d0 4 d0 2 d0 1 d0 ) ( acc xval yval -- ) 256 xor2 128 xor2 64 xor2 32 xor2 16 xor2 8 xor2 4 xor2 2 xor2 1 xor2 ( acc xval yval -- ) drop drop ( acc ) s0
The XOR Texture
Rinat Fakhrullin
'24 Dec 22
: d2 x 0.5 - dup * y 0.5 - dup * + sqrt ; : c d2 * t - sin ; 5 c 8 c 10 c 1
Oshiboshi
MN
'24 Dec 22
x 0.5 - 20 * y t + y 2 * sin 8 * + sin +
Ragecalm
SN
'24 Dec 22
: yellow 1 x - 40 * t 50 * + sin ; y 40 * t 50 * + sin yellow + \ red x 40 * t 50 * + sin yellow + \ green 1 y - 40 * t 50 * + sin \ blue
Headache
MN
'24 Dec 22
: fx x 0.8 - 2.5 * ; : fy y 0.5 - 2.5 * ; : l2 ( zr zi -- normsq ) dup * swap dup * + ; : mi ( zr zi -- zr' zi' ) over over ( zr zi zr zi ) dup * negate swap dup * + fx + ( zr zi zr' ) rot rot ( zr' zr zi ) * 2 * fy + ( zr' zi' ) ; : mi4 mi mi mi mi ; : mi16 mi4 mi4 mi4 mi4 ; : mandel 0.0 0.0 mi16 2dup l2 2.0 < if mi16 l2 2.0 < if 0.0 else 1.0 then else drop drop 0.125 then ; mandel
Simple Mandelbrot set
SN
'24 Dec 22
: sq dup * ; : r sq swap sq + t + 10 * sin ; x y r 1 x - 1 y - r
Red Green
SN
'24 Dec 22
: x x .5 - t 6 mod 1 + * 0.5 + ; : y y .8 - t 6 mod 1 + * 0.8 + ; : square ( n -- n ) dup * ; : ang ( x y -- n ) 0.5 - swap 0.5 - atan2 ; : dist ( x y -- n ) 0.5 - square push 0.5 - square pop + ; : asterisk ( x y -- f ) 2dup ang pi / 2.5 * 1 mod 0.5 < push dist .1 < pop and ; ( Thanks DarkstarAG ) : alpha ( -- n ) pi 10 / ; : beta y x ang pi + pi 5 / 2 * mod pi 5 / - abs ; : b ( n -- ) alpha sin * alpha cos beta sin * beta cos alpha sin * + / ; : star ( n -- ) b square y x dist > ; : starglow ( n -- ) 1 swap b square y x dist - .1 pow - ; : light ( x y -- ) dist 1 swap - ; x 25 * 1 mod y 25 * 1 mod asterisk 0.35 star and x 7 * 4 mod 2 - y 7 * 4 mod 2 - asterisk x 7 * 4 mod 2 - y 7 * 4 mod 2 - light 0.7 * + x 0.5 - abs 0.4 / y 0.3 - negate < * + 0.35 starglow x 5 * 1 mod y 5 * 1 mod asterisk x 0.5 - abs 0.4 / y 0.3 - negate < * + x 25 * 1 mod y 25 * 1 mod asterisk 0.45 star and 0.4 starglow * + 0.5 starglow
Christmas Asterisk Tree
BradN
'24 Dec 22
: square ( n -- n ) dup * ; : ang ( x y -- n ) 0.5 - swap 0.5 - atan2 ; : dist ( x y -- n ) 0.5 - square push 0.5 - square pop + ; : asterisk ( x y -- f ) 2dup ang pi / 2.5 * 1 mod 0.5 < push dist .1 < pop and ; ( Thanks DarkstarAG ) : alpha ( -- n ) pi 10 / ; : beta y x ang pi + pi 5 / 2 * mod pi 5 / - abs ; : b ( n -- ) alpha sin * alpha cos beta sin * beta cos alpha sin * + / ; : star ( n -- ) b square y x dist > ; : starglow ( n -- ) 1 swap b square y x dist - .1 pow - ; x 25 * 1 mod y 25 * 1 mod asterisk 0.35 star and 0.35 starglow x 25 * 1 mod y 25 * 1 mod asterisk 0.45 star and 0.4 starglow * + 0.5 starglow
Christmas Asterisks
BradN
'24 Dec 22
: square dup * ; : ang 0.5 - swap 0.5 - atan2 ; : dist 0.5 - square push 0.5 - square pop + ; : star 2dup ang pi / 2.5 * 1 mod 0.5 < push dist .1 < pop and ; x y star
Asterisk Redux
BradN
'24 Dec 22
: square dup * ; : ang x 0.5 - y 0.5 - atan2 ; : dist x 0.5 - square y 0.5 - square + ; ang pi / 2.5 * 0.25 - 1 mod 0.5 > dist .1 < and
Asterisk
BradM
'24 Dec 22
: web push push x 0.1 + y 10011 + * pop + sin 0 max x 0.001 + y 5 + * pop ** sin 0 max + ; 31 23 web 99 177 web * x - 66 31 web 89 99 web * y x * - 31 31 web 66 66 web * y - 77 22 web 66 99 web * x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x +
streak Reduxaaa
aaaaaaaaa
'24 Dec 22
: 2pi 2 pi * ; : a ( -- a ) y .7 - x .5 - atan2 2pi / .25 + 1 mod ; : r ( -- r ) y .7 - 2 ** x .5 - 2 ** + .5 ** ; : f 1 swap - ; a r + .5 < a f r + .5 < +
Untitled
Anonymous
'24 Dec 22
: 2pi 2 pi * ; : a ( -- a ) y .7 - x .5 - atan2 2pi / .25 + 1 mod ; : r ( -- r ) y .7 - 2 ** x .5 - 2 ** + .5 ** ; : f 1 swap - ; a r + .5 < a f r + .5 < +
heart2
陳爽
'24 Dec 22
: 2pi 2 pi * ; : a ( -- a ) y .7 - x .5 - atan2 2pi / .25 + 1 mod ; : r ( -- r ) y .7 - 2 ** x .5 - 2 ** + .5 ** ; : f 1 swap - ; a r + .5 < a f r + .5 <
heart
陳爽
'24 Dec 22
\ tangram 七巧板 20220816 陳爽 \ 例0 \ 基塊拼成 方形 \ 例1 \ 基塊拼成 貓形 \ 例2 \ 基塊拼成 鵝形 \ 例3 \ 基塊拼成 船形 \ 例4 \ 影格動畫 \ 例5 \ 基塊各自轉動 \ 例6 \ 船行進退 \ 例7 \ 基塊翻轉 拼成 方形 與 貓型 \ 例8 \ 基塊翻轉 拼成 貓型 與 鵝形 \ 例9 \ 基塊翻轉 拼成 鵝形 與 船形 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 定義 r, 為 從指定點 X,Y 至任意點 x,y 之距離。 : r ( X Y -- r ) y swap ( X y Y ) - 2 ** ( X [y-Y]**2 ) x rot ( [y-Y]**2 x X ) - 2 ** ( [y-Y]**2 [x-X]**2 ) + ( [y-Y]**2+[x-X]**2 ) .5 ** ( [[y-Y]**2+[x-X]**2]**.5 ) ; \ 定義 2pi, 為 兩倍的圓周率。 : 2pi pi pi + ; \ 定義 座標轉換, 為 以 X,Y 為原點,座標軸轉向 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) \ 然後產生任意點 p" 的位置 x",y"。 : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .01 > -rot ( 洞 X Y ) x rot - y rot - ( 洞 x' y' ) over 2 ** over 2 ** + .5 ** ( 洞 x' y' r' ) 1.04 * -rot ( 洞 r" x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r" a ) 2pi * 2dup cos * -rot ( 洞 x" r" a' ) sin * ( 洞 x" y" ) ; \ 定義 中間值, 為從某值 z0 到另一個值 z1 隨時間 t 的 sin 週期所取得的 對應之中間值 z。 : 中間值 ( z0 z1 -- z ) over - t pi mod sin * + ; \ 定義 中間位置方向值, 為從某位置方向值 X0,Y0,A0 到另一個位置方向值 X1,Y1,A1 \ 隨時間 t 的 sin 週期所取得對應的 中間位置方向值 X,Y,A。 : 中間位置方向值 ( X0 Y0 A0 X1 Y1 A1 -- X Y A ) >r rot r> ( X0 Y0 X1 Y1 A0 A1 ) 中間值 >r ( X0 Y0 X1 Y1 ) >r swap r> ( X0 X1 Y0 Y1 ) 中間值 >r ( X0 X1 ) 中間值 r> r> ( X Y A ) ; \ 定義 網格, 將正方形視窗分割成 10*10 的小正方形視窗 : 網格 x .1 mod .005 > y .1 mod .005 > * ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 綠塊 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.125 > -rot ( R G B 洞 x"+y">-.125 x" y" ) dup >r - .125 < ( R G B 洞 x"+y">-.125 x"-y"<.125 ) r> .125 < ( R G B 洞 x"+y"<-.125 x"-y"<.125 y"<.125 ) * * * ( R G B p0” ) rot + swap ( R G+p0” B ) ; : 黃塊 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - .125 < -rot ( R G B 洞 x"-y"<.125 x" y" ) over >r + .125 < r> ( R G B 洞 x"-y"<.125 x"+y"<.125 x" ) -.125 > ( R G B 洞 x"-y"<.125 x"+y"<.125 x">-.125 ) * * * ( R G B p1” ) >r rot r@ + rot r> + rot ( R+p1” G+p1” B ) ; : 藍塊 ( R G B X Y A -- R G B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -.0625 > -rot ( R G B 洞 x"-y">-.0625 x" y" ) over >r + -.0625 > r> ( R G B 洞 x"-y">-.0625 y"<.0625 x" ) .0625 < ( R G B 洞 x"-y">-.0625 y"<.0625 x">-.0625 ) * * * ( R G B p2” ) + ( R G B+p2” ) ; : 紅塊 ( R G B X Y A -- R' G B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -rot + ( R G B 洞 x"-y" x"+y" ) dup -.125 > swap ( R G B 洞 x"-y" x"+y">-.125 x"+y" ) .125 < rot ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y" ) dup .125 < swap ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y"<.125 x"-y" ) -.125 > ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y"<.125 x"-y">-.125 ) * * * * ( R G B p3” ) >r rot r> + -rot ( R+p3” G B ) ; : 青塊 ( R G B X Y A -- R G' B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup + .0625 < -rot ( R G B 洞 x"+y"<.0625 x" y" ) dup >r - -.0625 > ( R G B 洞 x"+y">-.0625 x"-y">-.0625 ) r> -.0625 > ( R G B 洞 x"+y"<-.0625 x"-y"<-.0625 y">-.0625 ) * * * ( R G B p4” ) >r swap r@ + swap r> + ( R G+p4” B+p4” ) ; : 紫塊 ( R G B X Y A -- R' G B' ) 座標轉換 ( R G B 洞 x" y" ) swap over - ( R G B 洞 y" x"-y" ) dup -.125 > swap ( R G B 洞 y” x"-y">-.125 x"-y" ) .125 < rot ( R G B 洞 x"-y">-.125 x"-y"<.125 y" ) dup .0625 < swap ( R G B 洞 x"-y">-.125 x"-y"<.125 y"<.0625 y" ) -.0625 > ( R G B 洞 x"-y">-.125 x"-y"<.125 y"<.0625 y">-.0625 ) * * * * ( R G B p5” ) >r rot r@ + -rot r> + ( R+p5” G B+p5” ) ; : 橘塊 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - 0 > rot ( R G B 洞 x"-y">0 x" y" ) .125 < rot ( R G B 洞 x"-y">0 y"<.125 x" ) -.125 > ( R G B 洞 x"-y">0 y"<.125 x">-.125 ) * * * ( R G B p6” ) >r rot r@ + rot r> 2 / + rot ( R+p6” G+p6” B ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 綠貓 .561 .145 .125 ; : 綠鵝 .511 .185 .875 ; : 綠船 .550 .500 .500 ; : 綠方 .500 .625 .000 ; : 黃貓 .521 .400 .000 ; : 黃鵝 .660 .330 .750 ; : 黃船 .426 .621 .000 ; : 黃方 .375 .500 .000 ; : 藍貓 .355 .765 .000 ; : 藍鵝 .324 .755 .375 ; : 藍船 .668 .250 .125 ; : 藍方 .687 .625 .000 ; : 紅貓 .290 .640 .000 ; : 紅鵝 .371 .520 .000 ; : 紅船 .535 .288 .125 ; : 紅方 .625 .500 .000 ; : 青貓 .230 .765 .750 ; : 青鵝 .310 .399 .750 ; : 青船 .404 .329 .875 ; : 青方 .500 .437 .000 ; : 紫貓 .822 .118 .000 ; : 紫鵝 .432 .706 .250 ; : 紫船 .266 .289 .375 ; : 紫方 .437 .312 .000 ; : 橘貓 .400 .456 .625 ; : 橘鵝 .423 .275 .625 ; : 橘船 .801 .373 .875 ; : 橘方 .625 .375 .000 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 方 綠方 綠塊 黃方 黃塊 藍方 藍塊 紅方 紅塊 青方 青塊 紫方 紫塊 橘方 橘塊 ; : 貓 綠貓 綠塊 黃貓 黃塊 藍貓 藍塊 紅貓 紅塊 青貓 青塊 紫貓 紫塊 橘貓 橘塊 ; : 鵝 綠鵝 綠塊 黃鵝 黃塊 藍鵝 藍塊 紅鵝 紅塊 青鵝 青塊 紫鵝 紫塊 橘鵝 橘塊 ; : 船 綠船 綠塊 黃船 黃塊 藍船 藍塊 紅船 紅塊 青船 青塊 紫船 紫塊 橘船 橘塊 ; : 方變貓 綠方 綠貓 中間位置方向值 綠塊 黃方 黃貓 中間位置方向值 黃塊 藍方 藍貓 中間位置方向值 藍塊 紅方 紅貓 中間位置方向值 紅塊 青方 青貓 中間位置方向值 青塊 紫方 紫貓 中間位置方向值 紫塊 橘方 橘貓 中間位置方向值 橘塊 ; : 貓變鵝 綠貓 綠鵝 中間位置方向值 綠塊 黃貓 黃鵝 中間位置方向值 黃塊 藍貓 藍鵝 中間位置方向值 藍塊 紅貓 紅鵝 中間位置方向值 紅塊 青貓 青鵝 中間位置方向值 青塊 紫貓 紫鵝 中間位置方向值 紫塊 橘貓 橘鵝 中間位置方向值 橘塊 ; : 鵝變船 綠鵝 綠船 中間位置方向值 綠塊 黃鵝 黃船 中間位置方向值 黃塊 藍鵝 藍船 中間位置方向值 藍塊 紅鵝 紅船 中間位置方向值 紅塊 青鵝 青船 中間位置方向值 青塊 紫鵝 紫船 中間位置方向值 紫塊 橘鵝 橘船 中間位置方向值 橘塊 ; : 船變方 綠船 綠方 中間位置方向值 綠塊 黃船 黃方 中間位置方向值 黃塊 藍船 藍方 中間位置方向值 藍塊 紅船 紅方 中間位置方向值 紅塊 青船 青方 中間位置方向值 青塊 紫船 紫方 中間位置方向值 紫塊 橘船 橘方 中間位置方向值 橘塊 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七巧板基塊組圖範例 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 例0 \ 基塊拼成 方形 0 0 0 \ 開始要先 全黑 方 網格 ; : 例1 \ 基塊拼成 貓形 0 0 0 \ 開始要先 全黑 貓 網格 ; : 例2 \ 基塊拼成 鵝形 0 0 0 \ 開始要先 全黑 鵝 網格 ; : 例3 \ 基塊拼成 船形 0 0 0 \ 開始要先 全黑 船 網格 ; : 影格 t 8 mod floor ; : [ = if ; : ] then ; : 例4 \ 影格動畫 0 0 0 \ 開始要先 全黑 影格 0 [ 綠方 綠塊 ] 影格 1 [ 黃方 黃塊 ] 影格 2 [ 藍方 藍塊 ] 影格 3 [ 紅方 紅塊 ] 影格 4 [ 青方 青塊 ] 影格 5 [ 紫方 紫塊 ] 影格 6 [ 橘方 橘塊 ] 影格 7 [ 黃方 黃塊 藍方 藍塊 橘方 橘塊 ] 網格 ; : 例5 \ 基塊各自轉動 0 0 0 \ 開始要先 全黑 綠方 1 中間值 綠塊 黃方 1 中間值 黃塊 藍方 1 中間值 藍塊 紅方 1 中間值 紅塊 青方 1 中間值 青塊 紫方 1 中間值 紫塊 橘方 1 中間值 橘塊 網格 ; : 進退值 ( X Y A -- X' Y A ) >r >r dup .5 - swap .5 + 中間值 r> r> ; : 例6 \ 船行進退 0 0 0 \ 開始要先 全黑 黃船 進退值 黃塊 綠船 進退值 綠塊 橘船 進退值 橘塊 紅船 進退值 紅塊 藍船 進退值 藍塊 青船 進退值 青塊 紫船 進退值 紫塊 網格 ; : 例7 \ 基塊 隨時間週期 翻轉移動 拼成 方形 與 貓型 0 0 0 \ 開始要先 全黑 青方 青貓 中間位置方向值 青塊 藍方 藍貓 中間位置方向值 藍塊 紅方 紅貓 中間位置方向值 紅塊 橘方 橘貓 中間位置方向值 橘塊 黃方 黃貓 中間位置方向值 黃塊 綠方 綠貓 中間位置方向值 綠塊 紫方 紫貓 中間位置方向值 紫塊 網格 ; : 例8 \ 基塊 隨時間週期 翻轉移動 拼成 貓型 與 鵝形 0 0 0 \ 開始要先 全黑 貓變鵝 網格 ; : 例9 \ 基塊 隨時間週期 翻轉移動 拼成 鵝型 與 船形 0 0 0 \ 開始要先 全黑 鵝變船 網格 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 選擇以下其中一列,改前置反斜線為空格,來看範例的執行效果 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 例0 \ 基塊拼成 方形 \ 例1 \ 基塊拼成 貓形 \ 例2 \ 基塊拼成 鵝形 \ 例3 \ 基塊拼成 船形 \ 例4 \ 影格動畫 \ 例5 \ 基塊各自轉動 \ 例6 \ 船行進退 \ 例7 \ 基塊翻轉 拼成 方形 與 貓型 \ 例8 \ 基塊翻轉 拼成 貓型 與 鵝形 例9 \ 基塊翻轉 拼成 鵝形 與 船形
七巧板 Redux26
陳爽
'24 Dec 22
\ tangram_20 七巧板 20220816 陳爽 \ 例0 \ 基塊拼成 方形 \ 例1 \ 基塊拼成 貓形 \ 例2 \ 基塊拼成 鵝形 \ 例3 \ 基塊拼成 船形 \ 例4 \ 影格動畫 \ 例5 \ 基塊各自轉動 \ 例6 \ 船行進退 \ 例7 \ 基塊翻轉 拼成 方形 與 貓型 \ 例8 \ 基塊翻轉 拼成 貓型 與 鵝形 \ 例9 \ 基塊翻轉 拼成 鵝形 與 船形 \ 定義 r, 為 從指定點 X,Y 至任意點 x,y 之距離。 : r ( X Y -- r ) y swap ( X y Y ) - 2 ** ( X [y-Y]**2 ) x rot ( [y-Y]**2 x X ) - 2 ** ( [y-Y]**2 [x-X]**2 ) + ( [y-Y]**2+[x-X]**2 ) .5 ** ( [[y-Y]**2+[x-X]**2]**.5 ) ; \ 定義 2pi, 為 兩倍的圓周率。 : 2pi pi pi + ; \ 定義 座標轉換, 為 以 X,Y 為原點,座標軸轉向 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) \ 然後產生任意點 p" 的位置 x",y"。 : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .01 > -rot ( 洞 X Y ) x rot - y rot - ( 洞 x' y' ) over 2 ** over 2 ** + .5 ** ( 洞 x' y' r' ) 1.04 * -rot ( 洞 r" x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r" a ) 2pi * 2dup cos * -rot ( 洞 x" r" a' ) sin * ( 洞 x" y" ) ; \ 定義 中間值, 為從某值 z0 到另一個值 z1 隨時間 t 的 sin 週期所取得的 對應之中間值 z。 : 中間值 ( z0 z1 -- z ) over - t pi mod sin * + ; \ 定義 中間位置方向值, 為從某位置方向值 X0,Y0,A0 到另一個位置方向值 X1,Y1,A1 \ 隨時間 t 的 sin 週期所取得對應的 中間位置方向值 X,Y,A。 : 中間位置方向值 ( X0 Y0 A0 X1 Y1 A1 -- X Y A ) >r rot r> ( X0 Y0 X1 Y1 A0 A1 ) 中間值 >r ( X0 Y0 X1 Y1 ) >r swap r> ( X0 X1 Y0 Y1 ) 中間值 >r ( X0 X1 ) 中間值 r> r> ( X Y A ) ; \ 定義 網格, 將正方形視窗分割成 10*10 的小正方形視窗 : 網格 x .1 mod .005 > y .1 mod .005 > * ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 綠塊 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.125 > -rot ( R G B 洞 x"+y">-.125 x" y" ) dup >r - .125 < ( R G B 洞 x"+y">-.125 x"-y"<.125 ) r> .125 < ( R G B 洞 x"+y"<-.125 x"-y"<.125 y"<.125 ) * * * ( R G B p0” ) rot + swap ( R G+p0” B ) ; : 黃塊 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - .125 < -rot ( R G B 洞 x"-y"<.125 x" y" ) over >r + .125 < r> ( R G B 洞 x"-y"<.125 x"+y"<.125 x" ) -.125 > ( R G B 洞 x"-y"<.125 x"+y"<.125 x">-.125 ) * * * ( R G B p1” ) >r rot r@ + rot r> + rot ( R+p1” G+p1” B ) ; : 藍塊 ( R G B X Y A -- R G B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -.0625 > -rot ( R G B 洞 x"-y">-.0625 x" y" ) over >r + -.0625 > r> ( R G B 洞 x"-y">-.0625 y"<.0625 x" ) .0625 < ( R G B 洞 x"-y">-.0625 y"<.0625 x">-.0625 ) * * * ( R G B p2” ) + ( R G B+p2” ) ; : 紅塊 ( R G B X Y A -- R' G B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -rot + ( R G B 洞 x"-y" x"+y" ) dup -.125 > swap ( R G B 洞 x"-y" x"+y">-.125 x"+y" ) .125 < rot ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y" ) dup .125 < swap ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y"<.125 x"-y" ) -.125 > ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y"<.125 x"-y">-.125 ) * * * * ( R G B p3” ) >r rot r> + -rot ( R+p3” G B ) ; : 青塊 ( R G B X Y A -- R G' B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup + .0625 < -rot ( R G B 洞 x"+y"<.0625 x" y" ) dup >r - -.0625 > ( R G B 洞 x"+y">-.0625 x"-y">-.0625 ) r> -.0625 > ( R G B 洞 x"+y"<-.0625 x"-y"<-.0625 y">-.0625 ) * * * ( R G B p4” ) >r swap r@ + swap r> + ( R G+p4” B+p4” ) ; : 紫塊 ( R G B X Y A -- R' G B' ) 座標轉換 ( R G B 洞 x" y" ) swap over - ( R G B 洞 y" x"-y" ) dup -.125 > swap ( R G B 洞 y” x"-y">-.125 x"-y" ) .125 < rot ( R G B 洞 x"-y">-.125 x"-y"<.125 y" ) dup .0625 < swap ( R G B 洞 x"-y">-.125 x"-y"<.125 y"<.0625 y" ) -.0625 > ( R G B 洞 x"-y">-.125 x"-y"<.125 y"<.0625 y">-.0625 ) * * * * ( R G B p5” ) >r rot r@ + -rot r> + ( R+p5” G B+p5” ) ; : 橘塊 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - 0 > rot ( R G B 洞 x"-y">0 x" y" ) .125 < rot ( R G B 洞 x"-y">0 y"<.125 x" ) -.125 > ( R G B 洞 x"-y">0 y"<.125 x">-.125 ) * * * ( R G B p6” ) >r rot r@ + rot r> 2 / + rot ( R+p6” G+p6” B ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 綠貓 .561 .145 .125 ; : 綠鵝 .511 .185 .875 ; : 綠船 .550 .500 .500 ; : 綠方 .500 .625 .000 ; : 黃貓 .521 .400 .000 ; : 黃鵝 .660 .330 .750 ; : 黃船 .426 .621 .000 ; : 黃方 .375 .500 .000 ; : 藍貓 .355 .765 .000 ; : 藍鵝 .324 .755 .375 ; : 藍船 .668 .250 .125 ; : 藍方 .687 .625 .000 ; : 紅貓 .290 .640 .000 ; : 紅鵝 .371 .520 .000 ; : 紅船 .535 .288 .125 ; : 紅方 .625 .500 .000 ; : 青貓 .230 .765 .750 ; : 青鵝 .310 .399 .750 ; : 青船 .404 .329 .875 ; : 青方 .500 .437 .000 ; : 紫貓 .822 .118 .000 ; : 紫鵝 .432 .706 .250 ; : 紫船 .266 .289 .375 ; : 紫方 .437 .312 .000 ; : 橘貓 .400 .456 .625 ; : 橘鵝 .423 .275 .625 ; : 橘船 .801 .373 .875 ; : 橘方 .625 .375 .000 ; : 方 綠方 綠塊 黃方 黃塊 藍方 藍塊 紅方 紅塊 青方 青塊 紫方 紫塊 橘方 橘塊 ; : 貓 綠貓 綠塊 黃貓 黃塊 藍貓 藍塊 紅貓 紅塊 青貓 青塊 紫貓 紫塊 橘貓 橘塊 ; : 鵝 綠鵝 綠塊 黃鵝 黃塊 藍鵝 藍塊 紅鵝 紅塊 青鵝 青塊 紫鵝 紫塊 橘鵝 橘塊 ; : 船 綠船 綠塊 黃船 黃塊 藍船 藍塊 紅船 紅塊 青船 青塊 紫船 紫塊 橘船 橘塊 ; : 方變貓 綠方 綠貓 中間位置方向值 綠塊 黃方 黃貓 中間位置方向值 黃塊 藍方 藍貓 中間位置方向值 藍塊 紅方 紅貓 中間位置方向值 紅塊 青方 青貓 中間位置方向值 青塊 紫方 紫貓 中間位置方向值 紫塊 橘方 橘貓 中間位置方向值 橘塊 ; : 貓變鵝 綠貓 綠鵝 中間位置方向值 綠塊 黃貓 黃鵝 中間位置方向值 黃塊 藍貓 藍鵝 中間位置方向值 藍塊 紅貓 紅鵝 中間位置方向值 紅塊 青貓 青鵝 中間位置方向值 青塊 紫貓 紫鵝 中間位置方向值 紫塊 橘貓 橘鵝 中間位置方向值 橘塊 ; : 鵝變船 綠鵝 綠船 中間位置方向值 綠塊 黃鵝 黃船 中間位置方向值 黃塊 藍鵝 藍船 中間位置方向值 藍塊 紅鵝 紅船 中間位置方向值 紅塊 青鵝 青船 中間位置方向值 青塊 紫鵝 紫船 中間位置方向值 紫塊 橘鵝 橘船 中間位置方向值 橘塊 ; : 船變方 綠船 綠方 中間位置方向值 綠塊 黃船 黃方 中間位置方向值 黃塊 藍船 藍方 中間位置方向值 藍塊 紅船 紅方 中間位置方向值 紅塊 青船 青方 中間位置方向值 青塊 紫船 紫方 中間位置方向值 紫塊 橘船 橘方 中間位置方向值 橘塊 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七巧板基塊組圖範例 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 例0 \ 基塊拼成 方形 0 0 0 \ 開始要先 全黑 方 網格 ; : 例1 \ 基塊拼成 貓形 0 0 0 \ 開始要先 全黑 貓 網格 ; : 例2 \ 基塊拼成 鵝形 0 0 0 \ 開始要先 全黑 鵝 網格 ; : 例3 \ 基塊拼成 船形 0 0 0 \ 開始要先 全黑 船 網格 ; : 影格 t 8 mod floor ; : [ = if ; : ] then ; : 例4 \ 影格動畫 0 0 0 \ 開始要先 全黑 影格 0 [ 綠方 綠塊 ] 影格 1 [ 黃方 黃塊 ] 影格 2 [ 藍方 藍塊 ] 影格 3 [ 紅方 紅塊 ] 影格 4 [ 青方 青塊 ] 影格 5 [ 紫方 紫塊 ] 影格 6 [ 橘方 橘塊 ] 影格 7 [ 黃方 黃塊 藍方 藍塊 橘方 橘塊 ] 網格 ; : 例5 \ 基塊各自轉動 0 0 0 \ 開始要先 全黑 綠方 1 中間值 綠塊 黃方 1 中間值 黃塊 藍方 1 中間值 藍塊 紅方 1 中間值 紅塊 青方 1 中間值 青塊 紫方 1 中間值 紫塊 橘方 1 中間值 橘塊 網格 ; : 進退值 ( X Y A -- X' Y A ) >r >r dup .5 - swap .5 + 中間值 r> r> ; : 例6 \ 船行進退 0 0 0 \ 開始要先 全黑 黃船 進退值 黃塊 綠船 進退值 綠塊 橘船 進退值 橘塊 紅船 進退值 紅塊 藍船 進退值 藍塊 青船 進退值 青塊 紫船 進退值 紫塊 網格 ; : 例7 \ 基塊 隨時間週期 翻轉移動 拼成 方形 與 貓型 0 0 0 \ 開始要先 全黑 青方 青貓 中間位置方向值 青塊 藍方 藍貓 中間位置方向值 藍塊 紅方 紅貓 中間位置方向值 紅塊 橘方 橘貓 中間位置方向值 橘塊 黃方 黃貓 中間位置方向值 黃塊 綠方 綠貓 中間位置方向值 綠塊 紫方 紫貓 中間位置方向值 紫塊 網格 ; : 例8 \ 基塊 隨時間週期 翻轉移動 拼成 貓型 與 鵝形 0 0 0 \ 開始要先 全黑 貓變鵝 網格 ; : 例9 \ 基塊 隨時間週期 翻轉移動 拼成 鵝型 與 船形 0 0 0 \ 開始要先 全黑 鵝變船 網格 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 選擇以下其中一列,改前置反斜線為空格,來看範例的執行效果 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 例0 \ 基塊拼成 方形 \ 例1 \ 基塊拼成 貓形 \ 例2 \ 基塊拼成 鵝形 \ 例3 \ 基塊拼成 船形 \ 例4 \ 影格動畫 \ 例5 \ 基塊各自轉動 \ 例6 \ 船行進退 \ 例7 \ 基塊翻轉 拼成 方形 與 貓型 \ 例8 \ 基塊翻轉 拼成 貓型 與 鵝形 例9 \ 基塊翻轉 拼成 鵝形 與 船形
七巧板 Redux25
Anonymous
'24 Dec 22
\ tangram_20 七巧板 20220612 陳爽 \ 改最後一列 可執行 例1 例2 例3 例4 例5 例6 例7 例8 或 例9 \ 例1 基塊拼成 方形 \ 例2 基塊散開 各自轉動 \ 例3 基塊拼成 貓形 \ 例4 基塊翻轉 拼成 方形 與 貓型 \ 例5 基塊拼成 鵝形 \ 例6 基塊翻轉 拼成 貓型 與 鵝形 \ 例7 基塊拼成 船形 \ 例8 基塊翻轉 拼成 鵝形 與 船型 \ 例9 船行反覆前進後退 \ 定義 r, 為 從指定點 X,Y 至任意點 x,y 之距離。 : r ( X Y -- r ) y swap ( X y Y ) - 2 ** ( X [y-Y]**2 ) x rot ( [y-Y]**2 x X ) - 2 ** ( [y-Y]**2 [x-X]**2 ) + ( [y-Y]**2+[x-X]**2 ) .5 ** ( [[y-Y]**2+[x-X]**2]**.5 ) ; \ 定義 2pi, 為 兩倍的圓周率。 : 2pi pi pi + ; \ 定義 座標轉換, 為 以 X,Y 為原點,座標軸轉向 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) \ 然後產生任意點 p" 的位置 x",y"。 : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .01 > -rot ( 洞 X Y ) x rot - y rot - ( 洞 x' y' ) over 2 ** over 2 ** + .5 ** ( 洞 x' y' r' ) 1.04 * -rot ( 洞 r" x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r" a ) 2pi * 2dup cos * -rot ( 洞 x" r" a' ) sin * ( 洞 x" y" ) ; \ 定義 中間值, 為從某值 z0 到另一個值 z1 隨時間 t 的 sin 週期所取得的 對應之中間值 z。 : 中間值 ( z0 z1 -- z ) over - t pi mod sin * + ; \ 定義 中間位置方向值, 為從某位置方向值 X0,Y0,A0 到另一個位置方向值 X1,Y1,A1 \ 隨時間 t 的 sin 週期所取得對應的 中間位置方向值 X,Y,A。 : 中間位置方向值 ( X0 Y0 A0 X1 Y1 A1 -- X Y A ) >r rot r> ( X0 Y0 X1 Y1 A0 A1 ) 中間值 >r ( X0 Y0 X1 Y1 ) >r swap r> ( X0 X1 Y0 Y1 ) 中間值 >r ( X0 X1 ) 中間值 r> r> ( X Y A ) ; \ 定義 網格, 將正方形視窗分割成 10*10 的小正方形視窗 : 網格 x .1 mod .005 > y .1 mod .005 > * ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 綠塊 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.125 > -rot ( R G B 洞 x"+y">-.125 x" y" ) dup >r - .125 < ( R G B 洞 x"+y">-.125 x"-y"<.125 ) r> .125 < ( R G B 洞 x"+y"<-.125 x"-y"<.125 y"<.125 ) * * * ( R G B p0” ) rot + swap ( R G+p0” B ) ; : 黃塊 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - .125 < -rot ( R G B 洞 x"-y"<.125 x" y" ) over >r + .125 < r> ( R G B 洞 x"-y"<.125 x"+y"<.125 x" ) -.125 > ( R G B 洞 x"-y"<.125 x"+y"<.125 x">-.125 ) * * * ( R G B p1” ) >r rot r@ + rot r> + rot ( R+p1” G+p1” B ) ; : 藍塊 ( R G B X Y A -- R G B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -.0625 > -rot ( R G B 洞 x"-y">-.0625 x" y" ) over >r + -.0625 > r> ( R G B 洞 x"-y">-.0625 y"<.0625 x" ) .0625 < ( R G B 洞 x"-y">-.0625 y"<.0625 x">-.0625 ) * * * ( R G B p2” ) + ( R G B+p2” ) ; : 紅塊 ( R G B X Y A -- R' G B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -rot + ( R G B 洞 x"-y" x"+y" ) dup -.125 > swap ( R G B 洞 x"-y" x"+y">-.125 x"+y" ) .125 < rot ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y" ) dup .125 < swap ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y"<.125 x"-y" ) -.125 > ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y"<.125 x"-y">-.125 ) * * * * ( R G B p3” ) >r rot r> + -rot ( R+p3” G B ) ; : 青塊 ( R G B X Y A -- R G' B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup + .0625 < -rot ( R G B 洞 x"+y"<.0625 x" y" ) dup >r - -.0625 > ( R G B 洞 x"+y">-.0625 x"-y">-.0625 ) r> -.0625 > ( R G B 洞 x"+y"<-.0625 x"-y"<-.0625 y">-.0625 ) * * * ( R G B p4” ) >r swap r@ + swap r> + ( R G+p4” B+p4” ) ; : 紫塊 ( R G B X Y A -- R' G B' ) 座標轉換 ( R G B 洞 x" y" ) swap over - ( R G B 洞 y" x"-y" ) dup -.125 > swap ( R G B 洞 y” x"-y">-.125 x"-y" ) .125 < rot ( R G B 洞 x"-y">-.125 x"-y"<.125 y" ) dup .0625 < swap ( R G B 洞 x"-y">-.125 x"-y"<.125 y"<.0625 y" ) -.0625 > ( R G B 洞 x"-y">-.125 x"-y"<.125 y"<.0625 y">-.0625 ) * * * * ( R G B p5” ) >r rot r@ + -rot r> + ( R+p5” G B+p5” ) ; : 橘塊 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - 0 > rot ( R G B 洞 x"-y">0 x" y" ) .125 < rot ( R G B 洞 x"-y">0 y"<.125 x" ) -.125 > ( R G B 洞 x"-y">0 y"<.125 x">-.125 ) * * * ( R G B p6” ) >r rot r@ + rot r> 2 / + rot ( R+p6” G+p6” B ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 綠貓 .561 .145 .125 ; : 綠鵝 .511 .185 .875 ; : 綠船 .550 .500 .500 ; : 綠方 .500 .625 .000 ; : 黃貓 .521 .400 .000 ; : 黃鵝 .660 .330 .750 ; : 黃船 .426 .621 .000 ; : 黃方 .375 .500 .000 ; : 藍貓 .355 .765 .000 ; : 藍鵝 .324 .755 .375 ; : 藍船 .668 .250 .125 ; : 藍方 .687 .625 .000 ; : 紅貓 .290 .640 .000 ; : 紅鵝 .371 .520 .000 ; : 紅船 .535 .288 .125 ; : 紅方 .625 .500 .000 ; : 青貓 .230 .765 .750 ; : 青鵝 .310 .399 .750 ; : 青船 .404 .329 .875 ; : 青方 .500 .437 .000 ; : 紫貓 .822 .118 .000 ; : 紫鵝 .432 .706 .250 ; : 紫船 .266 .289 .375 ; : 紫方 .437 .312 .000 ; : 橘貓 .400 .456 .625 ; : 橘鵝 .423 .275 .625 ; : 橘船 .801 .373 .875 ; : 橘方 .625 .375 .000 ; : 方 綠方 綠塊 黃方 黃塊 藍方 藍塊 紅方 紅塊 青方 青塊 紫方 紫塊 橘方 橘塊 ; : 方變貓 綠方 綠貓 中間位置方向值 綠塊 黃方 黃貓 中間位置方向值 黃塊 藍方 藍貓 中間位置方向值 藍塊 紅方 紅貓 中間位置方向值 紅塊 青方 青貓 中間位置方向值 青塊 紫方 紫貓 中間位置方向值 紫塊 橘方 橘貓 中間位置方向值 橘塊 ; : 貓 綠貓 綠塊 黃貓 黃塊 藍貓 藍塊 紅貓 紅塊 青貓 青塊 紫貓 紫塊 橘貓 橘塊 ; : 貓變鵝 綠貓 綠鵝 中間位置方向值 綠塊 黃貓 黃鵝 中間位置方向值 黃塊 藍貓 藍鵝 中間位置方向值 藍塊 紅貓 紅鵝 中間位置方向值 紅塊 青貓 青鵝 中間位置方向值 青塊 紫貓 紫鵝 中間位置方向值 紫塊 橘貓 橘鵝 中間位置方向值 橘塊 ; : 鵝 綠鵝 綠塊 黃鵝 黃塊 藍鵝 藍塊 紅鵝 紅塊 青鵝 青塊 紫鵝 紫塊 橘鵝 橘塊 ; : 鵝變船 綠鵝 綠船 中間位置方向值 綠塊 黃鵝 黃船 中間位置方向值 黃塊 藍鵝 藍船 中間位置方向值 藍塊 紅鵝 紅船 中間位置方向值 紅塊 青鵝 青船 中間位置方向值 青塊 紫鵝 紫船 中間位置方向值 紫塊 橘鵝 橘船 中間位置方向值 橘塊 ; : 船 綠船 綠塊 黃船 黃塊 藍船 藍塊 紅船 紅塊 青船 青塊 紫船 紫塊 橘船 橘塊 ; : 船變方 綠船 綠方 中間位置方向值 綠塊 黃船 黃方 中間位置方向值 黃塊 藍船 藍方 中間位置方向值 藍塊 紅船 紅方 中間位置方向值 紅塊 青船 青方 中間位置方向值 青塊 紫船 紫方 中間位置方向值 紫塊 橘船 橘方 中間位置方向值 橘塊 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七巧板基塊組圖範例 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 例0 \ 基塊拼成 方形 0 0 0 \ 開始要先 全黑 方 網格 ; : 影格 t 8 mod floor ; : [ = if ; : ] then ; : 例1 \ 影格動畫 0 0 0 \ 開始要先 全黑 影格 0 [ 綠方 綠塊 ] 影格 1 [ 黃方 黃塊 ] 影格 2 [ 藍方 藍塊 ] 影格 3 [ 紅方 紅塊 ] 影格 4 [ 青方 青塊 ] 影格 5 [ 紫方 紫塊 ] 影格 6 [ 橘方 橘塊 ] 影格 7 [ 黃方 黃塊 藍方 藍塊 橘方 橘塊 ] 網格 ; : 例2 \ 基塊散開 各自每 10 秒轉 1 圈 0 0 0 \ 開始要先 全黑 綠方 1 中間值 綠塊 黃方 1 中間值 黃塊 藍方 1 中間值 藍塊 紅方 1 中間值 紅塊 青方 1 中間值 青塊 紫方 1 中間值 紫塊 橘方 1 中間值 橘塊 網格 ; : 例3 \ 基塊拼成 貓形 0 0 0 \ 開始要先 全黑 貓 網格 ; : 例4 \ 基塊 隨時間週期 翻轉移動 拼成 方形 與 貓型 0 0 0 \ 開始要先 全黑 青方 青貓 中間位置方向值 青塊 藍方 藍貓 中間位置方向值 藍塊 紅方 紅貓 中間位置方向值 紅塊 橘方 橘貓 中間位置方向值 橘塊 黃方 黃貓 中間位置方向值 黃塊 綠方 綠貓 中間位置方向值 綠塊 紫方 紫貓 中間位置方向值 紫塊 網格 ; : 例5 \ 基塊拼成 鵝形 0 0 0 \ 開始要先 全黑 鵝 網格 ; : 例6 \ 基塊 隨時間週期 翻轉移動 拼成 貓型 與 鵝形 0 0 0 \ 開始要先 全黑 貓變鵝 網格 ; : 例7 \ 基塊拼成 船形 0 0 0 \ 開始要先 全黑 船 網格 ; : 例8 \ 基塊 隨時間週期 翻轉移動 拼成 鵝型 與 船形 0 0 0 \ 開始要先 全黑 鵝變船 網格 ; : 進退值 ( X Y A -- X' Y A ) >r >r dup .5 - swap .5 + 中間值 r> r> ; : 例9 \ 船行進退 0 0 0 \ 開始要先 全黑 黃船 進退值 黃塊 綠船 進退值 綠塊 橘船 進退值 橘塊 紅船 進退值 紅塊 藍船 進退值 藍塊 青船 進退值 青塊 紫船 進退值 紫塊 網格 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 選擇以下其中一列,改前置反斜線為空格,來看範例的執行效果 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 例0 \ 基塊拼成 方形 \ 例1 \ 基塊拼成 貓形 \ 例2 \ 基塊拼成 鵝形 \ 例3 \ 基塊拼成 船形 \ 例4 \ 影格動畫 \ 例5 \ 基塊各自轉動 \ 例6 \ 船行進退 \ 例7 \ 基塊翻轉 拼成 方形 與 貓型 \ 例8 \ 基塊翻轉 拼成 貓型 與 鵝形 例9 \ 基塊翻轉 拼成 鵝形 與 船形
七巧板 Redux24
陳爽
'24 Dec 22
\ tangram_20 七巧板 20220612 陳爽 \ 改最後一列 可執行 例1 例2 例3 例4 例5 例6 例7 例8 或 例9 \ 例1 基塊拼成 方形 \ 例2 基塊散開 各自轉動 \ 例3 基塊拼成 貓形 \ 例4 基塊翻轉 拼成 方形 與 貓型 \ 例5 基塊拼成 鵝形 \ 例6 基塊翻轉 拼成 貓型 與 鵝形 \ 例7 基塊拼成 船形 \ 例8 基塊翻轉 拼成 鵝形 與 船型 \ 例9 船行反覆前進後退 \ 定義 r, 為 從指定點 X,Y 至任意點 x,y 之距離。 : r ( X Y -- r ) y swap ( X y Y ) - 2 ** ( X [y-Y]**2 ) x rot ( [y-Y]**2 x X ) - 2 ** ( [y-Y]**2 [x-X]**2 ) + ( [y-Y]**2+[x-X]**2 ) .5 ** ( [[y-Y]**2+[x-X]**2]**.5 ) ; \ 定義 2pi, 為 兩倍的圓周率。 : 2pi pi pi + ; \ 定義 座標轉換, 為 以 X,Y 為原點,座標軸轉向 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) \ 然後產生任意點 p" 的位置 x",y"。 : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .01 > -rot ( 洞 X Y ) x rot - y rot - ( 洞 x' y' ) over 2 ** over 2 ** + .5 ** ( 洞 x' y' r' ) 1.04 * -rot ( 洞 r" x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r" a ) 2pi * 2dup cos * -rot ( 洞 x" r" a' ) sin * ( 洞 x" y" ) ; \ 定義 中間值, 為從某值 z0 到另一個值 z1 隨時間 t 的 sin 週期所取得的 對應之中間值 z。 : 中間值 ( z0 z1 -- z ) over - t sin 2 / .5 + * + ; \ 定義 中間位置方向值, 為從某位置方向值 X0,Y0,A0 到另一個位置方向值 X1,Y1,A1 \ 隨時間 t 的 sin 週期所取得對應的 中間位置方向值 X,Y,A。 : 中間位置方向值 ( X0 Y0 A0 X1 Y1 A1 -- X Y A ) >r rot r> ( X0 Y0 X1 Y1 A0 A1 ) 中間值 >r ( X0 Y0 X1 Y1 ) >r swap r> ( X0 X1 Y0 Y1 ) 中間值 >r ( X0 X1 ) 中間值 r> r> ( X Y A ) ; \ 定義 網格, 將正方形視窗分割成 10*10 的小正方形視窗 : 網格 x .1 mod .005 > y .1 mod .005 > * ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 綠塊 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.125 > -rot ( R G B 洞 x"+y">-.125 x" y" ) dup >r - .125 < ( R G B 洞 x"+y">-.125 x"-y"<.125 ) r> .125 < ( R G B 洞 x"+y"<-.125 x"-y"<.125 y"<.125 ) * * * ( R G B p0” ) rot + swap ( R G+p0” B ) ; : 黃塊 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - .125 < -rot ( R G B 洞 x"-y"<.125 x" y" ) over >r + .125 < r> ( R G B 洞 x"-y"<.125 x"+y"<.125 x" ) -.125 > ( R G B 洞 x"-y"<.125 x"+y"<.125 x">-.125 ) * * * ( R G B p1” ) >r rot r@ + rot r> + rot ( R+p1” G+p1” B ) ; : 藍塊 ( R G B X Y A -- R G B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -.0625 > -rot ( R G B 洞 x"-y">-.0625 x" y" ) over >r + -.0625 > r> ( R G B 洞 x"-y">-.0625 y"<.0625 x" ) .0625 < ( R G B 洞 x"-y">-.0625 y"<.0625 x">-.0625 ) * * * ( R G B p2” ) + ( R G B+p2” ) ; : 紅塊 ( R G B X Y A -- R' G B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -rot + ( R G B 洞 x"-y" x"+y" ) dup -.125 > swap ( R G B 洞 x"-y" x"+y">-.125 x"+y" ) .125 < rot ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y" ) dup .125 < swap ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y"<.125 x"-y" ) -.125 > ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y"<.125 x"-y">-.125 ) * * * * ( R G B p3” ) >r rot r> + -rot ( R+p3” G B ) ; : 青塊 ( R G B X Y A -- R G' B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup + .0625 < -rot ( R G B 洞 x"+y"<.0625 x" y" ) dup >r - -.0625 > ( R G B 洞 x"+y">-.0625 x"-y">-.0625 ) r> -.0625 > ( R G B 洞 x"+y"<-.0625 x"-y"<-.0625 y">-.0625 ) * * * ( R G B p4” ) >r swap r@ + swap r> + ( R G+p4” B+p4” ) ; : 紫塊 ( R G B X Y A -- R' G B' ) 座標轉換 ( R G B 洞 x" y" ) swap over - ( R G B 洞 y" x"-y" ) dup -.125 > swap ( R G B 洞 y” x"-y">-.125 x"-y" ) .125 < rot ( R G B 洞 x"-y">-.125 x"-y"<.125 y" ) dup .0625 < swap ( R G B 洞 x"-y">-.125 x"-y"<.125 y"<.0625 y" ) -.0625 > ( R G B 洞 x"-y">-.125 x"-y"<.125 y"<.0625 y">-.0625 ) * * * * ( R G B p5” ) >r rot r@ + -rot r> + ( R+p5” G B+p5” ) ; : 橘塊 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - 0 > rot ( R G B 洞 x"-y">0 x" y" ) .125 < rot ( R G B 洞 x"-y">0 y"<.125 x" ) -.125 > ( R G B 洞 x"-y">0 y"<.125 x">-.125 ) * * * ( R G B p6” ) >r rot r@ + rot r> 2 / + rot ( R+p6” G+p6” B ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七巧板基塊組圖範例 : 例1 \ 基塊拼成 方形 0 0 0 \ 開始要先 全黑 .500 .625 .000 綠塊 .375 .500 .000 黃塊 .687 .625 .000 藍塊 .625 .500 .000 紅塊 .500 .437 .000 青塊 .437 .312 .000 紫塊 .625 .375 .000 橘塊 網格 ; : 例2 \ 基塊散開 各自每 10 秒轉 1 圈 0 0 0 \ 開始要先 全黑 .375 .750 0 1 中間值 綠塊 .250 .500 0 1 中間值 黃塊 .812 .750 0 1 中間值 藍塊 .656 .593 0 1 中間值 紅塊 .500 .485 0 1 中間值 青塊 .437 .184 0 1 中間值 紫塊 .750 .375 0 1 中間值 橘塊 網格 ; : 例3 \ 基塊拼成 貓形 0 0 0 \ 開始要先 全黑 .561 .145 .125 綠塊 \ 腿 .521 .400 .000 黃塊 \ 身 .400 .456 .625 橘塊 \ 胸 .290 .640 .000 紅塊 \ 頭 .355 .765 .000 藍塊 \ 右耳 .230 .765 .750 青塊 \ 左耳 .822 .118 .000 紫塊 \ 尾 網格 ; : 例4 \ 基塊 隨時間週期 翻轉移動 拼成 方形 與 貓型 0 0 0 \ 開始要先 全黑 \ 前 3 值 基塊 起始 位置方向 後 3 值 終止 位置方向 .500 .437 .000 .230 .765 .750 中間位置方向值 青塊 \ 左耳 .687 .625 .000 .355 .765 .000 中間位置方向值 藍塊 \ 右耳 .625 .500 .000 .290 .640 .000 中間位置方向值 紅塊 \ 頭 .625 .375 .000 .400 .456 .625 中間位置方向值 橘塊 \ 胸 .375 .500 .000 .521 .400 .000 中間位置方向值 黃塊 \ 身 .500 .625 .000 .561 .145 .125 中間位置方向值 綠塊 \ 腿 .437 .312 .000 .822 .118 .000 中間位置方向值 紫塊 \ 尾 網格 ; : 例5 \ 基塊拼成 鵝形 0 0 0 \ 開始要先 全黑 .511 .185 .875 綠塊 \ 翅 .660 .330 .750 黃塊 \ 尾 .423 .275 .625 橘塊 \ 身 .371 .520 .000 紅塊 \ 脖 .324 .755 .375 藍塊 \ 嘴 .310 .399 .750 青塊 \ 胸 .432 .706 .250 紫塊 \ 頭 網格 ; : 例6 \ 基塊 隨時間週期 翻轉移動 拼成 貓型 與 鵝形 0 0 0 \ 開始要先 全黑 \ 前 3 值 基塊 起始 位置方向 後 3 值 終止 位置方向 .230 .765 .750 .310 .399 .750 中間位置方向值 青塊 \ 胸 .355 .765 .000 .324 .755 .375 中間位置方向值 藍塊 \ 嘴 .290 .640 .000 .371 .520 .000 中間位置方向值 紅塊 \ 脖 .400 .456 .625 .423 .275 .625 中間位置方向值 橘塊 \ 身 .521 .400 .000 .660 .330 .750 中間位置方向值 黃塊 \ 尾 .561 .145 .125 .511 .185 .875 中間位置方向值 綠塊 \ 翅 .822 .118 .000 .432 .706 .250 中間位置方向值 紫塊 \ 頭 網格 ; : 例7 \ 基塊拼成 船形 0 0 0 \ 開始要先 全黑 .426 .621 .000 黃塊 \ 上帆 .550 .500 .500 綠塊 \ 下帆 .801 .373 .875 橘塊 \ 船頭 .535 .288 .125 紅塊 \ 中艙 .668 .250 .125 藍塊 \ 前艙 .404 .329 .875 青塊 \ 後艙 .266 .289 .375 紫塊 \ 船尾 網格 ; : 例8 \ 基塊 隨時間週期 翻轉移動 拼成 鵝型 與 船形 0 0 0 \ 開始要先 全黑 \ 前 3 值 基塊 起始 位置方向 後 3 值 終止 位置方向 .310 .399 .750 .404 .329 .875 中間位置方向值 青塊 \ 胸 .324 .755 .375 .668 .250 .125 中間位置方向值 藍塊 \ 嘴 .371 .520 .000 .535 .288 .125 中間位置方向值 紅塊 \ 脖 .423 .275 .625 .801 .373 .875 中間位置方向值 橘塊 \ 身 .660 .330 .750 .426 .621 .000 中間位置方向值 黃塊 \ 尾 .511 .185 .875 .550 .500 .500 中間位置方向值 綠塊 \ 翅 .432 .706 .250 .266 .289 .375 中間位置方向值 紫塊 \ 頭 網格 ; : 例9 \ 船行反覆前進後退 0 0 0 \ 開始要先 全黑 .426 .5 - .426 .5 + 中間值 .621 .000 黃塊 \ 上帆 .550 .5 - .550 .5 + 中間值 .500 .500 綠塊 \ 下帆 .801 .5 - .801 .5 + 中間值 .373 .875 橘塊 \ 船頭 .535 .5 - .535 .5 + 中間值 .288 .125 紅塊 \ 中艙 .668 .5 - .668 .5 + 中間值 .250 .125 藍塊 \ 前艙 .404 .5 - .404 .5 + 中間值 .329 .875 青塊 \ 後艙 .266 .5 - .266 .5 + 中間值 .289 .375 紫塊 \ 船尾 網格 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 例1 基塊拼成 方形 \ 例2 基塊散開 各自轉動 \ 例3 基塊拼成 貓形 \ 例4 基塊翻轉 拼成 方形 與 貓型 \ 例5 基塊拼成 鵝形 \ 例6 基塊翻轉 拼成 貓型 與 鵝形 \ 例7 基塊拼成 船形 \ 例8 基塊翻轉 拼成 鵝形 與 船型 \ 例9 船行反覆前進後退 \ 改下列 可選擇執行 例1 例2 例3 例4 例5 例6 例7 例8 或 例9 例8
七巧板 Redux23
陳爽
'24 Dec 22
\ tangram_20 七巧板 20220612 陳爽 \ 改最後一列 可執行 例1 例2 例3 例4 例5 例6 例7 例8 或 例9 \ 例1 基塊拼成 方形 \ 例2 基塊散開 各自轉動 \ 例3 基塊拼成 貓形 \ 例4 基塊翻轉 拼成 方形 與 貓型 \ 例5 基塊拼成 鵝形 \ 例6 基塊翻轉 拼成 貓型 與 鵝形 \ 例7 基塊拼成 船形 \ 例8 基塊翻轉 拼成 鵝形 與 船型 \ 例9 船行反覆前進後退 \ 定義 r, 為 從指定點 X,Y 至任意點 x,y 之距離。 : r ( X Y -- r ) y swap ( X y Y ) - 2 ** ( X [y-Y]**2 ) x rot ( [y-Y]**2 x X ) - 2 ** ( [y-Y]**2 [x-X]**2 ) + ( [y-Y]**2+[x-X]**2 ) .5 ** ( [[y-Y]**2+[x-X]**2]**.5 ) ; \ 定義 2pi, 為 兩倍的圓周率。 : 2pi pi pi + ; \ 定義 座標轉換, 為 以 X,Y 為原點,座標軸轉向 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) \ 然後產生任意點 p" 的位置 x",y"。 : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .01 > -rot ( 洞 X Y ) x rot - y rot - ( 洞 x' y' ) over 2 ** over 2 ** + .5 ** ( 洞 x' y' r' ) 1.04 * -rot ( 洞 r" x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r" a ) 2pi * 2dup cos * -rot ( 洞 x" r" a' ) sin * ( 洞 x" y" ) ; \ 定義 中間值, 為從某值 z0 到另一個值 z1 隨時間 t 的 sin 週期所取得的 對應之中間值 z。 : 中間值 ( z0 z1 -- z ) over - t sin 2 / .5 + * + ; \ 定義 中間位置方向值, 為從某位置方向值 X0,Y0,A0 到另一個位置方向值 X1,Y1,A1 \ 隨時間 t 的 sin 週期所取得對應的 中間位置方向值 X,Y,A。 : 中間位置方向值 ( X0 Y0 A0 X1 Y1 A1 -- X Y A ) >r rot r> ( X0 Y0 X1 Y1 A0 A1 ) 中間值 >r ( X0 Y0 X1 Y1 ) >r swap r> ( X0 X1 Y0 Y1 ) 中間值 >r ( X0 X1 ) 中間值 r> r> ( X Y A ) ; \ 定義 網格, 將正方形視窗分割成 10*10 的小正方形視窗 : 網格 x .1 mod .005 > y .1 mod .005 > * ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 綠塊 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.125 > -rot ( R G B 洞 x"+y">-.125 x" y" ) dup >r - .125 < ( R G B 洞 x"+y">-.125 x"-y"<.125 ) r> .125 < ( R G B 洞 x"+y"<-.125 x"-y"<.125 y"<.125 ) * * * rot + swap ( R G' B ) ; : 黃塊 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - .125 < -rot ( R G B 洞 x"-y"<.125 x" y" ) over >r + .125 < r> ( R G B 洞 x"-y"<.125 x"+y"<.125 x" ) -.125 > ( R G B 洞 x"-y"<.125 x"+y"<.125 x">-.125 ) * * * >r rot r@ + rot r> + rot ( R' G' B ) ; : 藍塊 ( R G B X Y A -- R G B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -.0625 > -rot ( R G B 洞 x"-y">-.0625 x" y" ) over >r + -.0625 > r> ( R G B 洞 x"-y">0 y"<.0625 x" ) .0625 < ( R G B 洞 x"-y">0 y"<.0625 x">-.0625 ) * * * + ( R G B' ) ; : 紅塊 ( R G B X Y A -- R' G B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -rot + ( R G B 洞 x"-y" x"+y" ) dup -.125 > swap ( R G B 洞 x"-y" x"+y">-.125 x"+y" ) .125 < rot ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y" ) dup .125 < swap ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y"<.125 x"-y" ) -.125 > ( R G B 洞 x"+y">-.125 x"+y"<.125 x"-y"<.125 x"-y">-.125 ) * * * * >r rot r> + -rot ( R' G B ) ; : 青塊 ( R G B X Y A -- R G' B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup + .0625 < -rot ( R G B 洞 x"+y"<.0625 x" y" ) dup >r - -.0625 > ( R G B 洞 x"+y">-.0625 x"-y">-.0625 ) r> -.0625 > ( R G B 洞 x"+y"<-.0625 x"-y"<-.0625 y">-.0625 ) * * * >r swap r@ + swap r> + ( R G' B' ) ; : 紫塊 ( R G B X Y A -- R' G B' ) 座標轉換 ( R G B 洞 x" y" ) swap over - ( R G B 洞 y" x"-y" ) dup -.125 > swap ( R G B 洞 x"-y">-.125 x"-y" ) .125 < rot ( R G B 洞 x"-y">-.125 x"-y"<.125 y" ) dup .0625 < swap ( R G B 洞 x"-y">-.125 x"-y"<.125 y" y"<.0625 y" ) -.0625 > ( R G B 洞 x"-y">-.125 x"-y"<.125 y" y"<.0625 y">-.0625 ) * * * * >r rot r@ + -rot r> + ( R' G B' ) ; : 橘塊 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - 0 > rot ( R G B 洞 x"-y">0 x" y" ) .125 < rot ( R G B 洞 x"-y">0 y"<.125 x" ) -.125 > ( R G B 洞 x"-y">0 y"<.125 x">-.125 ) * * * >r rot r@ + rot r> 2 / + rot ( R' G' B ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七巧板基塊組圖範例 : 例1 \ 基塊拼成 方形 0 0 0 \ 開始要先 全黑 .500 .625 .000 綠塊 .375 .500 .000 黃塊 .687 .625 .000 藍塊 .625 .500 .000 紅塊 .500 .437 .000 青塊 .437 .312 .000 紫塊 .625 .375 .000 橘塊 網格 ; : 例2 \ 基塊散開 各自每 10 秒轉 1 圈 0 0 0 \ 開始要先 全黑 .375 .750 0 1 中間值 綠塊 .250 .500 0 1 中間值 黃塊 .812 .750 0 1 中間值 藍塊 .656 .593 0 1 中間值 紅塊 .500 .485 0 1 中間值 青塊 .437 .184 0 1 中間值 紫塊 .750 .375 0 1 中間值 橘塊 網格 ; : 例3 \ 基塊拼成 貓形 0 0 0 \ 開始要先 全黑 .561 .145 .125 綠塊 \ 腿 .521 .400 .000 黃塊 \ 身 .400 .456 .625 橘塊 \ 胸 .290 .640 .000 紅塊 \ 頭 .355 .765 .000 藍塊 \ 右耳 .230 .765 .750 青塊 \ 左耳 .822 .118 .000 紫塊 \ 尾 網格 ; : 例4 \ 基塊 隨時間週期 翻轉移動 拼成 方形 與 貓型 0 0 0 \ 開始要先 全黑 \ 前 3 值 基塊 起始 位置方向 後 3 值 終止 位置方向 .500 .437 .000 .230 .765 .750 中間位置方向值 青塊 \ 左耳 .687 .625 .000 .355 .765 .000 中間位置方向值 藍塊 \ 右耳 .625 .500 .000 .290 .640 .000 中間位置方向值 紅塊 \ 頭 .625 .375 .000 .400 .456 .625 中間位置方向值 橘塊 \ 胸 .375 .500 .000 .521 .400 .000 中間位置方向值 黃塊 \ 身 .500 .625 .000 .561 .145 .125 中間位置方向值 綠塊 \ 腿 .437 .312 .000 .822 .118 .000 中間位置方向值 紫塊 \ 尾 網格 ; : 例5 \ 基塊拼成 鵝形 0 0 0 \ 開始要先 全黑 .511 .185 .875 綠塊 \ 翅 .660 .330 .750 黃塊 \ 尾 .423 .275 .625 橘塊 \ 身 .371 .520 .000 紅塊 \ 脖 .324 .755 .375 藍塊 \ 嘴 .310 .399 .750 青塊 \ 胸 .432 .706 .250 紫塊 \ 頭 網格 ; : 例6 \ 基塊 隨時間週期 翻轉移動 拼成 貓型 與 鵝形 0 0 0 \ 開始要先 全黑 \ 前 3 值 基塊 起始 位置方向 後 3 值 終止 位置方向 .230 .765 .750 .310 .399 .750 中間位置方向值 青塊 \ 胸 .355 .765 .000 .324 .755 .375 中間位置方向值 藍塊 \ 嘴 .290 .640 .000 .371 .520 .000 中間位置方向值 紅塊 \ 脖 .400 .456 .625 .423 .275 .625 中間位置方向值 橘塊 \ 身 .521 .400 .000 .660 .330 .750 中間位置方向值 黃塊 \ 尾 .561 .145 .125 .511 .185 .875 中間位置方向值 綠塊 \ 翅 .822 .118 .000 .432 .706 .250 中間位置方向值 紫塊 \ 頭 網格 ; : 例7 \ 基塊拼成 船形 0 0 0 \ 開始要先 全黑 .426 .621 .000 黃塊 \ 上帆 .550 .500 .500 綠塊 \ 下帆 .801 .373 .875 橘塊 \ 船頭 .535 .288 .125 紅塊 \ 中艙 .668 .250 .125 藍塊 \ 前艙 .404 .329 .875 青塊 \ 後艙 .266 .289 .375 紫塊 \ 船尾 網格 ; : 例8 \ 基塊 隨時間週期 翻轉移動 拼成 鵝型 與 船形 0 0 0 \ 開始要先 全黑 \ 前 3 值 基塊 起始 位置方向 後 3 值 終止 位置方向 .310 .399 .750 .404 .329 .875 中間位置方向值 青塊 \ 胸 .324 .755 .375 .668 .250 .125 中間位置方向值 藍塊 \ 嘴 .371 .520 .000 .535 .288 .125 中間位置方向值 紅塊 \ 脖 .423 .275 .625 .801 .373 .875 中間位置方向值 橘塊 \ 身 .660 .330 .750 .426 .621 .000 中間位置方向值 黃塊 \ 尾 .511 .185 .875 .550 .500 .500 中間位置方向值 綠塊 \ 翅 .432 .706 .250 .266 .289 .375 中間位置方向值 紫塊 \ 頭 網格 ; : 例9 \ 船行反覆前進後退 0 0 0 \ 開始要先 全黑 .426 .5 - .426 .5 + 中間值 .621 .000 黃塊 \ 上帆 .550 .5 - .550 .5 + 中間值 .500 .500 綠塊 \ 下帆 .801 .5 - .801 .5 + 中間值 .373 .875 橘塊 \ 船頭 .535 .5 - .535 .5 + 中間值 .288 .125 紅塊 \ 中艙 .668 .5 - .668 .5 + 中間值 .250 .125 藍塊 \ 前艙 .404 .5 - .404 .5 + 中間值 .329 .875 青塊 \ 後艙 .266 .5 - .266 .5 + 中間值 .289 .375 紫塊 \ 船尾 網格 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 例1 基塊拼成 方形 \ 例2 基塊散開 各自轉動 \ 例3 基塊拼成 貓形 \ 例4 基塊翻轉 拼成 方形 與 貓型 \ 例5 基塊拼成 鵝形 \ 例6 基塊翻轉 拼成 貓型 與 鵝形 \ 例7 基塊拼成 船形 \ 例8 基塊翻轉 拼成 鵝形 與 船型 \ 例9 船行反覆前進後退 \ 改下列 可選擇執行 例1 例2 例3 例4 例5 例6 例7 例8 或 例9 例8
七巧板 Redux22
陳爽
'24 Dec 22
\ : x x 2 * ; \ : x x .5 - ; \ tangram_20 七巧板 20220612 陳爽 \ 改最後一列 可執行 例1 例2 例3 例4 例5 例6 例7 例8 或 例9 \ 例1 彩板拼成 方形 \ 例2 彩板散開 各自轉動 \ 例3 彩板拼成 貓形 \ 例4 彩板翻轉 拼成 方形 與 貓型 \ 例5 彩板拼成 鵝形 \ 例6 彩板翻轉 拼成 貓型 與 鵝形 \ 例7 彩板拼成 船形 \ 例8 彩板翻轉 拼成 鵝形 與 船型 \ 例9 船行反覆前進後退 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y swap - 2 ** x rot - 2 ** + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 以 X,Y 為原點,座標轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) 然後產生任意點 p" 的位置 x",y" : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .01 > -rot ( 洞 X Y ) x rot - y rot - ( 洞 x' y' ) over 2 ** over 2 ** + sqrt ( 洞 x' y' r ) 1.04 * -rot ( 洞 r' x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r' a ) 2pi * 2dup cos * -rot ( 洞 x" r' a' ) sin * ( 洞 x" y" ) ; \ 從某值到另值隨時間週期取對應中間值 : 中間值 ( x0 x1 -- x ) over - t 3 / sin 2 / .5 + * + ; \ 從某位置方向到另位置方向隨時間週期取對應中間位置方向 : 中間位置方向 ( X0 Y0 A0 X1 Y1 A1 -- X Y A ) >r rot r> ( X0 Y0 X1 Y1 A0 A1 ) 中間值 >r ( X0 Y0 X1 Y1 ) >r swap r> ( X0 X1 Y0 Y1 ) 中間值 >r ( X0 X1 ) 中間值 r> r> ( X Y A ) ; : 網格 x .1 mod .005 > y .1 mod .005 > * ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 綠 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.125 > -rot ( R G B 洞 x"+y">-.25 x" y" ) dup >r - .125 < ( R G B 洞 x"+y">-.25 x"-y"<.25 ) r> .125 < ( R G B 洞 x"+y"<-.25 x"-y"<.25 y"<.25 ) * * * rot + swap ( R G' B ) ; : 黃 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - .125 < -rot ( R G B 洞 x"-y"<.25 x" y" ) over >r + .125 < r> ( R G B 洞 x"-y"<.25 x"+y"<.25 x" ) -.125 > ( R G B 洞 x"-y"<.25 x"+y"<.25 x">-.25 ) * * * >r rot r@ + rot r> + rot ( R' G' B ) ; : 藍 ( R G B X Y A -- R G B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -.062 > -rot ( R G B 洞 x"-y">-.125 x" y" ) over >r + -.062 > r> ( R G B 洞 x"-y">0 y"<.25 x" ) .062 < ( R G B 洞 x"-y">0 y"<.25 x">-.25 ) * * * + ( R G B' ) ; : 紅 ( R G B X Y A -- R' G B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -rot + ( R G B 洞 x"-y" x"+y" ) dup -.125 > swap ( R G B 洞 x"-y" x"+y">-.25 x"+y" ) .125 < rot ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y" ) dup .125 < swap ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y"<.25 x"-y" ) -.125 > ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y"<.25 x"-y">-.25 ) * * * * >r rot r> + -rot ( R' G B ) ; : 青 ( R G B X Y A -- R G' B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup + .0625 < -rot ( R G B 洞 x"+y"<.125 x" y" ) dup >r - -.0625 > ( R G B 洞 x"+y">-.25 x"-y">-.125 ) r> -.0625 > ( R G B 洞 x"+y"<-.25 x"-y"<-.125 y">-.125 ) * * * >r swap r@ + swap r> + ( R G' B' ) ; : 紫 ( R G B X Y A -- R' G B' ) 座標轉換 ( R G B 洞 x" y" ) swap over - ( R G B 洞 y" x"-y" ) dup -.125 > swap ( R G B 洞 x"-y">-.25 x"-y" ) .125 < rot ( R G B 洞 x"-y">-.25 x"-y"<.25 y" ) dup .0625 < swap ( R G B 洞 x"-y">-.25 x"-y"<.25 y" y"<.125 y" ) -.0625 > ( R G B 洞 x"-y">-.25 x"-y"<.25 y" y"<.125 y">-.125 ) * * * * >r rot r@ + -rot r> + ( R' G B' ) ; : 桔 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - 0 > rot ( R G B 洞 x"-y">0 x" y" ) .125 < rot ( R G B 洞 x"-y">0 y"<.25 x" ) -.125 > ( R G B 洞 x"-y">0 y"<.25 x">-.25 ) * * * >r rot r@ + rot r> 2 / + rot ( R' G' B ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七彩板組圖範例 : 例1 \ 彩板拼成 方形 0 0 0 \ 開始要先 全黑 .500 .625 .000 綠 .375 .500 .000 黃 .687 .625 .000 藍 .625 .500 .000 紅 .500 .437 .000 青 .437 .312 .000 紫 .625 .375 .000 桔 網格 ; : 例2 \ 彩板散開 各自每 10 秒轉 1 圈 0 0 0 \ 開始要先 全黑 .375 .750 0 1 中間值 綠 .250 .500 0 1 中間值 黃 .812 .750 0 1 中間值 藍 .656 .593 0 1 中間值 紅 .500 .485 0 1 中間值 青 .437 .184 0 1 中間值 紫 .750 .375 0 1 中間值 桔 網格 ; : 例3 \ 彩板拼成 貓形 0 0 0 \ 開始要先 全黑 .561 .145 .125 綠 \ 腿 .521 .400 .000 黃 \ 身 .400 .456 .625 桔 \ 胸 .290 .640 .000 紅 \ 頭 .355 .765 .000 藍 \ 右耳 .230 .765 .750 青 \ 左耳 .822 .118 .000 紫 \ 尾 網格 ; : 例4 \ 彩板 隨時間週期 翻轉移動 拼成 方形 與 貓型 0 0 0 \ 開始要先 全黑 \ 前 3 值 彩板 起始 位置方向 後 3 值 終止 位置方向 .500 .437 .000 .230 .765 .750 中間位置方向 青 \ 左耳 .687 .625 .000 .355 .765 .000 中間位置方向 藍 \ 右耳 .625 .500 .000 .290 .640 .000 中間位置方向 紅 \ 頭 .625 .375 .000 .400 .456 .625 中間位置方向 桔 \ 胸 .375 .500 .000 .521 .400 .000 中間位置方向 黃 \ 身 .500 .625 .000 .561 .145 .125 中間位置方向 綠 \ 腿 .437 .312 .000 .822 .118 .000 中間位置方向 紫 \ 尾 網格 ; : 例5 \ 彩板拼成 鵝形 0 0 0 \ 開始要先 全黑 .511 .185 .875 綠 \ 翅 .660 .330 .750 黃 \ 尾 .423 .275 .625 桔 \ 身 .371 .520 .000 紅 \ 脖 .324 .755 .375 藍 \ 嘴 .310 .399 .750 青 \ 胸 .432 .706 .250 紫 \ 頭 網格 ; : 例6 \ 彩板 隨時間週期 翻轉移動 拼成 貓型 與 鵝形 0 0 0 \ 開始要先 全黑 \ 前 3 值 彩板 起始 位置方向 後 3 值 終止 位置方向 .230 .765 .750 .310 .399 .750 中間位置方向 青 \ 胸 .355 .765 .000 .324 .755 .375 中間位置方向 藍 \ 嘴 .290 .640 .000 .371 .520 .000 中間位置方向 紅 \ 脖 .400 .456 .625 .423 .275 .625 中間位置方向 桔 \ 身 .521 .400 .000 .660 .330 .750 中間位置方向 黃 \ 尾 .561 .145 .125 .511 .185 .875 中間位置方向 綠 \ 翅 .822 .118 .000 .432 .706 .250 中間位置方向 紫 \ 頭 網格 ; : 例7 \ 彩板拼成 船形 0 0 0 \ 開始要先 全黑 .426 .621 .000 黃 \ 上帆 .550 .500 .500 綠 \ 下帆 .801 .373 .875 桔 \ 船頭 .535 .288 .125 紅 \ 中艙 .668 .250 .125 藍 \ 前艙 .404 .329 .875 青 \ 後艙 .266 .289 .375 紫 \ 船尾 網格 ; : 例8 \ 彩板 隨時間週期 翻轉移動 拼成 鵝型 與 船形 0 0 0 \ 開始要先 全黑 \ 前 3 值 彩板 起始 位置方向 後 3 值 終止 位置方向 .310 .399 .750 .404 .329 .875 中間位置方向 青 \ 胸 .324 .755 .375 .668 .250 .125 中間位置方向 藍 \ 嘴 .371 .520 .000 .535 .288 .125 中間位置方向 紅 \ 脖 .423 .275 .625 .801 .373 .875 中間位置方向 桔 \ 身 .660 .330 .750 .426 .621 .000 中間位置方向 黃 \ 尾 .511 .185 .875 .550 .500 .500 中間位置方向 綠 \ 翅 .432 .706 .250 .266 .289 .375 中間位置方向 紫 \ 頭 網格 ; : 例9 \ 船行反覆前進後退 0 0 0 \ 開始要先 全黑 .426 .5 - .426 .5 + 中間值 .621 .000 黃 \ 上帆 .550 .5 - .550 .5 + 中間值 .500 .500 綠 \ 下帆 .801 .5 - .801 .5 + 中間值 .373 .875 桔 \ 船頭 .535 .5 - .535 .5 + 中間值 .288 .125 紅 \ 中艙 .668 .5 - .668 .5 + 中間值 .250 .125 藍 \ 前艙 .404 .5 - .404 .5 + 中間值 .329 .875 青 \ 後艙 .266 .5 - .266 .5 + 中間值 .289 .375 紫 \ 船尾 網格 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 例1 彩板拼成 方形 \ 例2 彩板散開 各自轉動 \ 例3 彩板拼成 貓形 \ 例4 彩板翻轉 拼成 方形 與 貓型 \ 例5 彩板拼成 鵝形 \ 例6 彩板翻轉 拼成 貓型 與 鵝形 \ 例7 彩板拼成 船形 \ 例8 彩板翻轉 拼成 鵝形 與 船型 \ 例9 船行反覆前進後退 \ 改下列 可選擇執行 例1 例2 例3 例4 例5 例6 例7 例8 或 例9 例8
七巧板 Redux21
陳爽
'24 Dec 22
: p0 x y + 1 > x y < * ; : p1 x y + 1 < x y < * ; : p2 x y > x y + 1.5 > * ; : p3 x y > x y + 1.5 < x y + 1 > x y - .5 < * * * ; : p4 y .25 > x y > x y + 1 < * * ; : p5 y .25 < x y > x y - .5 < * * ; : p6 x y - .5 > ; : 七巧板 p1 p3 p5 p6 + + + p0 p1 p4 p6 2 / + + + p2 p4 p5 + + ; 七巧板
七巧板 Redux2
陳爽
'24 Dec 22
: show t 9 mod floor < * ; : p1 x y + 1 > x y - 0 < * 0 show ; \ p1 \ 未塗綠 : p2 x y + 1 < x y - 0 < * 1 show ; \ p2 \ 未塗黃 : p3 x y - 0 > x y + 1.5 > * 2 show ; \ p3 \ 未塗藍 : p4 x y - 0 > x y + 1.5 < x y - .5 < x y + 1 > * * * 3 show ; \ p4 \ 未塗紅 : p5 y .25 > x y - 0 > x y + 1 < * * 4 show ; \ p5 \ 未塗青 : p6 y .25 < x y - 0 > x y - .5 < * * 5 show ; \ p6 \ 未塗紫 : p7 x y - .5 > 6 show ; \ p7 \ 未塗橘 \ R G B \ 0 p1 0 \ p1 塗綠 \ p2 p2 0 \ p2 塗黃 \ 0 0 p3 \ p3 塗藍 \ p4 0 0 \ p4 塗紅 \ 0 p5 p5 \ p5 塗青 \ p6 0 p6 \ p6 塗紫 \ p7 p7 2 / 0 \ p7 塗橘 : 七巧板 \ 綠 黃 藍 紅 青 紫 橘 p2 p4 p6 p7 + + + \ R p1 p2 p5 p7 2 / + + + \ G p3 p5 p6 + + \ B ; 七巧板
七巧板 Redux
陳爽
'24 Dec 22
: x x 2 * ; : x x .5 - ; \ tangram_20 七巧板 20220612 陳爽 \ 改最後一列 可執行 例1 例2 例3 例4 例5 例6 例7 例8 或 例9 \ 例1 彩板拼成 方形 \ 例2 彩板散開 各自轉動 \ 例3 彩板拼成 貓形 \ 例4 彩板翻轉 拼成 方形 與 貓型 \ 例5 彩板拼成 鵝形 \ 例6 彩板翻轉 拼成 貓型 與 鵝形 \ 例7 彩板拼成 船形 \ 例8 彩板翻轉 拼成 鵝形 與 船型 \ 例9 船行反覆前進後退 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y swap - 2 ** x rot - 2 ** + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 以 X,Y 為原點,座標轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) 然後產生任意點 p" 的位置 x",y" : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .01 > -rot ( 洞 X Y ) x rot - y rot - ( 洞 x' y' ) over 2 ** over 2 ** + sqrt ( 洞 x' y' r ) 1.04 * -rot ( 洞 r' x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r' a ) 2pi * 2dup cos * -rot ( 洞 x" r' a' ) sin * ( 洞 x" y" ) ; \ 從某值到另值隨時間週期取對應中間值 : 中間值 ( x0 x1 -- x ) over - t 3 / sin 2 / .5 + * + ; \ 從某位置方向到另位置方向隨時間週期取對應中間位置方向 : 中間位置方向 ( X0 Y0 A0 X1 Y1 A1 -- X Y A ) >r rot r> ( X0 Y0 X1 Y1 A0 A1 ) 中間值 >r ( X0 Y0 X1 Y1 ) >r swap r> ( X0 X1 Y0 Y1 ) 中間值 >r ( X0 X1 ) 中間值 r> r> ( X Y A ) ; : 網格 x .1 mod .005 > y .1 mod .005 > * ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 綠 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.125 > -rot ( R G B 洞 x"+y">-.25 x" y" ) dup >r - .125 < ( R G B 洞 x"+y">-.25 x"-y"<.25 ) r> .125 < ( R G B 洞 x"+y"<-.25 x"-y"<.25 y"<.25 ) * * * rot + swap ( R G' B ) ; : 黃 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - .125 < -rot ( R G B 洞 x"-y"<.25 x" y" ) over >r + .125 < r> ( R G B 洞 x"-y"<.25 x"+y"<.25 x" ) -.125 > ( R G B 洞 x"-y"<.25 x"+y"<.25 x">-.25 ) * * * >r rot r@ + rot r> + rot ( R' G' B ) ; : 藍 ( R G B X Y A -- R G B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -.062 > -rot ( R G B 洞 x"-y">-.125 x" y" ) over >r + -.062 > r> ( R G B 洞 x"-y">0 y"<.25 x" ) .062 < ( R G B 洞 x"-y">0 y"<.25 x">-.25 ) * * * + ( R G B' ) ; : 紅 ( R G B X Y A -- R' G B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - -rot + ( R G B 洞 x"-y" x"+y" ) dup -.125 > swap ( R G B 洞 x"-y" x"+y">-.25 x"+y" ) .125 < rot ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y" ) dup .125 < swap ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y"<.25 x"-y" ) -.125 > ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y"<.25 x"-y">-.25 ) * * * * >r rot r> + -rot ( R' G B ) ; : 青 ( R G B X Y A -- R G' B' ) 座標轉換 ( R G B 洞 x" y" ) 2dup + .0625 < -rot ( R G B 洞 x"+y"<.125 x" y" ) dup >r - -.0625 > ( R G B 洞 x"+y">-.25 x"-y">-.125 ) r> -.0625 > ( R G B 洞 x"+y"<-.25 x"-y"<-.125 y">-.125 ) * * * >r swap r@ + swap r> + ( R G' B' ) ; : 紫 ( R G B X Y A -- R' G B' ) 座標轉換 ( R G B 洞 x" y" ) swap over - ( R G B 洞 y" x"-y" ) dup -.125 > swap ( R G B 洞 x"-y">-.25 x"-y" ) .125 < rot ( R G B 洞 x"-y">-.25 x"-y"<.25 y" ) dup .0625 < swap ( R G B 洞 x"-y">-.25 x"-y"<.25 y" y"<.125 y" ) -.0625 > ( R G B 洞 x"-y">-.25 x"-y"<.25 y" y"<.125 y">-.125 ) * * * * >r rot r@ + -rot r> + ( R' G B' ) ; : 桔 ( R G B X Y A -- R' G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup - 0 > rot ( R G B 洞 x"-y">0 x" y" ) .125 < rot ( R G B 洞 x"-y">0 y"<.25 x" ) -.125 > ( R G B 洞 x"-y">0 y"<.25 x">-.25 ) * * * >r rot r@ + rot r> 2 / + rot ( R' G' B ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七彩板組圖範例 : 例1 \ 彩板拼成 方形 0 0 0 \ 開始要先 全黑 .500 .625 .000 綠 .375 .500 .000 黃 .687 .625 .000 藍 .625 .500 .000 紅 .500 .437 .000 青 .437 .312 .000 紫 .625 .375 .000 桔 網格 ; : 例2 \ 彩板散開 各自每 10 秒轉 1 圈 0 0 0 \ 開始要先 全黑 .375 .750 0 1 中間值 綠 .250 .500 0 1 中間值 黃 .812 .750 0 1 中間值 藍 .656 .593 0 1 中間值 紅 .500 .485 0 1 中間值 青 .437 .184 0 1 中間值 紫 .750 .375 0 1 中間值 桔 網格 ; : 例3 \ 彩板拼成 貓形 0 0 0 \ 開始要先 全黑 .561 .145 .125 綠 \ 腿 .521 .400 .000 黃 \ 身 .400 .456 .625 桔 \ 胸 .290 .640 .000 紅 \ 頭 .355 .765 .000 藍 \ 右耳 .230 .765 .750 青 \ 左耳 .822 .118 .000 紫 \ 尾 網格 ; : 例4 \ 彩板 隨時間週期 翻轉移動 拼成 方形 與 貓型 0 0 0 \ 開始要先 全黑 \ 前 3 值 彩板 起始 位置方向 後 3 值 終止 位置方向 .500 .437 .000 .230 .765 .750 中間位置方向 青 \ 左耳 .687 .625 .000 .355 .765 .000 中間位置方向 藍 \ 右耳 .625 .500 .000 .290 .640 .000 中間位置方向 紅 \ 頭 .625 .375 .000 .400 .456 .625 中間位置方向 桔 \ 胸 .375 .500 .000 .521 .400 .000 中間位置方向 黃 \ 身 .500 .625 .000 .561 .145 .125 中間位置方向 綠 \ 腿 .437 .312 .000 .822 .118 .000 中間位置方向 紫 \ 尾 網格 ; : 例5 \ 彩板拼成 鵝形 0 0 0 \ 開始要先 全黑 .511 .185 .875 綠 \ 翅 .660 .330 .750 黃 \ 尾 .423 .275 .625 桔 \ 身 .371 .520 .000 紅 \ 脖 .324 .755 .375 藍 \ 嘴 .310 .399 .750 青 \ 胸 .432 .706 .250 紫 \ 頭 網格 ; : 例6 \ 彩板 隨時間週期 翻轉移動 拼成 貓型 與 鵝形 0 0 0 \ 開始要先 全黑 \ 前 3 值 彩板 起始 位置方向 後 3 值 終止 位置方向 .230 .765 .750 .310 .399 .750 中間位置方向 青 \ 胸 .355 .765 .000 .324 .755 .375 中間位置方向 藍 \ 嘴 .290 .640 .000 .371 .520 .000 中間位置方向 紅 \ 脖 .400 .456 .625 .423 .275 .625 中間位置方向 桔 \ 身 .521 .400 .000 .660 .330 .750 中間位置方向 黃 \ 尾 .561 .145 .125 .511 .185 .875 中間位置方向 綠 \ 翅 .822 .118 .000 .432 .706 .250 中間位置方向 紫 \ 頭 網格 ; : 例7 \ 彩板拼成 船形 0 0 0 \ 開始要先 全黑 .426 .621 .000 黃 \ 上帆 .550 .500 .500 綠 \ 下帆 .801 .373 .875 桔 \ 船頭 .535 .288 .125 紅 \ 中艙 .668 .250 .125 藍 \ 前艙 .404 .329 .875 青 \ 後艙 .266 .289 .375 紫 \ 船尾 網格 ; : 例8 \ 彩板 隨時間週期 翻轉移動 拼成 鵝型 與 船形 0 0 0 \ 開始要先 全黑 \ 前 3 值 彩板 起始 位置方向 後 3 值 終止 位置方向 .310 .399 .750 .404 .329 .875 中間位置方向 青 \ 胸 .324 .755 .375 .668 .250 .125 中間位置方向 藍 \ 嘴 .371 .520 .000 .535 .288 .125 中間位置方向 紅 \ 脖 .423 .275 .625 .801 .373 .875 中間位置方向 桔 \ 身 .660 .330 .750 .426 .621 .000 中間位置方向 黃 \ 尾 .511 .185 .875 .550 .500 .500 中間位置方向 綠 \ 翅 .432 .706 .250 .266 .289 .375 中間位置方向 紫 \ 頭 網格 ; : 例9 \ 船行反覆前進後退 0 0 0 \ 開始要先 全黑 .426 .5 - .426 .5 + 中間值 .621 .000 黃 \ 上帆 .550 .5 - .550 .5 + 中間值 .500 .500 綠 \ 下帆 .801 .5 - .801 .5 + 中間值 .373 .875 桔 \ 船頭 .535 .5 - .535 .5 + 中間值 .288 .125 紅 \ 中艙 .668 .5 - .668 .5 + 中間值 .250 .125 藍 \ 前艙 .404 .5 - .404 .5 + 中間值 .329 .875 青 \ 後艙 .266 .5 - .266 .5 + 中間值 .289 .375 紫 \ 船尾 網格 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 例1 彩板拼成 方形 \ 例2 彩板散開 各自轉動 \ 例3 彩板拼成 貓形 \ 例4 彩板翻轉 拼成 方形 與 貓型 \ 例5 彩板拼成 鵝形 \ 例6 彩板翻轉 拼成 貓型 與 鵝形 \ 例7 彩板拼成 船形 \ 例8 彩板翻轉 拼成 鵝形 與 船型 \ 例9 船行反覆前進後退 \ 改下列 可選擇執行 例1 例2 例3 例4 例5 例6 例7 或 例8 例9
七巧板 Redux20
陳爽
'24 Dec 22
: time t y 10 * floor 4 / + ; : l dup y > swap y 0.09 + < * x 0.5 - 2.6 * time sin - 5 * 2 pow 1.2 swap - dup 0 > * * time pi 2 / + sin 1.2 + 2.5 / * ; 0.1 l 0.2 l + 0.3 l + 0.4 l + 0.5 l + 0.6 l + 0.7 l + 0.8 l + 0.9 l + 1.0 l + dup dup
Twisted Tower
Manwe
'24 Dec 22
: y0 y 1.6 * .45 - ; : d dup ; : c rot d >r ; : l c c c >r swap >r over * over d r> * swap r> * 4 + d * swap d * + over d * + 7 - swap 1 + min + r> r> r> ; 0 x 1.7 * .85 - d d * y0 d * + 4 + sqrt d d >r >r / y0 r> / -2 t 6.2 + 9 / sin 2 / + r> / l l l l l l l l l l l l l l l l drop drop drop 3.7 / d d * over sqrt -rot
Untitled
Anonymous
'24 Dec 22
: sq dup * ; : norm * sin 1 + 2 / ; : tt t 10 mod ; : xc tt 10 / ; : в 0 drop ; : вечерним x xc 0.25 + 0.75 > 1 * xc - abs 0.25 + ; : вьюнком - sq ; : я y 0.5 - sq ; : плен + ; : захвачен… sqrt t 60 mod sin * ; : недвижно dup tt 10 * norm ; : стою over 70 t 50 mod + norm ; : забытьи. rot 80 norm ;
Untitled
Anonymous
'24 Dec 22
x 50 * ceil tan y max x over / tan y x * rot rot / tan 2dup / tan swap 0.4 * swap .4 * + swap over + 2dup + .3 * rot rot
Stadium View
Greg Schmidt
'24 Dec 22
Next