Haiku Gallery
\ frames4 20161214 \ color frames : 黑 0 0 0 ; : 紅 1 .3 .3 ; : 綠 0 1 0 ; : 黃 1 1 0 ; : 藍 .5 .5 1 ; : frames ( #frames -- #frames ) ; : fid 0 ; : frame_id fid @ ; : tid 1 ; : timer_id tid @ ; : s/f 2 ; : seconds/frame ( #frames #seconds -- ) dup s/f ! t swap / swap mod floor tid ! 0 fid ! 黑 ; : end_frame ( -- ) frame_id 1 + fid ! ; : paste ( p p' -- p" ) frame_id timer_id = * + ; : x x .5 - ; : y y .5 - ; : r x dup * y dup * + sqrt ; : 2pi 2 pi * ; : a y x atan2 2pi / 1 mod ; : 餅 ( 半徑 夾角 方向 -- 餅 ) a swap - 1 mod ( 半徑 夾角 a' ) swap < swap ( a'<夾角 半徑 ) r > ( a'<夾角 圓 ) * ; : 漸 ( a b -- x ) over - t s/f @ / 1 mod * + ; : 色 ( r g b 圖 紅度 綠度 藍度 -- r' g' b' ) >r >r >r >r ( r g b ; 藍度 綠度 紅度 圖 ) rot r> r> ( g b r 圖 紅度 ; 藍度 綠度 ) over >r * paste ( g b r' ; 藍度 綠度 圖 ) rot r> r> ( b r' g 圖 綠度 ; 藍度 ) over >r * paste ( b r' g' ; 藍度 圖 ) rot r> r> ( r' g' b 圖 藍度 ; ) * paste ( r' g' b' ; ) ; 8 frames 2 seconds/frame .4 .25 .00 漸 .75 1.0 漸 餅 黃 色 .4 .00 .25 漸 .00 餅 紅 色 end_frame .4 .25 .00 餅 紅 色 end_frame .4 .25 .00 漸 .00 .25 漸 餅 紅 色 .4 .00 .25 漸 .25 餅 綠 色 end_frame .4 .25 .25 餅 綠 色 end_frame .4 .25 .00 漸 .25 .50 漸 餅 綠 色 .4 .00 .25 漸 .50 餅 藍 色 end_frame .4 .25 .50 餅 藍 色 end_frame .4 .25 .00 漸 .50 .75 漸 餅 藍 色 .4 .00 .25 漸 .75 餅 黃 色 end_frame .4 .25 .75 餅 黃 色 end_frame r .45 <
frames4
陳爽
'25 Apr 19
\ frames3.f 20161213 : frames ( #frames -- #frames ) ; : fid 0 ; : frame_id fid @ ; : tid 1 ; : timer_id tid @ ; : seconds/frame ( #frames #seconds -- ) t swap / swap mod floor tid ! ; : [ ( -- r g b ) 0 0 0 0 fid ! ; : | ( -- ) frame_id 1 + fid ! ; : ] ( -- ) ; : paste ( p p' -- p" ) frame_id timer_id = * + ; : frame1 ( r g b -- r' g b ) rot .8 paste -rot ; : frame2 ( r g b -- r' g' b ) rot .75 paste rot .75 paste rot ; : frame3 ( r g b -- r g' b ) swap .5 paste swap ; : frame4 ( r g b -- r g' b' ) swap .6 paste swap .6 paste ; : frame5 ( r g b -- r g b' ) .99 paste ; : frame6 ( r g b -- r' g b' ) rot .8 paste -rot .8 paste ; : demo 6 frames 1 seconds/frame [ frame1 | frame2 | frame3 | frame4 | frame5 | frame6 ] ; demo
frames3
陳爽
'25 Apr 19
: frames ( #frames -- #frames ) ; : seconds/frame ( #frames #seconds -- ) t swap / swap mod floor 0 ! ; : [ ( -- p' i ) 0 0 ; : | ( p' i p -- p" i+1 ) over 0 @ = * ( p' i p? ) rot + ( i p" ) swap 1 + ( p" i+1 ) ; : ] ( p' i p -- p" ) swap 0 @ = * ( p' p? ) + ( p" ) ; : demo 6 frames 1 seconds/frame [ .80 | .75 | .00 | .10 | .20 | .80 ] [ .00 | .75 | .50 | .40 | .20 | .00 ] [ .00 | .00 | .00 | .60 | .99 | .80 ] ; demo
frames
陳爽
'25 Apr 19
\ show circle, diamond, and square \ 1 minute per case repeatedly : cases ( max -- pic i ) 0 swap t swap mod floor ; : of ( pic i sel -- pic i flg ) over = ; : endof ( pic i flg pic' -- pic" i ) * rot + swap ; : endcases ( pic i -- pic ) drop ; : circle x .5 - 2 ** y .5 - 2 ** + sqrt .3 < ; : diamond x .5 - y .5 - + abs .3 < x .5 - y .5 - - abs .3 < * ; : square x .5 - abs .3 < y .5 - abs .3 < * ; : demo 3 cases \ 1 minute per case 0 of circle endof 1 of diamond endof 2 of square endof endcases ; demo
cases
陳爽
'25 Apr 19
\ tangram_19 七巧板 20161210 陳爽 \ 改最後一列 可選擇執行 例1 例2 例3 ... 例8 或 例9 \ 例1 拼成 方形 \ 例2 散開 轉動 \ 例3 拼成 貓形 \ 例4 方形 轉成 貓型 \ 例5 拼成 鵝形 \ 例6 貓型 轉成 鵝形 \ 例7 拼成 船形 \ 例8 鵝形 轉成 船型 \ 例9 船型 轉成 貓型 \ 指定點 X,Y 至 任意點 x,y 之距離 d : d ( X Y -- d ) y ( X Y y ) - ( X Y-y ) dup ( X Y-y Y-y ) * ( X [Y-y]*[Y-y] ) x ( X [Y-y]*[Y-y] x ) rot ( [Y-y]*[Y-y] x X ) - ( [Y-y]*[Y-y] x-X ) dup ( [Y-y]*[Y-y] x-X x-X ) * ( [Y-y]*[Y-y] [x-X]*[x-X] ) + ( [Y-y]*[Y-y]+[x-X]*[x-X] ) sqrt ( d ) ; \ 兩倍圓周率 2pi : 2pi ( -- 2pi ) pi pi + ; \ 原點 X,Y 轉角 A ( 0 右 .25 上 .5 左 .75 下 ) : 座標 ( X Y A -- 洞 x" y" ) >r 2dup d .01 > -rot ( 洞 X Y ) ( A ) x rot - y rot - ( 洞 x' y' ) ( A ) over 2 ** over 2 ** + sqrt ( 洞 x' y' d ) ( A ) 1.04 * -rot ( 洞 d' x' y' ) ( A ) swap atan2 2pi / r> - 1 mod ( 洞 d' a ) ( ) 2pi * 2dup cos * -rot ( 洞 x" d' a' ) ( ) sin * ( 洞 x" y" ) ; \ 從 a 到 b 隨時間週期 漸變的 對應值 x, a <= x <= b, 兩端略久 : 漸變 ( a b -- x ) over - t sin .55 * .5 + 1 min 0 max * + ; \ 從 位置方向0 到 位置方向1 隨時間週期 漸變的 對應位置方向 : 位置方向漸變 ( X0 Y0 A0 X1 Y1 A1 -- X Y A ) >r ( X0 Y0 A0 X1 Y1 ) ( A1 ) rot r> ( X0 Y0 X1 Y1 A0 A1 ) ( ) 漸變 >r ( X0 Y0 X1 Y1 ) ( A ) >r ( X0 Y0 X1 ) ( A Y1 ) swap r> ( X0 X1 Y0 Y1 ) ( A ) 漸變 >r ( X0 X1 ) ( A Y ) 漸變 r> ( X Y ) ( A ) r> ( X Y A ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七彩板拼圖範例 \ 開始要先 全黑 0 0 0 \ 綠 黃 藍 紅 青 紫 桔 七個彩板 拼成 方形 的 七個位置方向 : g1 .500 .625 .000 ; : y2 .375 .500 .000 ; : b3 .687 .625 .000 ; : r4 .625 .500 .000 ; : c5 .500 .437 .000 ; : p6 .437 .312 .000 ; : o7 .625 .375 .000 ; : 綠 ( 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 ) ; : 網格 x .1 mod .005 > y .1 mod .005 > * ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 例1 \ 彩板 拼成 方形 g1 綠 y2 黃 b3 藍 r4 紅 c5 青 p6 紫 o7 桔 網格 ; : 例2 \ 彩板 各自轉動 時間轉 1 圈 g1 1 漸變 綠 y2 1 漸變 黃 b3 1 漸變 藍 r4 1 漸變 紅 c5 1 漸變 青 p6 1 漸變 紫 o7 1 漸變 桔 網格 ; \ 綠 黃 藍 紅 青 紫 桔 七個彩板 拼成 貓形 的 七個位置方向 : 貓腿 .561 .145 .125 ; : 貓身 .521 .400 .000 ; : 貓右耳 .355 .765 .000 ; : 貓頭 .290 .640 .000 ; : 貓左耳 .230 .765 .750 ; : 貓尾 .822 .118 .000 ; : 貓胸 .400 .456 .625 ; : 例3 \ 彩板 拼成 貓形 貓腿 綠 貓身 黃 貓右耳 藍 貓頭 紅 貓左耳 青 貓尾 紫 貓胸 桔 網格 ; : 例4 \ 彩板 方形 轉成 貓型 G1 貓腿 位置方向漸變 綠 Y2 貓身 位置方向漸變 黃 B3 貓右耳 位置方向漸變 藍 R4 貓頭 位置方向漸變 紅 C5 貓左耳 位置方向漸變 青 P6 貓尾 位置方向漸變 紫 O7 貓胸 位置方向漸變 桔 網格 ; \ 綠 黃 藍 紅 青 紫 桔 七個彩板 拼成 鵝形 的 七個位置方向 : 鵝翅 .511 .185 .875 ; : 鵝尾 .660 .330 .750 ; : 鵝嘴 .324 .755 .375 ; : 鵝脖 .371 .520 .000 ; : 鵝胸 .310 .399 .750 ; : 鵝頭 .432 .706 .250 ; : 鵝身 .423 .275 .625 ; : 例5 \ 彩板 拼成 鵝形 鵝翅 綠 鵝尾 黃 鵝嘴 藍 鵝脖 紅 鵝胸 青 鵝頭 紫 鵝身 桔 網格 ; : 例6 \ 彩板 貓型 轉成 鵝形 貓腿 鵝翅 位置方向漸變 綠 貓身 鵝尾 位置方向漸變 黃 貓右耳 鵝嘴 位置方向漸變 藍 貓頭 鵝脖 位置方向漸變 紅 貓左耳 鵝胸 位置方向漸變 青 貓尾 鵝頭 位置方向漸變 紫 貓胸 鵝身 位置方向漸變 桔 網格 ; \ 綠 黃 藍 紅 青 紫 桔 七個彩板 拼成 船形 的 七個位置方向 : 船下 .550 .500 .500 ; : 船上 .426 .621 .000 ; : 船前 .668 .250 .125 ; : 船中 .535 .288 .125 ; : 船後 .404 .329 .875 ; : 船尾 .266 .289 .375 ; : 船頭 .801 .373 .875 ; : 例7 \ 彩板 拼成 船形 船下 綠 船上 黃 船前 藍 船中 紅 船後 青 船尾 紫 船頭 桔 網格 ; : 例8 \ 彩板 鵝型 轉成 船形 鵝翅 船下 位置方向漸變 綠 鵝尾 船上 位置方向漸變 黃 鵝嘴 船前 位置方向漸變 藍 鵝脖 船中 位置方向漸變 紅 鵝胸 船後 位置方向漸變 青 鵝頭 船尾 位置方向漸變 紫 鵝身 船頭 位置方向漸變 桔 網格 ; : 例9 \ 彩板 鵝型 轉成 船形 船下 貓腿 位置方向漸變 綠 船上 貓身 位置方向漸變 黃 船前 貓右耳 位置方向漸變 藍 船中 貓頭 位置方向漸變 紅 船後 貓左耳 位置方向漸變 青 船尾 貓尾 位置方向漸變 紫 船頭 貓胸 位置方向漸變 桔 網格 t sin .5 * abs .1 + * ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 例1 拼成 方形 \ 例2 散開 轉動 \ 例3 拼成 貓形 \ 例4 方形 轉成 貓型 \ 例5 拼成 鵝形 \ 例6 貓型 轉成 鵝形 \ 例7 拼成 船形 \ 例8 鵝形 轉成 船型 \ 例9 船型 轉成 貓型 \ 改下列 選擇執行 例1 例2 ... 或 例9 例9
七巧板 Redux19
陳爽
'25 Apr 19
: r ( x y -- r ) \ distance from origin to x,y dup * swap dup * + sqrt ; : z ( x n -- x' ) \ animate t 10 / * sin .4 * .5 + ( x n' ) - ; : swirl ( r g b X Y -- r g b' ) \ center at X,Y y 1 z swap - ( r g b X y' ) x 2 z rot - ( r g b y' x' ) 2dup r t 9 / pi pi + mod - ( r g b y' x' r' ) -rot atan2 ( r g b r' a' ) 2dup cos * ( r g b r' a' x" ) -rot sin * ( r g b x" y" ) 2dup r push atan2 0.03 * pop + 50 * sin 99 ** 2 / + ( r g b' ) ; : b ( r g b R G B -- r' g' b' ) \ ball 0 @ 1 + dup 0 ! ( r g b R G B n+1 ) x over z ( r g b R G B n+1 x' ) y rot 2 * z ( r g b R G B x' y' ) r .07 < ( r g b R G B ball ) >r ( r g b R G B ) >r rot r> ( r g R G b B ) r@ * + ( r g R G b' ) r> swap ( r g R G ball b' ) >r >r ( r g R G ) r@ * rot + -rot ( g' r R ) r> * + ( g' r' ) swap r> ( r' g' b' ) ; : yellow 1 1 0 b ; : lime .5 .9 0 b ; : red 1 0 0 b ; : green 0 .5 0 b ; : grey .5 .5 1 b ; : orange 1 .5 0 b ; : cyan 0 1 1 b ; : purple .5 0 1 b ; : pink 1 0 1 b ; : blue 0 0 1 b ; : gold 1 .8 0 b ; : rose 1 .7 .7 b ; 0 0 ! \ give 0 to n .00 .04 .02 swirl \ red .00 .02 .00 swirl \ green .00 .00 .00 swirl \ blue dup .6 * >r rot r@ + rot r> + rot \ bright yellow lime red green grey orange cyan pink purple blue gold rose yellow
balls Redux3
陳爽
'25 Apr 19
: r ( x y -- r ) \ distance from origin to x,y dup * swap dup * + sqrt ; : swirl ( r g b X Y -- r g b' ) \ center at X,Y y swap - ( r g b X y' ) x rot - ( r g b y' x' ) 2dup r t 9 / pi pi + mod - ( r g b y' x' r' ) -rot atan2 ( r g b r' a' ) 2dup cos * ( r g b r' a' x" ) -rot sin * ( r g b x" y" ) 2dup r push atan2 0.03 * pop + 50 * sin 99 ** + ( r g b' ) ; : z ( x n -- x' ) t 10 / * sin .4 * .5 + ( x n' ) - ; : b ( r g b R G B -- r' g' b' ) 0 @ 1 + dup 0 ! ( r g b R G B n+1 ) x over z ( r g b R G B n+1 x' ) y rot 2 * z ( r g b R G B x' y' ) r .07 < ( r g b R G B ball ) >r ( r g b R G B ) >r rot r> ( r g R G b B ) r@ * + ( r g R G b' ) r> swap ( r g R G ball b' ) >r >r ( r g R G ) r@ * rot + -rot ( g' r R ) r> * + ( g' r' ) swap r> ( r' g' b' ) ; : yellow 1 1 0 b ; : lime .5 .9 0 b ; : red 1 0 0 b ; : green 0 .5 0 b ; : grey .5 .5 1 b ; : orange 1 .5 0 b ; : cyan 0 1 1 b ; : purple .5 0 1 b ; : pink 1 0 1 b ; : blue 0 0 1 b ; : gold 1 .8 0 b ; : rose 1 .7 .7 b ; 0 0 ! \ give 0 to n 0 0 0 \ take black as background yellow lime red green grey orange cyan pink purple blue gold rose .6 .62 swirl \ blue swirl at .6,.62
balls Redux2
陳爽
'25 Apr 19
: r ( x y -- r ) \ distance from origin to x,y dup * swap dup * + sqrt ; : swirl ( r g b X Y -- r g b' ) \ center at X,Y y swap - ( r g b X y' ) x rot - ( r g b y' x' ) 2dup r t 9 / pi pi + mod - ( r g b y' x' r' ) -rot atan2 ( r g b r' a' ) 2dup cos * ( r g b r' a' x" ) -rot sin * ( r g b x" y" ) 2dup r push atan2 0.03 * pop + 50 * sin 99 ** + ( r g b' ) ; : z ( x n -- x' ) t * sin .4 * .5 + ( x n' ) - ; : b ( r g b R G B n -- r' g' b' ) 10 / 1 + ( r g b R G B n' ) ( ) x over z ( r g b R G B n' x' ) ( ) y rot 2 * z ( r g b R G B x' y' ) ( ) r .08 < ( r g b R G B ball ) ( ) >r >r ( r g b R G ) ( B ball ) rot r> r@ * + ( r g R G b' ) ( ball ) r> swap ( r g R G ball b' ) ( ) >r >r ( r g R G ) ( ball b' ) r@ * rot + ( r R g' ) ( ball b' ) -rot r> * + ( g' r' ) ( b' ) swap r> ( r' g' b' ) ( ) ; : yellow 1 1 0 0 b ; : lime .5 .9 0 1 b ; : red 1 0 0 2 b ; : green 0 .5 0 3 b ; : grey .5 .5 1 4 b ; : orange 1 .5 0 5 b ; : cyan 0 1 1 6 b ; : purple .5 0 1 7 b ; : pink 1 0 1 8 b ; : blue 0 0 1 9 b ; : gold 1 .75 0 10 b ; : rose 1 .7 .7 11 b ; 0 0 0 \ take black as background yellow lime red green grey orange cyan pink purple blue gold rose .6 .62 swirl \ swirl at .6,.62
balls Redux1 fixed
陳爽
'25 Apr 19
: r ( x y -- r ) \ distance from origin to x,y dup * swap dup * + sqrt ; : swirl ( r g b X Y -- r g b' ) \ center at X,Y y swap - ( r g b X y' ) x rot - ( r g b y' x' ) 2dup r t 9 / pi pi + mod - ( r g b y' x' r' ) -rot atan2 ( r g b r' a' ) 2dup cos * ( r g b r' a' x" ) -rot sin * ( r g b x" y" ) 2dup r push atan2 0.03 * pop + 50 * sin 99 ** + ( r g b' ) ; : z ( x n -- x' ) t * sin .4 * .5 + ( x n' ) - ; : b ( r g b R G B n -- r' g' b' ) 10 / 1 + ( r g b R G B n' ) ( ) x over z ( r g b R G B n' x' ) ( ) y rot 2 * z ( r g b R G B x' y' ) ( ) r .08 < ( r g b R G B ball ) ( ) >r >r ( r g b R G ) ( B ball ) rot r> r@ * + ( r g R G b' ) ( ball ) r> swap ( r g R G ball b' ) ( ) >r >r ( r g R G ) ( ball b' ) r@ * rot + ( r R g' ) ( ball b' ) -rot r> * + ( g' r' ) ( b' ) swap r> ( r' g' b' ) ( ) ; : yellow 1 1 0 0 b ; : lime .5 .9 0 1 b ; : red 1 0 0 2 b ; : green 0 .5 0 3 b ; : grey .5 .5 1 4 b ; : orange 1 .5 0 5 b ; : cyan 0 1 1 6 b ; : purple .5 0 1 7 b ; : pink 1 0 1 8 b ; : blue 0 0 1 9 b ; : gold 1 .75 0 10 b ; : rose 1 .7 .7 2 b ; 0 0 0 \ take black as background yellow lime red green grey orange cyan pink purple blue gold rose .6 .62 swirl \ swirl at .6,.62
balls Redux1
陳爽
'25 Apr 19
: ripple push dup * swap dup * + sqrt t pop / - 33 * sin ; x y 10 ripple 2 x - y 10 ripple x 2 y - 10 ripple 2 x - 2 y - 10 ripple
rainbow ?...
陳昕亞
'25 Apr 19
: x x .6 - ; : y 0 y .7 - - ; 1 .143 x x * y y * + sqrt 33 * t .7 * + sin x y atan2 3 ** t .33 * + sin - abs / - dup x * over y *
Cool!...
陳昕亞
'25 Apr 19
: x x .98 - ; : y 0 y .7 - - ; 1 .135 x x * y y * + sqrt 642 * t .7 * + sin x y atan2 7 ** t .91 * + sin - abs / - dup x * over y *
Amazing!...
陳昕亞
'25 Apr 19
: r ( x y -- r ) \ distance from origin to x,y dup * swap dup * + sqrt ; : swirl ( X Y -- ) \ center at X,Y y swap - ( X y' ) x rot - ( y' x' ) 2dup r t 9 / pi pi + mod - ( y' x' r' ) -rot atan2 ( r' a' ) 2dup cos * ( r' a' x" ) -rot sin * ( x" y" ) 2dup r push atan2 0.03 * pop + 50 * sin 96 ** ; : z ( x n -- x' ) t * sin .4 * .5 + ( x n' ) - ; : b ( n -- ball ) 10 / 1 + ( n' ) x over z ( n' x' ) y rot 2 * z ( x' y' ) r .08 < ; : lime 0 b ; : white 1 b ; : yellow 2 b ; : purple 3 b ; : orange 4 b ; : cyan 5 b ; : pink 6 b ; : blue 4 b ; : | 6 / ; : balls yellow red grey | orange pink + + + + \ R yellow yellow | purple | red | cyan + + + + \ G grey cyan pink blue + + + \ B ; balls .6 .62 swirl + x .5 - abs .45 < .2 + y .5 - abs .45 < .2 + *
balls
陳昕亞
'25 Apr 19
x 8.3 * sin y 6.4 * sin t 21 * sin * * dup t 4 * sin * dup t 6 * sin *
Flashing lights
陳昕亞
'25 Apr 19
: q 1.ˋ + 2 / ; : x t sin q 9 * x * sin q ; : y t sin q 9 * y * cos q ; : x x .5 t sin * - ; : y y .5 t cos * - ; : l 2dup * 2 * .635 + -rot dup * swap dup * - .04 t \ 5 * cos * + ; x y l l 2dup dup 43 - * swap dup 1.5 t 3 / sin * - * + sqrt -rot over sqrt - rot
lights of color
陳昕亞
'25 Apr 19
: e .3 ; : x x .5 - ; : y y .2 - ; : x x 7 * cos ; : y y 6 * sin ; : lines >r .5 e * + r> * dup floor - e < ; : net >r x r@ lines y r@ lines or x y + r@ lines x y - r> lines or ; t sin 3 * 3 + net
Circle cross
陳昕亞
'25 Apr 19
: r ( x y -- r ) \ distance from origin to x,y dup * swap dup * + sqrt ; : swirl ( X Y -- ) \ center at X,Y y swap - ( X y' ) x rot - ( y' x' ) 2dup r t 9 / pi pi + mod - ( y' x' r' ) -rot atan2 ( r' a' ) 2dup cos * ( r' a' x" ) -rot sin * ( x" y" ) 2dup r push atan2 0.03 * pop + 50 * sin 99 ** ; : z ( x n -- x' ) t * sin .4 * .5 + ( x n' ) - ; : b ( n -- ball ) 10 / 1 + ( n' ) x over z ( n' x' ) y rot 2 * z ( x' y' ) r .08 < ; : yellow 0 b ; : red 1 b ; : green 2 b ; : grey 3 b ; : orange 4 b ; : cyan 5 b ; : pink 6 b ; : blue 7 b ; : | 2 / ; : balls yellow red grey | orange pink + + + + \ R yellow green | grey | orange | cyan + + + + \ G grey cyan pink blue + + + \ B ; balls .6 .62 swirl + x .5 - abs .45 < .2 + y .5 - abs .45 < .2 + *
balls Redux
陳爽
'25 Apr 19
x y t sin 1 + 2 /
Testing
Zizitop
'25 Apr 19
: death x 256 * 1 swap / y 256 * * ; : duty y 256 * 1 swap / x 256 * * ; : is 0.001 * t * cos ; : a dup * ; : feather 1 x - 1 y - * + ; : mountain 1 x - 1 y - * - ; death is a feather duty is a mountain
Classic hailku
Stainless
'25 Apr 19
: t t * sin .38 * - .5 - ; : b x over t y rot dup + t dup * swap dup * + sqrt .07 < ; : b0 1.0 b ; : b1 1.1 b ; : b2 1.2 b ; : b3 1.3 b ; : b4 1.4 b ; : b5 1.5 b ; : b6 1.6 b ; : b7 1.7 b ; b0 b1 b4 b7 b3 2 / + + + + b0 b5 b2 b3 b4 2 / swap 2 / rot 2 / + + + + b3 b5 b6 b7 + + + x .5 - abs .45 < .2 + y .5 - abs .45 < .2 + *
balls
陳爽
'25 Apr 19
\ tangram_18 七巧板 20161123 陳爽 \ 改最後一列 可執行 例1 例2 例3 例4 例5 例6 例7 或 例8 \ 例1 彩板拼成 方形 \ 例2 彩板散開 各自轉動 \ 例3 彩板拼成 貓形 \ 例4 彩板翻轉 拼成 方形 與 貓型 \ 例5 彩板拼成 鵝形 \ 例6 彩板翻轉 拼成 貓型 與 鵝形 \ 例7 彩板拼成 船形 \ 例8 彩板翻轉 拼成 鵝形 與 船型 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y swap - dup * x rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( 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 2 / sin .55 * .5 + 1 min 0 max * + ; \ 從某位置方向到另位置方向隨時間週期取對應中間位置方向 : 中間位置方向 ( 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 ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七彩板組圖範例 0 0 0 \ 開始要先 全黑 : 例1 \ 彩板拼成 方形 .500 .625 .000 綠 .375 .500 .000 黃 .687 .625 .000 藍 .625 .500 .000 紅 .500 .437 .000 青 .437 .312 .000 紫 .625 .375 .000 桔 網格 ; : 例2 \ 彩板散開 各自每 10 秒轉 1 圈 .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 \ 彩板拼成 貓形 .561 .145 .125 綠 \ 腿 .521 .400 .000 黃 \ 身 .400 .456 .625 桔 \ 胸 .290 .640 .000 紅 \ 頭 .355 .765 .000 藍 \ 右耳 .230 .765 .750 青 \ 左耳 .822 .118 .000 紫 \ 尾 網格 ; : 例4 \ 彩板 隨時間週期 翻轉移動 拼成 方形 與 貓型 \ 前 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 \ 彩板拼成 鵝形 .511 .185 .875 綠 \ 翅 .660 .330 .750 黃 \ 尾 .423 .275 .625 桔 \ 身 .371 .520 .000 紅 \ 脖 .324 .755 .375 藍 \ 嘴 .310 .399 .750 青 \ 胸 .432 .706 .250 紫 \ 頭 網格 ; : 例6 \ 彩板 隨時間週期 翻轉移動 拼成 貓型 與 鵝形 \ 前 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 \ 彩板拼成 船形 .426 .621 .000 黃 \ 上帆 .550 .500 .500 綠 \ 下帆 .801 .373 .875 桔 \ 船頭 .535 .288 .125 紅 \ 中艙 .668 .250 .125 藍 \ 前艙 .404 .329 .875 青 \ 後艙 .266 .289 .375 紫 \ 船尾 網格 ; : 例8 \ 彩板 隨時間週期 翻轉移動 拼成 鵝型 與 船形 \ 前 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 中間位置方向 紫 \ 頭 網格 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 改下列 可選擇執行 例1 例2 例3 例4 例5 例6 例7 或 例8 例8
七巧板 Redux18 ok
陳爽
'25 Apr 19
\ tangram_18 七巧板 20161123 陳爽 \ 改最後一列 可執行 例1 例2 例3 例4 例5 例6 例7 或 例8 \ 例1 彩板拼成 方形 \ 例2 彩板散開 各自轉動 \ 例3 彩板拼成 貓形 \ 例4 彩板翻轉 拼成 方形 與 貓型 \ 例5 彩板拼成 鵝形 \ 例6 彩板翻轉 拼成 貓型 與 鵝形 \ 例7 彩板拼成 船形 \ 例8 彩板翻轉 拼成 鵝形 與 船型 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y swap - dup * x rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( 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 ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七彩板組圖範例 0 0 0 \ 開始要先 全黑 : 例1 \ 彩板拼成 方形 .500 .625 .000 綠 .375 .500 .000 黃 .687 .625 .000 藍 .625 .500 .000 紅 .500 .437 .000 青 .437 .312 .000 紫 .625 .375 .000 桔 網格 ; : 例2 \ 彩板散開 各自每 10 秒轉 1 圈 .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 \ 彩板拼成 貓形 .561 .145 .125 綠 \ 腿 .521 .400 .000 黃 \ 身 .400 .456 .625 桔 \ 胸 .290 .640 .000 紅 \ 頭 .355 .765 .000 藍 \ 右耳 .230 .765 .750 青 \ 左耳 .822 .118 .000 紫 \ 尾 網格 ; : 例4 \ 彩板 隨時間週期 翻轉移動 拼成 方形 與 貓型 \ 前 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 \ 彩板拼成 鵝形 .511 .185 .875 綠 \ 翅 .660 .330 .750 黃 \ 尾 .423 .275 .625 桔 \ 身 .371 .520 .000 紅 \ 脖 .324 .755 .375 藍 \ 嘴 .310 .399 .750 青 \ 胸 .432 .706 .250 紫 \ 頭 網格 ; : 例6 \ 彩板 隨時間週期 翻轉移動 拼成 貓型 與 鵝形 \ 前 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 \ 彩板拼成 船形 .426 .621 .000 黃 \ 上帆 .550 .500 .500 綠 \ 下帆 .801 .373 .875 桔 \ 船頭 .535 .288 .125 紅 \ 中艙 .668 .250 .125 藍 \ 前艙 .404 .329 .875 青 \ 後艙 .266 .289 .375 紫 \ 船尾 網格 ; : 例8 \ 彩板 隨時間週期 翻轉移動 拼成 鵝型 與 船形 \ 前 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 中間位置方向 紫 \ 頭 網格 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 改下列 可選擇執行 例1 例2 例3 例4 例5 例6 例7 或 例8 例8
七巧板 Redux18
陳爽
'25 Apr 19
\ tangram_17 七巧板 20161123 陳爽 \ 改最後一列 可執行 例1 例2 例3 例4 例5 例6 例7 或 例8 \ 例1 彩板拼成 方形 \ 例2 彩板散開 各自轉動 \ 例3 彩板拼成 貓形 \ 例4 彩板翻轉 拼成 方形 與 貓型 \ 例5 彩板拼成 鵝形 \ 例6 彩板翻轉 拼成 貓型 與 鵝形 \ 例7 彩板拼成 船形 \ 例8 彩板翻轉 拼成 鵝形 與 船型 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y swap - dup * x rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( 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 ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七彩板組圖範例 0 0 0 \ 開始要先 全黑 : 例1 \ 彩板拼成 方形 .500 .625 .000 綠 .375 .500 .000 黃 .687 .625 .000 藍 .625 .500 .000 紅 .500 .437 .000 青 .437 .312 .000 紫 .625 .375 .000 桔 網格 ; : 例2 \ 彩板散開 各自每 10 秒轉 1 圈 .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 \ 彩板拼成 貓形 .561 .145 .125 綠 \ 腿 .521 .400 .000 黃 \ 身 .400 .456 .625 桔 \ 胸 .290 .640 .000 紅 \ 頭 .355 .765 .000 藍 \ 右耳 .230 .765 .750 青 \ 左耳 .822 .118 .000 紫 \ 尾 網格 ; : 例4 \ 彩板 隨時間週期 翻轉移動 拼成 方形 與 貓型 \ 前 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 \ 彩板拼成 鵝形 .511 .185 .875 綠 \ 翅 .660 .330 .750 黃 \ 尾 .423 .275 .625 桔 \ 身 .371 .520 .000 紅 \ 脖 .324 .755 .375 藍 \ 嘴 .310 .399 .750 青 \ 胸 .432 .706 .250 紫 \ 頭 網格 ; : 例6 \ 彩板 隨時間週期 翻轉移動 拼成 貓型 與 鵝形 \ 前 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 \ 彩板拼成 船形 .426 .621 .000 黃 \ 上帆 .550 .500 .500 綠 \ 下帆 .801 .373 .875 桔 \ 船頭 .535 .288 .125 紅 \ 中艙 .668 .250 .125 藍 \ 前艙 .404 .329 .875 青 \ 後艙 .266 .289 .375 紫 \ 船尾 網格 ; : 例8 \ 彩板 隨時間週期 翻轉移動 拼成 鵝型 與 船形 \ 前 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 中間位置方向 紫 \ 頭 網格 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 改下列 可選擇執行 例1 例2 例3 例4 例5 例6 例7 或 例8 例8
七巧板 Redux17
陳爽
'25 Apr 19
\ tangram_16 七巧板 20161123 陳爽 \ 改最後一列 可執行 例1 例2 例3 例4 例5 例6 例7 或 例8 \ 例1 彩板拼成 方形 \ 例2 彩板散開 各自轉動 \ 例3 彩板拼成 貓形 \ 例4 彩板翻轉 拼成 方形 與 貓型 \ 例5 彩板拼成 鵝形 \ 例6 彩板翻轉 拼成 貓型 與 鵝形 \ 例7 彩板拼成 船形 \ 例8 彩板翻轉 拼成 鵝形 與 船型 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y swap - dup * x rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( 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 ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七彩板組圖範例 0 0 0 \ 開始要先 全黑 : 例1 \ 彩板拼成 方形 .500 .625 .000 綠 .375 .500 .000 黃 .687 .625 .000 藍 .625 .500 .000 紅 .500 .437 .000 青 .437 .312 .000 紫 .625 .375 .000 桔 網格 ; : 例2 \ 彩板散開 各自每 10 秒轉 1 圈 .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 \ 彩板拼成 貓形 .561 .145 .125 綠 \ 腿 .521 .400 .000 黃 \ 身 .400 .456 .625 桔 \ 胸 .290 .640 .000 紅 \ 頭 .355 .765 .000 藍 \ 右耳 .230 .765 .750 青 \ 左耳 .822 .118 .000 紫 \ 尾 網格 ; : 例4 \ 彩板 隨時間週期 翻轉移動 拼成 方形 與 貓型 \ 前 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 \ 彩板拼成 鵝形 .511 .185 .875 綠 \ 翅 .660 .330 .750 黃 \ 尾 .423 .275 .625 桔 \ 身 .371 .520 .000 紅 \ 脖 .324 .755 .375 藍 \ 嘴 .310 .399 .750 青 \ 胸 .432 .706 .250 紫 \ 頭 網格 ; : 例6 \ 彩板 隨時間週期 翻轉移動 拼成 貓型 與 鵝形 \ 前 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 \ 彩板拼成 船形 .426 .621 .000 黃 \ 上帆 .550 .500 .500 綠 \ 下帆 .801 .373 .875 桔 \ 船頭 .535 .288 .125 紅 \ 中艙 .668 .250 .125 藍 \ 前艙 .404 .329 .875 青 \ 後艙 .266 .289 .375 紫 \ 船尾 網格 ; : 例8 \ 彩板 隨時間週期 翻轉移動 拼成 鵝型 與 船形 \ 前 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 中間位置方向 紫 \ 頭 網格 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 改下列 可選擇執行 例1 例2 例3 例4 例5 例6 例7 或 例8 例7
七巧板 Redux16
陳爽
'25 Apr 19
\ tangram_15 七巧板 20161123 陳爽 \ 改最後一列 可執行 例1 例2 例3 例4 例5 或 例6 \ 例1 彩板拼成 方形 \ 例2 彩板散開 各自轉動 \ 例3 彩板拼成 貓形 \ 例4 彩板翻轉 拼成 方形 與 貓型 \ 例5 彩板拼成 鵝形 \ 例6 彩板翻轉 拼成 貓型 與 鵝形 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y swap - dup * x rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( 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 ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七彩板組圖範例 0 0 0 \ 開始要先 全黑 : 例1 \ 彩板拼成 方形 .500 .625 .000 綠 .375 .500 .000 黃 .687 .625 .000 藍 .625 .500 .000 紅 .500 .437 .000 青 .437 .312 .000 紫 .625 .375 .000 桔 網格 ; : 例2 \ 彩板散開 各自每 10 秒轉 1 圈 .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 \ 彩板拼成 貓形 .561 .145 .125 綠 \ 腿 .521 .400 .000 黃 \ 身 .400 .456 .625 桔 \ 胸 .290 .640 .000 紅 \ 頭 .355 .765 .000 藍 \ 右耳 .230 .765 .750 青 \ 左耳 .822 .118 .000 紫 \ 尾 網格 ; : 例4 \ 彩板 隨時間週期 翻轉移動 拼成 方形 與 貓型 \ 前 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 \ 彩板拼成 鵝形 .511 .185 .875 綠 \ 翅 .660 .330 .750 黃 \ 尾 .423 .275 .625 桔 \ 身 .371 .520 .000 紅 \ 脖 .324 .755 .375 藍 \ 嘴 .310 .399 .750 青 \ 胸 .432 .706 .250 紫 \ 頭 網格 ; : 例6 \ 彩板 隨時間週期 翻轉移動 拼成 貓型 與 鵝形 \ 前 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 中間位置方向 紫 \ 頭 網格 ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 可執行 例1 例2 例3 例4 例5 或 例6 例6
七巧板 Redux15
陳爽
'25 Apr 19
\ tangram_08 七巧板 20161118 陳爽 \ 任意點 x,y 之座標 原點置中 值域放大 : x x 2 * .5 - ; \ -1 < x < 1 : y y 2 * .5 - ; \ -1 < y < 1 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y .5 - swap - dup * x .5 - rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 負片影像: 0 變 1, 1 變 0 : 反 1 swap - ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .02 > -rot ( 洞 X Y ) x .5 - rot - ( 洞 Y x' ) y -.5 + rot - ( 洞 x' y' ) over 2 ** over 2 ** + sqrt 1.04 * -rot ( 洞 r x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r a ) 2pi * ( 洞 r a' ) 2dup cos * -rot ( 洞 x" r a' ) sin * ( 洞 x" y" ) ; : 綠 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.25 > -rot ( R G B 洞 x"+y">-.25 x" y" ) dup >r - .25 < ( R G B 洞 x"+y">-.25 x"-y"<.25 ) r> .25 < ( 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 - .25 < -rot ( R G B 洞 x"-y"<.25 x" y" ) over >r + .25 < r> ( R G B 洞 x"-y"<.25 x"+y"<.25 x" ) -.25 > ( 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 - -.125 > -rot ( R G B 洞 x"-y">-.125 x" y" ) over >r + -.125 > r> ( R G B 洞 x"-y">0 y"<.25 x" ) .125 < ( 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 -.25 > swap ( R G B 洞 x"-y" x"+y">-.25 x"+y" ) .25 < rot ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y" ) dup .25 < swap ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y"<.25 x"-y" ) -.25 > ( 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 + .125 < -rot ( R G B 洞 x"+y"<.125 x" y" ) dup >r - -.125 > ( R G B 洞 x"+y">-.25 x"-y">-.125 ) r> -.125 > ( 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 -.25 > swap ( R G B 洞 x"-y">-.25 x"-y" ) .25 < rot ( R G B 洞 x"-y">-.25 x"-y"<.25 y" ) dup .125 < swap ( R G B 洞 x"-y">-.25 x"-y"<.25 y" y"<.125 y" ) -.125 > ( 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" ) .25 < rot ( R G B 洞 x"-y">0 y"<.25 x" ) -.25 > ( R G B 洞 x"-y">0 y"<.25 x">-.25 ) * * * >r rot r@ + rot r> 2 / + rot ( R' G' B ) ; \ ( A 七彩板組圖範例 0 0 0 \ 全黑 ( A1. 拼成方形 .0000 .2500 0 綠 -.2500 .0000 0 黃 .3750 .2500 0 藍 .2500 .0000 0 紅 .0000 -.1250 0 青 -.1250 -.3750 0 紫 .2500 -.2500 0 桔 \ ) ( A2. 方形散開 -.2500 .5000 0 綠 -.5000 -.0000 0 黃 .6250 .5000 0 藍 .3125 .1875 0 紅 .0000 -.1250 0 青 -.1250 -.6250 0 紫 .5000 -.2500 0 桔 \ ) \ ( A3. 貓 -.4500 .6310 .7500 青 \ 左耳 .6050 -.6720 .5420 紫 \ 尾 .1200 -.7100 .1250 綠 \ 腿 .0420 -.2000 .0000 黃 \ 身 -.2000 -.0759 .6250 桔 \ 胸 -.3250 .3855 .0000 紅 \ 頭 -.2000 .6310 .0000 藍 \ 右耳 \ ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ )
七巧板 Redux8 reorder
Anonymous
'25 Apr 19
\ tangram_08 七巧板 20161118 陳爽 \ 任意點 x,y 之座標 原點置中 值域放大 : x x 2 * .5 - ; \ -1 < x < 1 : y y 2 * .5 - ; \ -1 < y < 1 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y .5 - swap - dup * x .5 - rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 負片影像: 0 變 1, 1 變 0 : 反 1 swap - ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .02 > -rot ( 洞 X Y ) x .5 - rot - ( 洞 Y x' ) y -.5 + rot - ( 洞 x' y' ) over 2 ** over 2 ** + sqrt 1.04 * -rot ( 洞 r x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r a ) 2pi * ( 洞 r a' ) 2dup cos * -rot ( 洞 x" r a' ) sin * ( 洞 x" y" ) ; : 綠 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.25 > -rot ( R G B 洞 x"+y">-.25 x" y" ) dup >r - .25 < ( R G B 洞 x"+y">-.25 x"-y"<.25 ) r> .25 < ( 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 - .25 < -rot ( R G B 洞 x"-y"<.25 x" y" ) over >r + .25 < r> ( R G B 洞 x"-y"<.25 x"+y"<.25 x" ) -.25 > ( 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 - -.125 > -rot ( R G B 洞 x"-y">-.125 x" y" ) over >r + -.125 > r> ( R G B 洞 x"-y">0 y"<.25 x" ) .125 < ( 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 -.25 > swap ( R G B 洞 x"-y" x"+y">-.25 x"+y" ) .25 < rot ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y" ) dup .25 < swap ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y"<.25 x"-y" ) -.25 > ( 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 + .125 < -rot ( R G B 洞 x"+y"<.125 x" y" ) dup >r - -.125 > ( R G B 洞 x"+y">-.25 x"-y">-.125 ) r> -.125 > ( 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 -.25 > swap ( R G B 洞 x"-y">-.25 x"-y" ) .25 < rot ( R G B 洞 x"-y">-.25 x"-y"<.25 y" ) dup .125 < swap ( R G B 洞 x"-y">-.25 x"-y"<.25 y" y"<.125 y" ) -.125 > ( 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" ) .25 < rot ( R G B 洞 x"-y">0 y"<.25 x" ) -.25 > ( R G B 洞 x"-y">0 y"<.25 x">-.25 ) * * * >r rot r@ + rot r> 2 / + rot ( R' G' B ) ; \ ( A 七彩板組圖範例 .3 .3 .3 \ 全黑 ( A1. 拼成方形 .0000 .2500 0 綠 -.2500 .0000 0 黃 .3750 .2500 0 藍 .2500 .0000 0 紅 .0000 -.1250 0 青 -.1250 -.3750 0 紫 .2500 -.2500 0 桔 \ ) ( A2. 方形散開 -.2500 .5000 0 綠 -.5000 -.0000 0 黃 .6250 .5000 0 藍 .3125 .1875 0 紅 .0000 -.1250 0 青 -.1250 -.6250 0 紫 .5000 -.2500 0 桔 \ ) \ ( A3. 貓 .1200 -.7100 .1250 綠 \ 腿 .0420 -.2000 .0000 黃 \ 身 -.2000 -.0759 .6250 桔 \ 胸 -.3250 .3855 .0000 紅 \ 頭 -.2000 .6310 .0000 藍 \ 右耳 -.4500 .6310 .7500 青 \ 左耳 .6050 -.6720 .5420 紫 \ 尾 \ ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ )
七巧板 Redux8 gray
Anonymous
'25 Apr 19
\ tangram_08 七巧板 20161118 陳爽 \ 任意點 x,y 之座標 原點置中 值域放大 : x x 2 * .5 - ; \ -1 < x < 1 : y y 2 * .5 - ; \ -1 < y < 1 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y .5 - swap - dup * x .5 - rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 負片影像: 0 變 1, 1 變 0 : 反 1 swap - ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .02 > -rot ( 洞 X Y ) x .5 - rot - ( 洞 Y x' ) y -.5 + rot - ( 洞 x' y' ) over 2 ** over 2 ** + sqrt 1.04 * -rot ( 洞 r x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r a ) 2pi * ( 洞 r a' ) 2dup cos * -rot ( 洞 x" r a' ) sin * ( 洞 x" y" ) ; : 綠 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.25 > -rot ( R G B 洞 x"+y">-.25 x" y" ) dup >r - .25 < ( R G B 洞 x"+y">-.25 x"-y"<.25 ) r> .25 < ( 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 - .25 < -rot ( R G B 洞 x"-y"<.25 x" y" ) over >r + .25 < r> ( R G B 洞 x"-y"<.25 x"+y"<.25 x" ) -.25 > ( 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 - -.125 > -rot ( R G B 洞 x"-y">-.125 x" y" ) over >r + -.125 > r> ( R G B 洞 x"-y">0 y"<.25 x" ) .125 < ( 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 -.25 > swap ( R G B 洞 x"-y" x"+y">-.25 x"+y" ) .25 < rot ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y" ) dup .25 < swap ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y"<.25 x"-y" ) -.25 > ( 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 + .125 < -rot ( R G B 洞 x"+y"<.125 x" y" ) dup >r - -.125 > ( R G B 洞 x"+y">-.25 x"-y">-.125 ) r> -.125 > ( 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 -.25 > swap ( R G B 洞 x"-y">-.25 x"-y" ) .25 < rot ( R G B 洞 x"-y">-.25 x"-y"<.25 y" ) dup .125 < swap ( R G B 洞 x"-y">-.25 x"-y"<.25 y" y"<.125 y" ) -.125 > ( 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" ) .25 < rot ( R G B 洞 x"-y">0 y"<.25 x" ) -.25 > ( R G B 洞 x"-y">0 y"<.25 x">-.25 ) * * * >r rot r@ + rot r> 2 / + rot ( R' G' B ) ; \ ( A 七彩板組圖範例 0 0 0 \ 全黑 ( A1. 拼成方形 .0000 .2500 0 綠 -.2500 .0000 0 黃 .3750 .2500 0 藍 .2500 .0000 0 紅 .0000 -.1250 0 青 -.1250 -.3750 0 紫 .2500 -.2500 0 桔 \ ) ( A2. 方形散開 -.2500 .5000 0 綠 -.5000 -.0000 0 黃 .6250 .5000 0 藍 .3125 .1875 0 紅 .0000 -.1250 0 青 -.1250 -.6250 0 紫 .5000 -.2500 0 桔 \ ) \ ( A3. 貓 .1200 -.7100 .1250 綠 \ 腿 .0420 -.2000 .0000 黃 \ 身 -.2000 -.0759 .6250 桔 \ 胸 -.3250 .3855 .0000 紅 \ 頭 -.2000 .6310 .0000 藍 \ 右耳 -.4500 .6310 .7500 青 \ 左耳 .6050 -.6720 .5420 紫 \ 尾 \ ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ) .7 +
七巧板 Redux8 blue
Anonymous
'25 Apr 19
\ tangram_14 七巧板 20161118 陳爽 \ 改最後列 可執行 例1 例2 例3 或 例4 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y swap - dup * x rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( 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 2 / 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 .0625 mod .005 > y .0625 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 ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七彩板組圖範例 0 0 0 \ 開始要先 全黑 : 例1 \ 彩板拼成 方形 .500 .625 .000 綠 .375 .500 .000 黃 .687 .625 .000 藍 .625 .500 .000 紅 .500 .437 .000 青 .437 .312 .000 紫 .625 .375 .000 桔 網格 ; : 例2 \ 彩板散開 各自每 10 秒轉 1 圈 .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 \ 彩板拼成 貓形 .561 .145 .125 綠 \ 腿 .521 .400 .000 黃 \ 身 .400 .456 .625 桔 \ 胸 .345 .698 .000 紅 \ 頭 .405 .819 .000 藍 \ 右耳 .275 .819 .750 青 \ 左耳 .802 .164 .542 紫 \ 尾 網格 ; : 例4 \ 彩板 隨時間週期 翻轉移動 拼成 方形 與 貓型 .500 .625 .000 .561 .145 .125 中間位置方向 綠 \ 腿 .375 .500 .000 .521 .400 .000 中間位置方向 黃 \ 身 .687 .625 .000 .405 .819 .000 中間位置方向 藍 \ 右耳 .625 .500 .000 .345 .698 .000 中間位置方向 紅 \ 頭 .500 .437 .000 .275 .819 .750 中間位置方向 青 \ 左耳 .437 .312 .000 .802 .164 .542 中間位置方向 紫 \ 尾 .625 .375 .000 .400 .456 .625 中間位置方向 桔 \ 胸 網格 ; \ 改下列 可選擇執行 例1, 例2, 例3, 或 例4 例4
七巧板 Redux14
陳爽
'25 Apr 19
\ tangram_12 七巧板 20161118 陳爽 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y swap - dup * x rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .01 > -rot ( 洞 X Y ) x rot - ( 洞 Y x' ) 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 * ( 洞 r' a' ) 2dup cos * -rot ( 洞 x" r' a' ) sin * ( 洞 x" y" ) ; \ 從某值到另值隨時間週期取對應中間值 : 中間值 ( x0 x1 -- x ) over - t 2 / 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 .006 > y .1 mod .006 > * ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 綠 ( 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 ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七彩板組圖範例 0 0 0 \ 開始要先 全黑 ( 例1. 彩板拼成 方形 .500 .625 .000 綠 .375 .500 .000 黃 .687 .625 .000 藍 .625 .500 .000 紅 .500 .437 .000 青 .437 .312 .000 紫 .625 .375 .000 桔 網格 \ ) ( 例2. 彩板散開 各自每 10 秒轉 1 圈 .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. 彩板拼成 貓形 .561 .145 .125 綠 \ 腿 .521 .400 .000 黃 \ 身 .400 .456 .625 桔 \ 胸 .345 .698 .000 紅 \ 頭 .405 .819 .000 藍 \ 右耳 .275 .819 .750 青 \ 左耳 .802 .164 .542 紫 \ 尾 網格 \ ) \ ( 例4. 彩板 隨時間週期 翻轉移動 拼成 方形 與 貓型 .500 .625 .000 .561 .145 .125 中間位置方向 綠 \ 腿 .375 .500 .000 .521 .400 .000 中間位置方向 黃 \ 身 .687 .625 .000 .405 .819 .000 中間位置方向 藍 \ 右耳 .625 .500 .000 .345 .698 .000 中間位置方向 紅 \ 頭 .500 .437 .000 .275 .819 .750 中間位置方向 青 \ 左耳 .437 .312 .000 .802 .164 .542 中間位置方向 紫 \ 尾 .625 .375 .000 .400 .456 .625 中間位置方向 桔 \ 胸 網格 \ )
七巧板 Redux12
陳爽
'25 Apr 19
\ tangram_11 七巧板 20161118 陳爽 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y swap - dup * x rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .01 > -rot ( 洞 X Y ) x rot - ( 洞 Y x' ) 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 * ( 洞 r' a' ) 2dup cos * -rot ( 洞 x" r' a' ) sin * ( 洞 x" y" ) ; \ 從某值到另值隨時間週期取對應中間值 : 中間值 ( x0 x1 -- x ) over - t 2 / 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 .006 > y .1 mod .006 > * ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ : 綠 ( 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 ) ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 七彩板組圖範例 0 0 0 \ 開始要先 全黑 ( 例1. 彩板拼成 方形 .500 .625 .000 綠 .375 .500 .000 黃 .687 .625 .000 藍 .625 .500 .000 紅 .500 .437 .000 青 .437 .312 .000 紫 .625 .375 .000 桔 網格 \ ) ( 例2. 彩板散開 各自每 10 秒轉 1 圈 .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. 彩板拼成 貓形 .561 .145 .125 綠 \ 腿 .521 .400 .000 黃 \ 身 .400 .456 .625 桔 \ 胸 .345 .698 .000 紅 \ 頭 .405 .819 .000 藍 \ 右耳 .275 .819 .750 青 \ 左耳 .802 .164 .542 紫 \ 尾 網格 \ ) ( 例4. 彩板 隨時間週期 翻轉移動 拼成 方形 與 貓型 .500 .625 .000 .561 .145 .125 中間位置方向 綠 \ 腿 .375 .500 .000 .521 .400 .000 中間位置方向 黃 \ 身 .687 .625 .000 .405 .819 .000 中間位置方向 藍 \ 右耳 .625 .500 .000 .345 .698 .000 中間位置方向 紅 \ 頭 .500 .437 .000 .275 .819 .750 中間位置方向 青 \ 左耳 .437 .312 .000 .802 .164 .542 中間位置方向 紫 \ 尾 .625 .375 .000 .400 .456 .625 中間位置方向 桔 \ 胸 網格 \ )
七巧板 Redux11
陳爽
'25 Apr 19
\ tangram_10 七巧板 20161118 陳爽 \ 任意點 x,y 之座標 原點置中 值域放大 : x x 2 * .5 - ; \ -1 < x < 1 : y y 2 * .5 - ; \ -1 < y < 1 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y .5 - swap - dup * x .5 - rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .02 > -rot ( 洞 X Y ) x .5 - rot - ( 洞 Y x' ) y -.5 + rot - ( 洞 x' y' ) over 2 ** over 2 ** + sqrt 1.04 * -rot ( 洞 r x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r a ) 2pi * ( 洞 r a' ) 2dup cos * -rot ( 洞 x" r a' ) sin * ( 洞 x" y" ) ; : 綠 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.25 > -rot ( R G B 洞 x"+y">-.25 x" y" ) dup >r - .25 < ( R G B 洞 x"+y">-.25 x"-y"<.25 ) r> .25 < ( 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 - .25 < -rot ( R G B 洞 x"-y"<.25 x" y" ) over >r + .25 < r> ( R G B 洞 x"-y"<.25 x"+y"<.25 x" ) -.25 > ( 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 - -.125 > -rot ( R G B 洞 x"-y">-.125 x" y" ) over >r + -.125 > r> ( R G B 洞 x"-y">0 y"<.25 x" ) .125 < ( 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 -.25 > swap ( R G B 洞 x"-y" x"+y">-.25 x"+y" ) .25 < rot ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y" ) dup .25 < swap ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y"<.25 x"-y" ) -.25 > ( 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 + .125 < -rot ( R G B 洞 x"+y"<.125 x" y" ) dup >r - -.125 > ( R G B 洞 x"+y">-.25 x"-y">-.125 ) r> -.125 > ( 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 -.25 > swap ( R G B 洞 x"-y">-.25 x"-y" ) .25 < rot ( R G B 洞 x"-y">-.25 x"-y"<.25 y" ) dup .125 < swap ( R G B 洞 x"-y">-.25 x"-y"<.25 y" y"<.125 y" ) -.125 > ( 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" ) .25 < rot ( R G B 洞 x"-y">0 y"<.25 x" ) -.25 > ( R G B 洞 x"-y">0 y"<.25 x">-.25 ) * * * >r rot r@ + rot r> 2 / + rot ( R' G' B ) ; \ ( A 七彩板組圖範例 0 0 0 \ 開始要先 全黑 ( A1. 拼成 方形 .0000 .2500 0 綠 -.2500 .0000 0 黃 .3750 .2500 0 藍 .2500 .0000 0 紅 .0000 -.1250 0 青 -.1250 -.3750 0 紫 .2500 -.2500 0 桔 \ ) ( A2. 散開 各自每 10 秒轉 1 圈 : a t 10 / negate ; -.2500 .5000 a 綠 -.5000 -.0000 a 黃 .6250 .5000 a 藍 .3125 .1875 a 紅 .0000 -.1250 a 青 -.1250 -.6250 a 紫 .5000 -.2500 a 桔 \ ) ( A3. 拼成 貓形 .1200 -.7100 .1250 綠 \ 腿 .0420 -.2000 .0000 黃 \ 身 -.2000 -.0759 .6250 桔 \ 胸 -.3250 .3855 .0000 紅 \ 頭 -.2000 .6310 .0000 藍 \ 右耳 -.4500 .6310 .7500 青 \ 左耳 .6050 -.6720 .5420 紫 \ 尾 \ ) \ ( A4. 方形 翻轉移動 : a ( x0 x1 -- x ) over - t 2.5 / sin 2 / .5 + * + ; : a ( X0 Y0 A0 X1 Y1 A1 -- X Y A ) >r rot r> ( X0 Y0 X1 Y1 A0 A1 ) a >r ( X0 Y0 X1 Y1 ) >r swap r> ( X0 X1 Y0 Y1 ) a >r ( X0 X1 ) a r> r> ( X Y A ) ; .0000 .2500 .0000 .1200 -.7100 .1250 a 綠 \ 腿 -.2500 .0000 .0000 .0420 -.2000 .0000 a 黃 \ 身 .3750 .2500 .0000 -.2000 .6310 .0000 a 藍 \ 右耳 .2500 .0000 .0000 -.3250 .3855 .0000 a 紅 \ 頭 .0000 -.1250 .0000 -.4500 .6310 .7500 a 青 \ 左耳 -.1250 -.3750 .0000 .6050 -.6720 .5420 a 紫 \ 尾 \ .2500 -.2500 .0000 -.2000 -.0759 .6250 a 桔 \ 胸 \ ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ )
七巧板 Redux10
陳爽
'25 Apr 19
\ tangram_08 七巧板 20161118 陳爽 \ 任意點 x,y 之座標 原點置中 值域放大 : x x 2 * .5 - ; \ -1 < x < 1 : y y 2 * .5 - ; \ -1 < y < 1 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y .5 - swap - dup * x .5 - rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 負片影像: 0 變 1, 1 變 0 : 反 1 swap - ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .02 > -rot ( 洞 X Y ) x .5 - rot - ( 洞 Y x' ) y -.5 + rot - ( 洞 x' y' ) over 2 ** over 2 ** + sqrt 1.04 * -rot ( 洞 r x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r a ) 2pi * ( 洞 r a' ) 2dup cos * -rot ( 洞 x" r a' ) sin * ( 洞 x" y" ) ; : 綠 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.25 > -rot ( R G B 洞 x"+y">-.25 x" y" ) dup >r - .25 < ( R G B 洞 x"+y">-.25 x"-y"<.25 ) r> .25 < ( 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 - .25 < -rot ( R G B 洞 x"-y"<.25 x" y" ) over >r + .25 < r> ( R G B 洞 x"-y"<.25 x"+y"<.25 x" ) -.25 > ( 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 - -.125 > -rot ( R G B 洞 x"-y">-.125 x" y" ) over >r + -.125 > r> ( R G B 洞 x"-y">0 y"<.25 x" ) .125 < ( 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 -.25 > swap ( R G B 洞 x"-y" x"+y">-.25 x"+y" ) .25 < rot ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y" ) dup .25 < swap ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y"<.25 x"-y" ) -.25 > ( 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 + .125 < -rot ( R G B 洞 x"+y"<.125 x" y" ) dup >r - -.125 > ( R G B 洞 x"+y">-.25 x"-y">-.125 ) r> -.125 > ( 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 -.25 > swap ( R G B 洞 x"-y">-.25 x"-y" ) .25 < rot ( R G B 洞 x"-y">-.25 x"-y"<.25 y" ) dup .125 < swap ( R G B 洞 x"-y">-.25 x"-y"<.25 y" y"<.125 y" ) -.125 > ( 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" ) .25 < rot ( R G B 洞 x"-y">0 y"<.25 x" ) -.25 > ( R G B 洞 x"-y">0 y"<.25 x">-.25 ) * * * >r rot r@ + rot r> 2 / + rot ( R' G' B ) ; \ ( A 七彩板組圖範例 0 0 0 \ 全黑 ( A1. 拼成方形 .0000 .2500 0 綠 -.2500 .0000 0 黃 .3750 .2500 0 藍 .2500 .0000 0 紅 .0000 -.1250 0 青 -.1250 -.3750 0 紫 .2500 -.2500 0 桔 \ ) ( A2. 方形散開 -.2500 .5000 0 綠 -.5000 -.0000 0 黃 .6250 .5000 0 藍 .3125 .1875 0 紅 .0000 -.1250 0 青 -.1250 -.6250 0 紫 .5000 -.2500 0 桔 \ ) \ ( A3. 貓 .1200 -.7100 .1250 綠 \ 腿 .0420 -.2000 .0000 黃 \ 身 -.2000 -.0759 .6250 桔 \ 胸 -.3250 .3855 .0000 紅 \ 頭 -.2000 .6310 .0000 藍 \ 右耳 -.4500 .6310 .7500 青 \ 左耳 .6050 -.6720 .5420 紫 \ 尾 \ ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ )
七巧板 Redux8
陳爽
'25 Apr 19
\ tangram_07 七巧板 20161118 陳爽 \ 任意點 x,y 之座標 原點置中 值域放大 : x x 2 * .5 - ; \ -1 < x < 1 : y y 2 * .5 - ; \ -1 < y < 1 \ 指定點 X,Y 至任意點 x,y 之距離 r : r ( X Y -- r ) y .5 - swap - dup * x .5 - rot - dup * + sqrt ; \ 兩倍圓周率 : 2pi pi pi + ; \ 負片影像: 0 變 1, 1 變 0 : 反 1 swap - ; \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 原點 X,Y 轉軸 A 角度 ( 0 右 .25 上 .5 左 .75 下 ) : 座標轉換 ( X Y A -- x" y" ) >r 2dup r .02 > -rot ( 洞 X Y ) x .5 - rot - ( 洞 Y x' ) y -.5 + rot - ( 洞 x' y' ) over 2 ** over 2 ** + sqrt 1.04 * -rot ( 洞 r x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r a ) 2pi * ( 洞 r a' ) 2dup cos * -rot ( 洞 x" r a' ) sin * ( 洞 x" y" ) ; : 綠 ( R G B X Y A -- R G' B ) 座標轉換 ( R G B 洞 x" y" ) 2dup + -.25 > -rot ( R G B 洞 x"+y">-.25 x" y" ) dup >r - .25 < ( R G B 洞 x"+y">-.25 x"-y"<.25 ) r> .25 < ( 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 - .25 < -rot ( R G B 洞 x"-y"<.25 x" y" ) over >r + .25 < r> ( R G B 洞 x"-y"<.25 x"+y"<.25 x" ) -.25 > ( 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 - -.125 > -rot ( R G B 洞 x"-y">-.125 x" y" ) over >r + -.125 > r> ( R G B 洞 x"-y">0 y"<.25 x" ) .125 < ( 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 -.25 > swap ( R G B 洞 x"-y" x"+y">-.25 x"+y" ) .25 < rot ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y" ) dup .25 < swap ( R G B 洞 x"+y">-.25 x"+y"<.25 x"-y"<.25 x"-y" ) -.25 > ( 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 + .125 < -rot ( R G B 洞 x"+y"<.125 x" y" ) dup >r - -.125 > ( R G B 洞 x"+y">-.25 x"-y">-.125 ) r> -.125 > ( 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 -.25 > swap ( R G B 洞 x"-y">-.25 x"-y" ) .25 < rot ( R G B 洞 x"-y">-.25 x"-y"<.25 y" ) dup .125 < swap ( R G B 洞 x"-y">-.25 x"-y"<.25 y" y"<.125 y" ) -.125 > ( 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" ) .25 < rot ( R G B 洞 x"-y">0 y"<.25 x" ) -.25 > ( R G B 洞 x"-y">0 y"<.25 x">-.25 ) * * * >r rot r@ + rot r> 2 / + rot ( R' G' B ) ; \ ( A 七彩板組圖範例 0 0 0 \ 全黑 \ ( A1. 拼成方形 .0000 .2500 0 綠 -.2500 .0000 0 黃 .3750 .2500 0 藍 .2500 .0000 0 紅 .0000 -.1250 0 青 -.1250 -.3750 0 紫 .2500 -.2500 0 桔 \ ) ( A2. 方形散開 -.2500 .5000 0 綠 -.5000 -.0000 0 黃 .6250 .5000 0 藍 .3125 .1875 0 紅 .0000 -.1250 0 青 -.1250 -.6250 0 紫 .5000 -.2500 0 桔 \ ) ( A3. 貓 .1200 -.7100 .1250 綠 \ 腿 .0420 -.2000 .0000 黃 \ 身 -.2000 -.0759 .6250 桔 \ 胸 -.3250 .3855 .0000 紅 \ 頭 -.2000 .6310 .0000 藍 \ 右耳 -.4500 .6310 .7500 青 \ 左耳 .6050 -.6720 .5420 紫 \ 尾 \ ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ )
七巧板 Redux7
陳爽
'25 Apr 19
\ 6th try : x x 2 * .5 - ; : y y 2 * .5 - ; \ 縮小置中 : r ( X Y -- r ) y .5 - swap - 2 ** x .5 - rot - 2 ** + sqrt ; : 2pi pi pi + ; : a ( X Y -- a ) y .5 - swap - x .5 - rot - atan2 pi + 2pi / .5 + 1 mod ; : u ( X Y A -- u ) >r 2dup r -rot a r> - 2pi * cos * ; : v ( X Y A -- v ) >r 2dup r -rot a r> - 2pi * sin * ; : 洞 ( X Y -- ) r .03 > ; : 格 .125 mod .01 > * ; : 綠 ( X Y -- ) 2dup x rot - x 格 ( y x-X ) y rot .25 - - y 格 ( x-X y-Y ) >r dup r@ + 1 > over r@ - 0 < * r@ 1 < * swap drop r> drop rot rot 洞 * ; : 藍 ( X Y -- ) 2dup x rot .375 - - x 格 ( y x-X ) y rot .25 - - y 格 ( x-X y-Y ) >r dup r@ - 0 > over r@ + 1.5 > * over 1 < * swap drop r> drop rot rot 洞 * ; : 紅 ( X Y -- ) 2dup x rot .25 - - x 格 ( y x-X ) y rot - y 格 ( x-X y-Y ) >r dup r@ - 0 > over r@ + 1.5 < * over r@ - .5 < * over r@ + 1 > * swap drop r> drop rot rot 洞 * ; : 黃 ( X Y -- ) 2dup x rot .25 + - x 格 ( y x-X ) y rot - y 格 ( x-X y-Y ) >r dup r@ + 1 < over r@ - 0 < * over 0 > * swap drop r> drop rot rot 洞 * ; : 青 ( X Y -- ) 2dup x rot - x 格 ( y x-X ) y rot .125 + - y 格 ( x-X y-Y ) >r r@ .25 > over r@ - 0 > * over r@ + 1 < * swap drop r> drop rot rot 洞 * ; : 紫 ( X Y -- ) 2dup x rot .125 + - x 格 ( y x-X ) y rot .375 + - y 格 ( x-X y-Y ) >r r@ .25 < over r@ - 0 > * over r@ - .5 < * r@ 0 > * swap drop r> drop rot rot 洞 * ; : 桔 ( X Y -- ) 2dup x rot .25 - - x 格 ( y x-X ) y rot .25 + - y 格 ( x-X y-Y ) >r dup r@ - .5 > over 0 > * over 1 < * r@ 0 > * swap drop r> drop rot rot 洞 * ; : 綠 -.25 .5 綠 ; : 黃 -.5 0 黃 ; : 藍 .625 .5 藍 ; : 紅 .3125 .1875 紅 ; : 青 0 -.125 青 ; : 紫 -.125 -.625 紫 ; : 桔 .5 -.25 桔 ; : 靜 綠 黃 藍 紅 青 紫 桔 + + + + + + ; : 座標平移 ( X Y -- x' y' ) x .5 - rot - ( Y x-.5-X ) y -.5 + rot - ( x-.5-X y-.5-Y ) ; : >極座標 ( X Y A -- 洞 r a ) >r 2dup 洞 -rot ( 洞 X Y ) 座標平移 ( 洞 x' y' ) over 2 ** over 2 ** + sqrt -rot ( 洞 r' x' y' ) swap atan2 2pi / r> - 1 mod ( 洞 r a ) ; : 極座標> ( r a -- x" y" ) 2pi * ( r a' ) 2dup cos * -rot ( r*cos(a') r a' ) sin * ( r*cos(a') r*sin(a') ) ; : 座標轉換 ( X Y A -- x" y" ) >極座標 ( 洞 r a ) 極座標> ( 洞 x" y" ) ; : 秒動角度 t 60 / negate ; : 綠 ( X Y A -- ) 座標轉換 ( 洞 x" y" ) 2dup + -.25 > -rot ( 洞 x"+y">-.25 x" y" ) dup >r - .25 < ( 洞 x"+y">-.25 x"-y"<.25 ) r> .25 < ( 洞 x"+y"<-.25 x"-y"<.25 y"<.25 ) * * * ; : 綠 -.25 .5 秒動角度 綠 ; \ 綠 : 黃 ( X Y A -- ) 座標轉換 ( 洞 x" y" ) 2dup - .25 < -rot ( 洞 x"-y"<.25 x" y" ) over >r + .25 < r> ( 洞 x"-y"<.25 x"+y"<.25 x" ) -.25 > ( 洞 x"-y"<.25 x"+y"<.25 x">-.25 ) * * * ; : 黃 -.5 0 秒動角度 黃 ; \ 黃 : 藍 ( X Y A -- ) 座標轉換 ( 洞 x" y" ) 2dup - -.125 > -rot ( 洞 x"-y">-.125 x" y" ) over >r + -.125 > r> ( 洞 x"-y">0 y"<.25 x" ) .125 < ( 洞 x"-y">0 y"<.25 x">-.25 ) * * * ; : 藍 .625 .5 秒動角度 藍 ; \ 藍 : 紅 ( X Y A -- ) 座標轉換 ( 洞 x" y" ) 2dup - -rot + ( 洞 x"-y" x"+y" ) dup -.25 > swap ( 洞 x"-y" x"+y">-.25 x"+y" ) .25 < rot ( 洞 x"+y">-.25 x"+y"<.25 x"-y" ) dup .25 < swap ( 洞 x"+y">-.25 x"+y"<.25 x"-y"<.25 x"-y" ) -.25 > ( 洞 x"+y">-.25 x"+y"<.25 x"-y"<.25 x"-y">-.25 ) * * * * ; : 紅 .3125 .1875 秒動角度 紅 ; \ 紅 : 青 ( X Y A -- ) 座標轉換 ( 洞 x" y" ) 2dup + .125 < -rot ( 洞 x"+y"<.125 x" y" ) dup >r - -.125 > ( 洞 x"+y">-.25 x"-y">-.125 ) r> -.125 > ( 洞 x"+y"<-.25 x"-y"<-.125 y">-.125 ) * * * ; : 青 0 -.125 秒動角度 青 ; \ 青 : 紫 ( X Y A -- ) 座標轉換 ( 洞 x" y" ) swap over - ( 洞 y" x"-y" ) dup -.25 > swap ( 洞 x"-y">-.25 x"-y" ) .25 < rot ( 洞 x"-y">-.25 x"-y"<.25 y" ) dup .125 < swap ( 洞 x"-y">-.25 x"-y"<.25 y" y"<.125 y" ) -.125 > ( 洞 x"-y">-.25 x"-y"<.25 y" y"<.125 y">-.125 ) * * * * ; : 紫 -.125 -.625 秒動角度 紫 ; \ 紫 : 桔 ( X Y A -- ) 座標轉換 ( 洞 x" y" ) 2dup - 0 > rot ( 洞 x"-y">0 x" y" ) .25 < rot ( 洞 x"-y">0 y"<.25 x" ) -.25 > ( 洞 x"-y">0 y"<.25 x">-.25 ) * * * ; : 桔 .5 -.25 秒動角度 桔 ; \ 桔 靜 黃 藍 紅 紫 + + +
七巧板 Redux6
陳爽
'25 Apr 19
\ 5th try 增加/取消 前置反斜線及空格 起動/停止 此段落 ( 綠 黃 藍 紅 青 紫 桔 紅 0 1 0 1 0 1 1 綠 1 1 0 0 1 0 .5 藍 0 0 1 0 1 1 0 ) : x x 2 * .5 - ; : y y 2 * .5 - ; \ 縮小置中 : r ( X Y -- r ) y .5 - swap - 2 ** x .5 - rot - 2 ** + sqrt ; : c ( X Y -- ) r .03 > ; : 格 .125 mod .01 > * ; : 綠 ( X Y -- ) 2dup x rot - x 格 ( y x-X ) y rot .25 - - y 格 ( x-X y-Y ) >r dup r@ + 1 > over r@ - 0 < * r@ 1 < * swap drop r> drop rot rot c * ; : 藍 ( X Y -- ) 2dup x rot .375 - - x 格 ( y x-X ) y rot .25 - - y 格 ( x-X y-Y ) >r dup r@ - 0 > over r@ + 1.5 > * over 1 < * swap drop r> drop rot rot c * ; : 紅 ( X Y -- ) 2dup x rot .25 - - x 格 ( y x-X ) y rot - y 格 ( x-X y-Y ) >r dup r@ - 0 > over r@ + 1.5 < * over r@ - .5 < * over r@ + 1 > * swap drop r> drop rot rot c * ; : 黃 ( X Y -- ) 2dup x rot .25 + - x 格 ( y x-X ) y rot - y 格 ( x-X y-Y ) >r dup r@ + 1 < over r@ - 0 < * over 0 > * swap drop r> drop rot rot c * ; : 青 ( X Y -- ) 2dup x rot - x 格 ( y x-X ) y rot .125 + - y 格 ( x-X y-Y ) >r r@ .25 > over r@ - 0 > * over r@ + 1 < * swap drop r> drop rot rot c * ; : 紫 ( X Y -- ) 2dup x rot .125 + - x 格 ( y x-X ) y rot .375 + - y 格 ( x-X y-Y ) >r r@ .25 < over r@ - 0 > * over r@ - .5 < * r@ 0 > * swap drop r> drop rot rot c * ; : 桔 ( X Y -- ) 2dup x rot .25 - - x 格 ( y x-X ) y rot .25 + - y 格 ( x-X y-Y ) >r dup r@ - .5 > over 0 > * over 1 < * r@ 0 > * swap drop r> drop rot rot c * ; : 綠 -.25 .5 綠 ; : 黃 -.5 0 黃 ; : 藍 .625 .5 藍 ; : 紅 .3125 .1875 紅 ; : 青 0 -.125 青 ; : 紫 -.125 -.625 紫 ; : 桔 .5 -.25 桔 ; : tangram ( 紅 ) 黃 紅 紫 桔 + + + ( 綠 ) 綠 黃 青 桔 2 / + + + ( 藍 ) 藍 青 紫 + + ; tangram
七巧板 Redux5
陳爽
'25 Apr 19
: x1 x 4 t * sin cos / ; : y1 y 4 t * sin cos / ; x1 y1 x1 5* sin y1 5 * sin * + x1 .5 - dup * y1 .5 - dup * + .25 <
Color Ball Redux
Stainless
'25 Apr 19
( 綠 黃 藍 紅 青 紫 桔 紅 0 1 0 1 0 1 1 綠 1 1 0 0 1 0 .5 藍 0 0 1 0 1 1 0 ) : x x 2 * .5 - ; : y y 2 * .5 - ; \ 縮小置中 : 綠 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ + 1 > over r@ - 0 < * r@ 1 < * swap drop r> drop ; : 黃 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ + 1 < over r@ - 0 < * over 0 > * swap drop r> drop ; : 藍 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ - 0 > over r@ + 1.5 > * over 1 < * swap drop r> drop ; : 紅 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ - 0 > over r@ + 1.5 < * over r@ - .5 < * over r@ + 1 > * swap drop r> drop ; : 青 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r r@ .25 > over r@ - 0 > * over r@ + 1 < * swap drop r> drop ; : 紫 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r r@ .25 < over r@ - 0 > * over r@ - .5 < * r@ 0 > * swap drop r> drop ; : 桔 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ - .5 > over 0 > * over 1 < * r@ 0 > * swap drop r> drop ; : 動 dup t sin * + ; : 綠 -.07 動 .25 動 綠 ; : 黃 -.21 動 .11 動 黃 ; : 藍 .21 動 .23 動 藍 ; : 紅 .07 動 .11 動 紅 ; : 青 -.07 動 -.04 動 青 ; : 紫 -.27 動 -.23 動 紫 ; : 桔 .14 動 -.14 動 桔 ; : tangram ( 紅 ) 黃 紅 紫 桔 + + + ( 綠 ) 綠 黃 青 桔 .5 * + + + ( 藍 ) 藍 青 紫 + + ; tangram
七巧板 Redux4
陳爽
'25 Apr 19
( 綠 黃 藍 紅 青 紫 桔 紅 0 1 0 1 0 1 1 綠 1 1 0 0 1 0 .5 藍 0 0 1 0 1 1 0 ) : x x 2 * .5 - ; : y y 2 * .5 - ; \ 縮小置中 : 綠 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ + 1 > over r@ - 0 < * r@ 1 < * swap drop r> drop ; : 黃 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ + 1 < over r@ - 0 < * over 0 > * swap drop r> drop ; : 藍 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ - 0 > over r@ + 1.5 > * over 1 < * swap drop r> drop ; : 紅 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ - 0 > over r@ + 1.5 < * over r@ - .5 < * over r@ + 1 > * swap drop r> drop ; : 青 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r r@ .25 > over r@ - 0 > * over r@ + 1 < * swap drop r> drop ; : 紫 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r r@ .25 < over r@ - 0 > * over r@ - .5 < * r@ 0 > * swap drop r> drop ; : 桔 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ - .5 > over 0 > * over 1 < * r@ 0 > * swap drop r> drop ; : 動 dup t sin * + ; : 綠 -.07 動 .25 動 綠 ; : 黃 -.21 動 .11 動 黃 ; : 藍 .21 動 .11 動 藍 ; : 紅 .07 動 .11 動 紅 ; : 青 -.07 動 -.04 動 青 ; : 紫 -.27 動 -.23 動 紫 ; : 桔 .14 動 -.14 動 桔 ; : tangram ( 紅 ) 黃 紅 紫 桔 + + + ( 綠 ) 綠 黃 青 桔 .5 * + + + ( 藍 ) 藍 青 紫 + + ; tangram
七巧板 Redux3
陳爽
'25 Apr 19
( 綠 黃 藍 紅 青 紫 桔 紅 0 1 0 1 0 1 1 綠 1 1 0 0 1 0 .5 藍 0 0 1 0 1 1 0 ) : x x 2 * .5 - ; : y y 2 * .5 - ; \ 縮小置中 : 綠 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ + 1 > over r@ - 0 < * r@ 1 < * swap drop r> drop ; : 黃 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ + 1 < over r@ - 0 < * over 0 > * swap drop r> drop ; : 藍 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ - 0 > over r@ + 1.5 > * over 1 < * swap drop r> drop ; : 紅 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ - 0 > over r@ + 1.5 < * over r@ - .5 < * over r@ + 1 > * swap drop r> drop ; : 青 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r r@ .25 > over r@ - 0 > * over r@ + 1 < * swap drop r> drop ; : 紫 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r r@ .25 < over r@ - 0 > * over r@ - .5 < * r@ 0 > * swap drop r> drop ; : 桔 ( X Y -- ) x rot - ( y x-X ) y rot - ( x-X y-Y ) >r dup r@ - .5 > over 0 > * over 1 < * r@ 0 > * swap drop r> drop ; : 綠 -.10 .35 綠 ; : 黃 -.30 .15 黃 ; : 藍 .30 .35 藍 ; : 紅 .10 .15 紅 ; : 青 -.10 -.05 青 ; : 紫 -.38 -.33 紫 ; : 桔 .30 -.25 桔 ; : tangram ( 紅 ) 黃 紅 紫 桔 + + + ( 綠 ) 綠 黃 青 桔 .5 * + + + ( 藍 ) 藍 青 紫 + + ; tangram
七巧板 Redux2
陳爽
'25 Apr 19
Next