NB. ************************************ NB. Chidori koushi NB. for Nenga_2017 NB. ********************************************** require 'plot numeric trig png' load '~addons/graphics/fvj4/dwin.ijs' NB. ************************************************* NB. Usage: 67 90 160 chidori_line 15 15 NB. Usage: 0 181 110 hokusai_chidori2 20 20 NB. ********************************************** NB. Chidori(1) DAT=: 4 6,4 5,5 5,4 4,4 3,2 1,:2 2 DAT=: DAT,3 3,2 3,2 4,1 3,0 3,2 5,3 5,: 4 6 C0PARAM=: 4 6;4 0;2 2 NB. sabun x0,Y0 chidori_line=: 4 : 0 NB. Usage: 67 90 160 chidori_line 15 15 'Color0 '=. x Size=. y tmp0=: Size calc_each_poly (. find_center tmp1) dwin '' Color0 dline L:0 tmp1 ) NB. ================================================ NB. Drawing Tools hrom hokusai_tool and hokusai_bezier NB. dwin and line polydon mk_diff_sub0=:4 : 0 NB. revised new 2016/12/13 NB. swing head y by x&Y NB. Usage: 4 5 mk_diff_sub0 MCPARAM //10 5;_2 5;6 _1 NB. x is size-of-matrix NB. y is ( 1{ y Y02=: index { base2 Y0=: >({Y01) - L:0 Y02 NB. swinghead Y0 tmp=: |: >{ L:0 X0 +"1 L:0 Y0 tmp=. tmp - L:0 base ) NB. revised 2016/12 find_center=: 3 : 0 MinX=: >./ {."1 ;{."1 y NB. max X of first column MinY=: >./ {:"1 ; {: y NB. max y of last line MaxX=. <./ {."1 ;{:"1 y NB. min y of last column MaxY=: <./ {:"1 ;{. y NB. min of first raw 'MinY MaxY'=: /:~ MinY,MaxY NB. if Y is closs , exchange Y tmp=:MinX,MinY, MaxX,MaxY shorter=: <./ ; -/@|.(L:0) _2<\0 2 1 3{tmp (2{.tmp) ,(2{. tmp) + shorter NB. mk square ) NB. --make-Komon patarn----------------------------------- calc_each_poly=: 4 : 0 NB. Usage: 4 5 calc_each_poly (;("2),. NB. Usage: (short) calc_bezier4 L0 tmp0=.|: mat_bezier4 +/ . * y fx=. ({. tmp0)&p. NB. set x(t) polynomial coefficients a0+a1xi+a2x2^2... fy=. ({: tmp0)&p. NB. set y(t) t01=. steps 0 1 100 NB. divede [0,1] for smooth Besier curves (fx t01),.fy t01 NB. calc polynomial ) calc_bezier3=: 3 : 0 NB. dydrad bezier tmp0=.|: mat_bezier3 +/ . * y fx=. ({. tmp0)&p. NB. make x(t) polynomial fy=. ({: tmp0)&p. NB. same y(t) t01=. steps 0 1 100 NB. divede [0,1] for smooth Besier curves (fx t01),.fy t01 NB. calc polynomial ) form_bezier4=: 3 : 0 NB. make all 4 points box only NB. from each overlaped P(0,1,2,3) index=. (i.# y) e. 3*i. # y tmp0=. index <;.1 y (}: tmp0) , L:0 }. {. L:0 tmp0 ) form_bezier3=: 3 : 0 NB. Usage: form_bezier3 a=. i. 16 2 ind=: (#y){. (;(# y)#<1 0) tmp=.ind <;.1 y (}:tmp) , L:0 }. {. L:0 tmp ) NB. ************************************** NB. Kitty for 3 years granddaughter NB. **********bezier4 NB. face0 KDATA0=: 1.5 5.3,_0.2 2 ,2.5 0 ,: 5 0 KDATA0=: KDATA0,7 _0.5 , 10 1.5 ,:8.6 4.0 NB. norse KDATA9=: 4.8 2.1 , 4.2 2 ,4 1.5,:4.8 1.4 KDATA9=: KDATA9,5.5 1.5 ,5.5 2,: 4.8 2.1 NB. eyes KDATA10=: 2.3 2.7 ,2.2 2,2.9 1.8,: 3.0 2.7 KDATA10=: KDATA10 ,3 3.4,2.5 3.2,:2.3 2.7 KDATA11=: 6.6 2.4 ,6.3 1.6,7 1.5,: 7.2 2.3 KDATA11=: KDATA11,7.4 3,6.6 2.9,:6.6 2.4 NB. ribbon1 KDATA12=: 6.9 5.8 ,7.2 6.5,6.2 8.2,: 5.0 6.2 KDATA12=: KDATA12,4.5 5,5.2 4.5,:6 5 KDATA13=: 7 4.2,7.5 3,8.2 3.1,: 8.6 4 KDATA13=: KDATA13 ,9.5 4.8 ,8.8 5.8 ,: 7.7 5.4 NB. **********bezier3 NB. face1 KDATA1=: 5.0 6.2,4 6.5 ,3.2 6.3,2.5 7,1.7 7.1 , 0.7 5.9,: 1.5 5.3 KDATA2=: 8.6 5.5,9 6 ,8.4 6.8,7.5 7,: 7 6.5 NB. 6 hige KDATA3=: _0.5 3,0.7 3.3,:1.5 3 KDATA4=: 0.1 2.1,0.8 2.5,:1.5 2.3 KDATA5=: 0.7 1.1,1.2 1.7,:1.8 1.6 KDATA6=: 8.2 2.7 ,8.8 3,: 9.5 2.7 KDATA7=: 8.2 2.2 ,8.9 2.4 ,: 9.5 1.4 KDATA8=: 7.9 1.4 ,8.5 1.4 ,: 9.3 0.4 NB. ribbon2 KDATA14=: 7 6,6.3 5.5 ,6 5, 6.5 4.2 ,: 7 4.2 KDATA14=: KDATA14,7.5 4.3 ,7.8 5.3,7.5 5.8 ,:7 6 KDATA15=: 6.6 5.6 ,5.9 5.8,: 6.2 5.2 KDATA16=: 7.7 4.8 ,8.1 4.3,: 7.5 4.5 KPARAM=:1.5 5.3 ;10 1;1 8 plot_kitty=: 3 : 0 NB. Usage: plot_kitty '' pd 'new' pd 'pensize 3' pd 'color blue' pd {|:; calc_bezier4 L:0 form_bezier4 KDATA0 pd {|:; calc_bezier4 L:0 form_bezier4 KDATA9 pd {|:; calc_bezier4 L:0 form_bezier4 KDATA10 pd {|:; calc_bezier4 L:0 form_bezier4 KDATA11 pd 'color green' pd {|:; calc_bezier4 L:0 form_bezier4 KDATA12 pd {|:; calc_bezier4 L:0 form_bezier4 KDATA13 NB. pd 'color blue' pd {|:; calc_bezier3 L:0 form_bezier3 KDATA1 pd {|:; calc_bezier3 L:0 form_bezier3 KDATA2 pd {|:; calc_bezier3 L:0 form_bezier3 KDATA3 pd {|:; calc_bezier3 L:0 form_bezier3 KDATA4 pd {|:; calc_bezier3 L:0 form_bezier3 KDATA5 pd {|:; calc_bezier3 L:0 form_bezier3 KDATA6 pd {|:; calc_bezier3 L:0 form_bezier3 KDATA7 pd {|:; calc_bezier3 L:0 form_bezier3 KDATA8 pd 'color green' pd {|:; calc_bezier3 L:0 form_bezier3 KDATA14 pd {|:; calc_bezier3 L:0 form_bezier3 KDATA15 pd {|:; calc_bezier3 L:0 form_bezier3 KDATA16 pd 'color red' pd {|: KDATA0 pd {|: KDATA9 pd {|: KDATA10 pd {|: KDATA11 pd {|: KDATA12 pd {|: KDATA13 NB. pd {|: KDATA1 pd {|: KDATA2 pd {|: KDATA3 pd {|: KDATA4 pd {|: KDATA5 pd {|: KDATA6 pd {|: KDATA7 pd {|: KDATA8 pd {|: KDATA14 pd {|: KDATA15 pd {|: KDATA16 pd 'show' ) hokusai_kitty =: 4 : 0 NB. Usage:(67 90 160;250 121 10) hokusai_kitty 10 10 'Color0 Color1'=. x Size=. y NB. --------- tmp0=. calc_bezier4 L:0 form_bezier4 KDATA0 tmp0=. >Size calc_each_poly (<; tmp0); Size calc_each_poly (< ;tmp1); Size calc_each_poly (<; tmp2); Size calc_each_poly (< ;tmp3); Size calc_each_poly (< ;tmp4); Size calc_each_poly (< ;tmp5); Size calc_each_poly (< ;tmp6); Size calc_each_poly (< ;tmp7); Size calc_each_poly (< ;tmp8); Size calc_each_poly (< ;tmp9); Size calc_each_poly (< ;tmp10); Size calc_each_poly (< ;tmp11); Size calc_each_poly (< ;tmp12); Size calc_each_poly (< ;tmp13); Size calc_each_poly (< ;tmp14); Size calc_each_poly (< ;tmp15); Size calc_each_poly (< ;tmp16); . find_center tmp0) dwin '' Color0 dline L:0 tmp0 Color0 dline L:0 tmp1 Color0 dline L:0 tmp2 Color0 dline L:0 tmp3 Color1 dline L:0 tmp4 Color1 dline L:0 tmp5 Color0 dline L:0 tmp6 Color0 dline L:0 tmp7 Color0 dline L:0 tmp8 Color0 dline L:0 tmp9 Color0 dpoly L:0 tmp10 Color0 dpoly L:0 tmp11 Color0 dline L:0 tmp12 Color0 dline L:0 tmp13 Color1 dline L:0 tmp14 Color1 dline L:0 tmp15 Color1 dline L:0 tmp16 ) hokusai_kitty0 =: 4 : 0 NB. drawing test NB. Usage: plot_kitty0 '' 'Color0 Color1'=. x Size=. y tmp0=: calc_bezier4 L:0 form_bezier4 KDATA0 tmp1=: >Size calc_each_poly (<; tmp0); . find_center tmp1) dwin '' Color0 dline L:0 tmp1 ) NB. ************************************************* NB. Usage: 67 90 160 chidori_line 15 15 NB. Usage: 0 181 110 hokusai_chidori2 20 20 NB. **********************************************