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 May 07
📺
: sq dup * ; : r sq swap sq + t + 10 * sin ; x y r 1 x - 1 y - r
Red Green
SN
'25 May 07
📺
: 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 May 07
: 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 May 07
: 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 May 07
: 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 May 07
: 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 May 07
: 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 May 07
: 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 May 07
: 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 May 07
\ 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 May 07
\ 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 May 07
\ 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 May 07
\ 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 May 07
\ 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 May 07
\ : 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 May 07
: 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 May 07
: 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 May 07
: 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 May 07
: 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 May 07
: 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 May 07
: 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 May 07
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 May 07
1 2 3 4 z+
Untitled
Anonymous
'25 May 07
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 May 07
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 May 07
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 May 07
x 0.0000000001 t * / 0.5 mod 1.25 * dup dup 0.85 * 1 1 * *
pageflip toy
public domain
'25 May 07
x y + 2 / y x 3.14 * t + sin dup *
five seven five
jared
'25 May 07
x y + 2 / y x 3.14 * sin dup * t +
Untitled
Anonymous
'25 May 07
: 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 May 07
: 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 May 07
\ 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 May 07
: iii x y z* Sin ; x 5 * x y - iii exp y iii
Untitled
Brad Nelson himself
'25 May 07
( 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 May 07
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 May 07
.1 .5 y x cos x sin * + t + x 1.5 + mod -
Matrix? Redux
Nauz_Rem
'25 May 07
: xor + abs 2 mod ; x t sin y t cos xor
colors
Nauz_Rem
'25 May 07
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 May 07
( 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 May 07
Next