I think the hexagon looked nicer in its earlier form. To see that,
change the definition of decorate to no operation:

   decorate_colourchoice_=: ]

But I am trying to work up to making this be a palette for a paint
program and for that I am playing with different ideas of how to make
the color representation be useful in a physical sense.

Also, try the slider on the left (or, if you are using a windows os,
try using the arrows at the top and bottom of the slider).

Thanks,

-- 
Raul


On Sun, Dec 15, 2013 at 4:22 AM, Björn Helgason <[email protected]> wrote:
> The lines do not wrap on my Galaxy if I turn it sideways.
>
> Not bad the otherway round either.
>  On Dec 15, 2013 5:43 AM, "Raul Miller" <[email protected]> wrote:
>
>> Here's another draft. I do not know if anyone else has been able to
>> run this code (needs j602 and opengl), or cares to, but this is as
>> much an attempt on my part to resolve emailing issues as it is to
>> explain or propagate the code.
>>
>> Steps I have taken here include making sure no lines are longer than
>> 72 characters and making sure that @ is never followed by a letter (I
>> use @: instead).
>>
>> Anyways, here's a draft. I think it looks ok with send/undo so lets
>> see how the mailing list and archival system treats it:
>>
>> coclass 'colourchoice'
>> require 'jzopengl'
>> coinsert 'jzopengl'
>>
>> Note 'wd'
>>   p - parent window
>>   s - scrollbar -- S will be numeric value 0..255
>>       repesents distance along white/black diagonal
>>   c - color display
>> )
>>
>> NB. object constructor
>> create=:3 :0
>>   ogl=: ''conew'jzopengl'
>>   wd 'pc p;'
>>   wd 'xywh 0 0 10 256; cc s scrollbarv bottommove;'
>>   S=: 127
>>   wd 'set s 0 ',(":S),' 255 39;'
>>   wd 'xywh 10 0 256 256; cc c isigraph opengl rightmove bottommove;'
>>   wd 'pas 0 0; pshow;'
>> )
>>
>> NB. event handlers
>> p_close=: destroy
>>
>> p_c_paint=: 3 :0
>>   rc__ogl''
>>   glClear GL_COLOR_BUFFER_BIT
>>   draw L:0 S {:: IMAGES
>>   show__ogl''
>> )
>>
>> p_s_button=: 3 :0
>>   S=: 0 ". s
>>   wd 'setinvalid c'
>> )
>>
>> p_c_mbldown=: 3 :0
>>   trac 1
>> )
>>
>> p_c_mmove=: 3 :0
>>   trac TRACK
>> )
>>
>> p_c_mblup=: 3 :0
>>   trac 0
>> )
>>
>> NB. implementation
>>
>> destroy=: 3 :0
>>   destroy__ogl''
>>   wd'pclose'
>>   codestroy''
>> )
>>
>> NB. projection onto plane tangent to white/black axis of colour cube
>> X0=: 1 _1 1 * %: 1 5 1%6
>> Y0=: _1 0 1 * %: %2
>> coords=: +/ .*"1&(X0,:Y0)"1
>>
>> rms=: +/ &.: *:"1 NB. "root mean square"
>>
>> NB. use gift wrapping algorithm to find drawable order
>> NB. http://en.wikipedia.org/wiki/Gift_wrapping_algorithm
>> split1=: ,:@{. ; }.
>> car=:  0 {:: [     NB. ordered on convex hull
>> cdr=:  1 {:: [     NB. not ordered yet
>> NB. pick next corner based on angle:
>> choose=: cdr #~ [: (= >./) -@^.@:rms@(cdr -"1 {:@:car)
>> giftwrap=: i. 0 {:: (((car,]) ; cdr-.]) choose)^:(#@:cdr)@:split1
>>
>> CORNERPAIRS=: (#:i.8) {~ ~./:"1~8 8#:I.,1=rms-"1/~#:i.8
>> CORNERVERTS=: (([ +"1 (85%~i.86) */ -~)/)"2 CORNERPAIRS
>> NB. 256 = 86+85+85
>> COLOURSLICE=: (rms <@((giftwrap@:coords{])^:(2<#))@~./. ]),/CORNERVERTS
>> PALETTES=: (,. coords)&.> COLOURSLICE
>> NB. make white and black slices be non-empty to avoid errors:
>> PALETTES=: (<1 1 1 __ __ >."1 >254{PALETTES) 255} PALETTES
>> PALETTES=: (<0 0 0 _ _ <."1 >1{PALETTES) 0} PALETTES
>>
>> decorate=:3 :0
>>   NB. add small rectangles of solid color on edges of color slices
>>   cy=.3{."1 y
>>   ey=.3 4{"1 y
>>   vy=. ey-"1(+/%#)ey
>>   vec=. -(*-/ .* vy)*0,.0,.0,.0.01*(%rms)(vy-1|.vy)+/ .*0 _1,:1 0
>>   y;(y,"1 2 (vec+y),:"1 (1|.y));(vec+y),"1 2 (vec+1|.y),:"1 (1|.y)
>> )
>>
>> NB. also: put white first ("on top")
>> IMAGES=:  decorate&.> |.PALETTES
>>
>> corner=: 3 :0
>>   glColor3d 3{.y
>>   glVertex2d 3 4{y
>> )
>>
>> draw=: 3 :0"2
>>   glBegin GL_POLYGON
>>     corner"1 y
>>   glEnd''
>> )
>>
>> TRACK=: 0
>> trac=: 3 :0
>>   if. y+.TRACK do.
>>     smoutput y,TRACK,2 {. 0".sysdata
>>   end.
>>   TRACK=: y
>> )
>>
>> smoutput ''conew'colourchoice'
>>
>> Thanks,
>>
>> --
>> Raul
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to