Haiku Gallery
: 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
'25 Feb 23
: sq dup * ; : r sq swap sq + t + 10 * sin ; x y r 1 x - 1 y - r
Red Green
SN
'25 Feb 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
'25 Feb 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
'25 Feb 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
'25 Feb 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
'25 Feb 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
'25 Feb 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
'25 Feb 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
陳爽
'25 Feb 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
陳爽
'25 Feb 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
陳爽
'25 Feb 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
'25 Feb 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
陳爽
'25 Feb 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
陳爽
'25 Feb 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
陳爽
'25 Feb 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
陳爽
'25 Feb 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
陳爽
'25 Feb 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
陳爽
'25 Feb 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
陳爽
'25 Feb 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
'25 Feb 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
'25 Feb 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
'25 Feb 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
'25 Feb 23
1 2 3 4 z+
Untitled
Anonymous
'25 Feb 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
'25 Feb 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
'25 Feb 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
'25 Feb 23
x 0.0000000001 t * / 0.5 mod 1.25 * dup dup 0.85 * 1 1 * *
pageflip toy
public domain
'25 Feb 23
x y + 2 / y x 3.14 * t + sin dup *
five seven five
jared
'25 Feb 23
x y + 2 / y x 3.14 * sin dup * t +
Untitled
Anonymous
'25 Feb 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
'25 Feb 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
'25 Feb 23
\ try with sound! : web push push x 0.5 + y 0.3 + * pop * sin 0 max x 0.3 + y 0.5 + * pop * sin 0 max + ; \ variables : a! 0 ! ; : a 0 @ ; : b! 0 ! ; : b 0 @ ; \ t seems to work better than dt t 31 mod a! t 23 mod b! a b web 17 17 web * x + b a web 19 19 web * y x * + a a web 07 07 web * y +
rainbow ripples (streak Redux)
~JRF
'25 Feb 23
: iii x y z* Sin ; x 5 * x y - iii exp y iii
Untitled
Brad Nelson himself
'25 Feb 23
( Use mouse to draw ) : f 15 * floor ; : fx x f ; : fy y f ; : fmx mx f ; : fmy my f ; : in mx 0 > mx 1 < my 0 > my 1 < * * * ; : mmf fmy 15 * fmx + 16 / floor ; : mmb fmy 15 * fmx + 16 mod ; 15 @ 16 mod fmx <> 15 @ 16 / floor 16 mod fmy <> or 0 button * in * if mmf @ 2 mmb ** / 1 over floor 2 mod 2 * - + 2 mmb ** * mmf ! then 0 button in * dup fmy 16 * fmx + * swap not 65535 * + 15 ! fy 15 * fx + 16 / floor @ 2 fy 15 * fx + 16 mod ** / floor 2 mod dup dup
Pixel Editor Redux
Anonymous
'25 Feb 23
x 1000 / 5 + t .2 * * sin y sin - y .3 * - x 1000 / 91 + t .2 * * sin y sin - y - x 1000 / 7 + t .2 * * sin y sin - y .7 * -
Spree
Anonymous
'25 Feb 23
.1 .5 y x cos x sin * + t + x 1.5 + mod -
Matrix? Redux
Nauz_Rem
'25 Feb 23
: xor + abs 2 mod ; x t sin y t cos xor
colors
Nauz_Rem
'25 Feb 23
t 1 mod x - abs 0.01 < t 1 mod 1 x - - abs 0.01 < + t 1 mod y - abs 0.01 < t 1 mod 1 y - - abs 0.01 < + t 1 mod
bars
Pig
'25 Feb 23
( Welcome to www.thesands.ru/forth-demotool/ ) : f 2dup * 2 * .17 + -rot .4 ** sin swap .7 ** - .13 + ; y x .5 - f f .15 rot / .11 rot / log y * + abs dup 7 / over log rot rot .2 * rot .3 * rot .3 +
Tweaked Ice
Anonymous
'25 Feb 23
Next