Haiku Gallery
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
: d2 x 0.5 - dup * y 0.5 - dup * + sqrt ; : c d2 * t - sin ; 5 c 8 c 10 c 1
Oshiboshi
MN
'24 Nov 23
x 0.5 - 20 * y t + y 2 * sin 8 * + sin +
Ragecalm
SN
'24 Nov 23
: 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 Nov 23
: 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 Nov 23
: sq dup * ; : r sq swap sq + t + 10 * sin ; x y r 1 x - 1 y - r
Red Green
SN
'24 Nov 23
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
\ 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 Nov 23
\ 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 Nov 23
\ 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 Nov 23
\ 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 Nov 23
\ 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 Nov 23
\ : 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 Nov 23
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
: 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 Nov 23
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 Nov 23
1 2 3 4 z+
Untitled
Anonymous
'24 Nov 23
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
Anonymous
'24 Nov 23
x 23 * sin y max x over / sin y rot / sin 2dup / sin swap 0.6 * swap .2 * swap + swap over + 2dup + .4 * rot
4spire sunset
BradN
'24 Nov 23
x 0.0000000001 t * / y mod \ x 0.0000000001 t * / 0.5 mod \ x 0.0000000001 t * / 0.6 mod \ (x / .0001t ) mod 0.5
rune combinator, broken
public domain
'24 Nov 23
x 0.0000000001 t * / 0.5 mod 1.25 * dup dup 0.85 * 1 1 * *
pageflip toy
public domain
'24 Nov 23
x y + 2 / y x 3.14 * t + sin dup *
five seven five
jared
'24 Nov 23
x y + 2 / y x 3.14 * sin dup * t +
Untitled
Anonymous
'24 Nov 23
: x x 7 * sin ; : y y 7 * sin ; x x * y - 3 * sin y y * x - 7 * sin 2dup z* x x * y - 5 * cos
Cyclopizoid
Anonymous
'24 Nov 23
: range 1.5 ; : radius 5.2 ; : sharpness 5 t 5.1 / sin + ; : disk y - dup * swap x - dup * + sqrt .1 ** -1 * 1 + radius * 0 max 1 min sharpness pow ; : move t * + range mod range 2 / - abs range 4 / - .5 + ; .1 .11 move .4 -.21 move disk 1.2 .13 move -.5 .17 move disk -.3 .16 move .6 -.27 move disk -.7 .19 move -.8 .23 move disk + + + 1 t 3 / sin .5 - 0 max 3 * + \ glass min dup -1 * 1 + 18 ** 3 / swap .963 - abs -1 * 1 + 20 ** + dup 3 ** over .1 ** -rot \ colours
Metaballs
Manwe
'24 Nov 23
Next