And... I do not see the attachment at
http://jsoftware.com/pipermail/programming/2020-February/055193.html

The other copy seems to indicate that my attachment got the mime type
"application/octet-stream", despite it being text content (I was
hoping for "text/plain".)

That said, ... I should probably be experimenting on the chat forum.
But, also, I'm using gmail which does not seem to give me control over
the mime type of attachments (and researching this issue has lead me
into a maze of conflicting statements on the subject).

So, anyways... while I haven't eliminated the possibility that forum
.ijs attachments might work, I am slightly sceptical at this point.

Thanks,

-- 
Raul



On Fri, Feb 28, 2020 at 12:15 PM Raul Miller <rauldmil...@gmail.com> wrote:
>
> Hmm...
>
> I am attaching an example .ijs file to this response.
>
> I am also bcc'ing a copy of this message to an alternate email
> address, so that I can see how it gets treated outside the forums.
>
> Will the attachment show up at
> http://jsoftware.com/pipermail/programming/2020-February/date.html? (I
> will see, soon...)
>
> Thanks,
>
> --
> Raul
>
> On Fri, Feb 28, 2020 at 11:58 AM bill lam <bbill....@gmail.com> wrote:
> >
> > I think J forum actually accept text file attachments.
> > Attach .ijs file as .txt file probably work if email
> > client set mime type correctly.
> >
> > Fri, 28 Feb 2020, Raul Miller написал(а):
> > > This is getting to be long enough that it might help to use a resource
> > > like github (either a repository or a gist) or even pastebin (rather
> > > than email) to distribute it.
> > >
> > > (I'm still getting going for today, and haven't actually tried this,
> > > yet. But I'm anticipating some difficulties separating text from code
> > > and maybe chasing down implied pieces.)
> > >
> > > Thanks,
> > >
> > > --
> > > Raul
> > >
> > > On Fri, Feb 28, 2020 at 8:52 AM Brian Schott <schott.br...@gmail.com> 
> > > wrote:
> > > >
> > > > Bill, especially (Thomas, Raul, and others),
> > > >
> > > > Your comment regarding trying a simpler figure and simplifying the color
> > > > has led me to consider several alternatives. Below I show a revised 
> > > > script
> > > > which uses a tetrahedron (4 faces) and some color changes. I think the
> > > > tetrahedron is mostly working for me but I am really confused about the
> > > > colors.
> > > >
> > > > I apologize for the length of this email, but I have many questions.
> > > >
> > > > As an aside, I have discovered an error in the shader.ijs in the 
> > > > qtdemo's.
> > > > The last 0 in the following line should be a 1 because it's the alpha
> > > > value. (Coincidentally, there is another line in shader.ijs which also
> > > > addresses ClearColor, but it is ignored, I think, and it separates the
> > > > integers with ;'s .) Correcting that alpha value creates a black
> > > > background, which can be effective.
> > > >
> > > > glClearColor 0 0 0 0
> > > >
> > > > Btw, I have left 2 glClearColor's in the script so it's easy to swap 
> > > > them:
> > > > white 1 1 1 1 and
> > > > black 0 0 0 1 .
> > > >
> > > > The major changes I have made to the script are the following.
> > > >
> > > > NB.  changed cube to a mirrored sphenoid(?)
> > > > NB. (eg, see
> > > > https://en.wikipedia.org/wiki/Architectonic_and_catoptric_tessellation)
> > > >
> > > > rt=: (|.@:{)`[`]}   NB. rotates vertices of xth face for winding order
> > > > vertexData=: 1&fc ,1 rt 3 rt  4 3 3$ %&10, 0&". ;._2 [ 0 : 0
> > > > _3 _9 _4
> > > >  3 _9 _4
> > > >  0  0  2
> > > >  0  8 _4
> > > > )
> > > >
> > > > I discovered that the verb `rt` (or something like it) is required to 
> > > > make
> > > > the tetrahedron work because of face winding issues. The original cube 
> > > > was
> > > > adjusted another way, apparently.
> > > > With `vertexData` defined either as above OR without `1&fc` prepended I 
> > > > get
> > > > the SAME --mostly desirable-- results. The inclusion and exclusion of
> > > > `1&fc` giving the same result is confusing, by itself, and begs the
> > > > question, "Why is `1&fc` used?"
> > > >
> > > > I said "mostly desirable" above, instead of "desirable" because of the 
> > > > next
> > > > 2 issues.
> > > >
> > > > v0) The 10 in the first line of the definition of vertexData is used to
> > > > simplify data entry and I have also used it to experiment with scaling 
> > > > the
> > > > size of the tetrahedron. This has led to another surprise, that no 
> > > > scaling
> > > > seems to result from increasing the 10 to 80 or so. Why?
> > > >
> > > > v1) I have been disillusioned by the face coloring of the tetrahedron, 
> > > > even
> > > > in the simplest situations because when the tetrahedron is rotated in
> > > > certain directions, the black or white background seems to bleed through
> > > > one of the edges. What causes that?
> > > >
> > > > Now, moving on to coloring. I have no idea how the face COLORing works
> > > > using almost any version of `colorData` below. I can generalize though 
> > > > on
> > > > one thing: if I leave out the `1&fc`, no colors work on ANY version
> > > > of `colorData` .
> > > >
> > > > The first version below seems to give a complete tetrahedron except for 
> > > > the
> > > > background color bleeding through one edge. And as mentioned earlier, it
> > > > only works with vertices rotated with the rt verb.
> > > >
> > > > colorData=: 1&fc ,1 rt 3 rt  4 3 3$ , 0&". ;._2 [ 0 : 0
> > > > 0 0 1
> > > > 1 1 1
> > > > 1 0 0
> > > > 0 1 0
> > > > )
> > > >
> > > > f0) If the 1's in the second row are changed to 0.9's, the background 
> > > > color
> > > > no longer bleeds in. Why?
> > > >
> > > > f1) (This approach does not seem to work at all, and I have a 
> > > > replacement
> > > > for it that works a little, but will send it in a new message) I want 2 
> > > > of
> > > > the faces in the tetrahedron to have the same color and each of the 
> > > > other 2
> > > > to have a different color (3 colors altogether). I devised the following
> > > > NONWORKING scheme of colors to accomplish this result. By nonworking I 
> > > > mean
> > > > only the background color shows in the graphics pane, no tetrahedron. 
> > > > Why?
> > > >
> > > > colorData=:  1&fc ,_3]\3#"2] 0&". ;._2 [ 0 : 0
> > > > 0 0 1
> > > > 1 1 1
> > > > 1 0 0
> > > > 0 1 0
> > > > )
> > > >
> > > > To demonstrate the result above consider the following result which 
> > > > makes
> > > > each of the 4 faces, represented by the boxes' contents below, has 3
> > > > identical rows.
> > > >    ;/_3]\3#"2] 0&". ;._2 [ 0 : 0
> > > > 0 0 1
> > > > 1 1 1
> > > > 1 0 0
> > > > 0 1 0
> > > > )
> > > > +-----+-----+-----+-----+
> > > > |0 0 1|1 1 1|1 0 0|0 1 0|
> > > > |0 0 1|1 1 1|1 0 0|0 1 0|
> > > > |0 0 1|1 1 1|1 0 0|0 1 0|
> > > > +-----+-----+-----+-----+
> > > >
> > > >
> > > >
> > > > ***************my revised slider.ijs script is below************
> > > >
> > > > cocurrent 'demoshader'
> > > >
> > > > mp=: (+/ . *)"2
> > > > rt=: (|.@:{)`[`]}NB. rotates vertices of xth face for winding order
> > > > sprog=: 0
> > > > GLSL=: 0
> > > > STOP=: 0
> > > >
> > > > A=: 0 : 0
> > > > pc a;
> > > > minwh 300 300;cc g opengl flush;
> > > > rem form end;
> > > > )
> > > >
> > > > a_run=: 3 : 0
> > > > NB. if. -. checkrequire_qtdemo_ 'gles';'api/gles' do. return. end.
> > > > require 'gl2'
> > > > coinsert 'jgl2'
> > > > require 'gles'
> > > > coinsert 'jgles'
> > > > require '~addons/ide/qt/opengl.ijs'
> > > > coinsert 'qtopengl'
> > > > STEPS=: 100
> > > > R=: 20 30 0
> > > > EYE=: 0 0 1
> > > > LR=: UD=: IO=: 0
> > > > UP=: 0 1 0
> > > > wd A
> > > > HD=: ".wd'qhwndc g'
> > > > wd 'ptimer 100'
> > > > wd 'pshow'
> > > > )
> > > >
> > > > a_g_initialize=: 3 : 0
> > > > if. p=. >@{. glGetString GL_VERSION do. smoutput 'GL_VERSION: ', memr 0 
> > > > _1
> > > > 2,~ p end.
> > > > if. 0=p do. smoutput 'cannot retrieve GL_VERSION' return. end.
> > > > if. p=. >@{. glGetString GL_VENDOR do. smoutput 'GL_VENDOR: ', memr 0 _1
> > > > 2,~ p end.
> > > > if. p=. >@{. glGetString GL_RENDERER do. smoutput 'GL_RENDERER: ', memr > > > > 0
> > > > _1 2,~ p end.
> > > > if. p=. >@{. glGetString GL_SHADING_LANGUAGE_VERSION do. smoutput
> > > > 'GL_SHADING_LANGUAGE_VERSION: ', memr 0 _1 2,~ p end.
> > > > GLSL=: wglGLSL''
> > > >
> > > > wglPROC''
> > > > sprog=: 0
> > > > if. GLSL>120 do.
> > > >   vsrc=. vsrc2
> > > >   fsrc=. fsrc2
> > > > else.
> > > >   vsrc=. vsrc1
> > > >   fsrc=. fsrc1
> > > >   if. 0=GLES_VERSION_jgles_ do.
> > > >     vsrc=. vsrc,~ '#define lowp', LF, '#define mediump', LF, '#define
> > > > highp', LF
> > > >     fsrc=. fsrc,~ '#define lowp', LF, '#define mediump', LF, '#define
> > > > highp', LF
> > > >   end.
> > > > end.
> > > > vsrc=. '#version ',(":GLSL),((GLSL>:300)#(*GLES_VERSION){::' core';'
> > > > es'),LF,vsrc
> > > > fsrc=. '#version ',(":GLSL),((GLSL>:300)#(*GLES_VERSION){::' core';'
> > > > es'),LF,fsrc
> > > > if.(GLSL>:300)*.0~:GLES_VERSION_jgles_ do.
> > > >   fsrc=. ('void main';'out vec4 gl_FragColor;',LF,'void main')
> > > > stringreplace fsrc
> > > > end.
> > > > smoutput vsrc
> > > > smoutput fsrc
> > > > 'err program'=. gl_makeprogram vsrc;fsrc
> > > > if. #err do. smoutput err return. end.
> > > >
> > > > vertexAttr=: >@{. glGetAttribLocation program;'vertex'
> > > > assert. _1~: vertexAttr
> > > > colorAttr=: >@{. glGetAttribLocation program;'color'
> > > > assert. _1~: colorAttr
> > > > mvpUni=: >@{. glGetUniformLocation program;'mvp'
> > > > assert. _1~: mvpUni
> > > >
> > > > glGenBuffers 2;vbo=: 2#_1
> > > > glBindBuffer GL_ARRAY_BUFFER; {.vbo
> > > > glBufferData GL_ARRAY_BUFFER; (#vertexData); (symdat <'vertexData');
> > > > GL_STATIC_DRAW
> > > > glBindBuffer GL_ARRAY_BUFFER; {:vbo
> > > > glBufferData GL_ARRAY_BUFFER; (#colorData); (symdat <'colorData');
> > > > GL_STATIC_DRAW
> > > > glBindBuffer GL_ARRAY_BUFFER; 0
> > > >
> > > > sprog=: program
> > > >
> > > > NB. glClearColor 0; 0; 1; 1
> > > > )
> > > >
> > > > a_g_char=: 3 : 0
> > > > if. 0=#sysdata do. return. end.
> > > > R=: 360 | R + 2 * 'xyz' = 0 { sysdata
> > > > k=. 0{sysdata
> > > > STEPS=: 200 <. STEPS + 's' = k
> > > > STEPS=: 3 >. STEPS - 'a' = k
> > > > LR=: LR - 0.01*'l'=k
> > > > LR=: LR + 0.01*'r'=k
> > > > gl_paint ''
> > > > )
> > > >
> > > > a_timer=: 3 : 0
> > > > if. 0=STOP do. return. end.
> > > > R=: 360 | R + 2 * 1 1 1
> > > > gl_sel HD
> > > > gl_paint''
> > > > )
> > > >
> > > > a_g_paint=: 3 : 0
> > > > if. 0=sprog do. return. end.
> > > >
> > > > wh=. gl_qwh''
> > > > glClearColor 1 1 1 1
> > > > glClearColor 0 0 0 1   NB. this is new
> > > > glClear GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT
> > > >
> > > > glUseProgram sprog
> > > > glEnable GL_DEPTH_TEST
> > > > glEnable GL_CULL_FACE
> > > >
> > > > NB. matrix convention: current matrix on the left
> > > > NB. note pre-multiplication
> > > >
> > > > NB. model-view
> > > > mvp=: (gl_Rotate (0{R), 1 0 0 ) mp (gl_Rotate (1{R), 0 1 0) mp 
> > > > (gl_Rotate
> > > > (2{R), 0 0 1) mp (gl_Scale STEPS%100) mp (gl_Translate 0 0 _8) mp
> > > > glu_LookAt EYE,LR,UD,IO,UP
> > > >
> > > > NB. projection
> > > > mvp=: mvp mp gl_Perspective 30, (%/wh),1 10
> > > >
> > > > NB. note GL_FALSE, no transpose
> > > > glUniformMatrix4fv mvpUni; 1; GL_FALSE; mvp
> > > >
> > > > glBindBuffer GL_ARRAY_BUFFER; {.vbo
> > > > glEnableVertexAttribArray vertexAttr
> > > > glVertexAttribPointer vertexAttr; 3; GL_FLOAT; 0; 0; 0
> > > >
> > > > glBindBuffer GL_ARRAY_BUFFER; {:vbo
> > > > glEnableVertexAttribArray colorAttr
> > > > glVertexAttribPointer colorAttr; 3; GL_FLOAT; 0; 0; 0
> > > >
> > > > glDrawArrays GL_TRIANGLES; 0; 12   NB. 36 was for cubes *******
> > > >
> > > > glBindBuffer GL_ARRAY_BUFFER; 0
> > > > glDisableVertexAttribArray colorAttr
> > > > glDisableVertexAttribArray vertexAttr
> > > >
> > > > glDisable GL_DEPTH_TEST
> > > > glDisable GL_CULL_FACE
> > > >
> > > > glUseProgram 0
> > > >
> > > > gl_clear ''
> > > > gl_rgb 255 255 255
> > > > gl_textcolor ''
> > > > gl_textxy 10 30
> > > > gl_text 'keys: x y z a s l r F4'
> > > > gl_textxy 10 50
> > > > gl_text 'scale: ',":STEPS%100
> > > > gl_textxy 10 70
> > > > gl_text 'angle: ',":R
> > > > gl_textxy 10 90
> > > > if. 0=sprog do. return. end.
> > > > gl_text 'matrix:'
> > > > for_i. i.4 do.
> > > >   gl_textxy 10, 105+i*15
> > > >   gl_text 6j2": i{mvp
> > > > end.
> > > > )
> > > >
> > > > a_f4_fkey=: 3 : 0
> > > > STOP=: -.STOP
> > > > NB. gl_paint ''
> > > > )
> > > >
> > > > a_cancel=: a_close
> > > >
> > > > a_close=: 3 : 0
> > > > STOP=: 0
> > > > wd 'ptimer 0'
> > > > glDeleteBuffers ::0: 2; vbo
> > > > glDeleteProgram ::0: sprog
> > > > wd 'pclose'
> > > > )
> > > >
> > > > NB.  Mirrored sphenoid?
> > > > vertexData=: 1&fc ,1 rt 3 rt  4 3 3$ %&80, 0&". ;._2 [ 0 : 0
> > > > _3 _9 _4
> > > >  3 _9 _4
> > > >  0  0  2
> > > >  0  8 _4
> > > > )
> > > >
> > > > colorData=: 1&fc ,1 rt 3 rt  4 3 3$ , 0&". ;._2 [ 0 : 0
> > > > 0 0 1
> > > > 1 1 1
> > > > 1 0 0
> > > > 0 1 0
> > > > )
> > > >
> > > >
> > > > NB. =========================================================
> > > > vsrc1=: 0 : 0
> > > > attribute highp vec3 vertex;
> > > > attribute lowp vec3 color;
> > > > varying lowp vec4 v_color;
> > > > uniform mat4 mvp;
> > > > void main(void)
> > > > {
> > > >   gl_Position = mvp * vec4(vertex,1.0);
> > > >   v_color = vec4(color,1.0);
> > > > }
> > > > )
> > > >
> > > > fsrc1=: 0 : 0
> > > > varying lowp vec4 v_color;
> > > > void main(void)
> > > > {
> > > >   gl_FragColor = v_color;
> > > > }
> > > > )
> > > >
> > > > NB. =========================================================
> > > > vsrc2=: 0 : 0
> > > > in vec3 vertex;
> > > > in vec3 color;
> > > > out vec4 v_color;
> > > > uniform mat4 mvp;
> > > > void main(void)
> > > > {
> > > >   gl_Position = mvp * vec4(vertex,1.0);
> > > >   v_color = vec4(color,1.0);
> > > > }
> > > > )
> > > >
> > > > fsrc2=: 0 : 0
> > > > in vec4 v_color;
> > > > void main(void)
> > > > {
> > > >   gl_FragColor = v_color;
> > > > }
> > > > )
> > > >
> > > > NB. =========================================================
> > > > a_run''
> > > >
> > > > On Fri, Feb 14, 2020 at 7:19 PM bill lam <bbill....@gmail.com> wrote:
> > > >
> > > > > If you intended to run turtle graphics only, then drawing cube is over
> > > > > skilled. Drawing triangles is much simpler. eg a triangle with 
> > > > > vertices
> > > > > 0 1 0, 1 _1 0, _1 _1 0
> > > > > then use different scale, translate and rotate to place them into 
> > > > > different
> > > > > positions and orientations.
> > > > >
> > > > > Also only a constant solid color from fragment shader is sufficient.
> > > > >
> > > > > On Sat, Feb 15, 2020, 7:19 AM Brian Schott <schott.br...@gmail.com> 
> > > > > wrote:
> > > > >
> > > > > --
> > > > (B=)
> > > > ----------------------------------------------------------------------
> > > > For information about J forums see http://www.jsoftware.com/forums.htm
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> > --
> > regards,
> > ====================================================
> > GPG key 1024D/4434BAB3 2008-08-24
> > gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3
> > ----------------------------------------------------------------------
> > 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