Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - Gaius

#1
Hi everyone,



I'm returning to programming after a break of many years in order to scratch an itch (as they say) in my current non-technical position.



Basically, I want to build an application that will allow me interactively to create and edit large directed acyclical graphs.  The nodes of the DAG represent objects (of a variety of different classes) and the arcs the relationships between them.



Last time I did any professional programming it was in C, with the graphics implemented using GKS (well that dates it, doesn't it!).  I was looking for a programming environment that is clean, elegant and productive and came across newLISP.  In  particular I've was impressed by the quality of its documentation (many thanks to Cormullion et al.) in comparison to so many other languages and projects.



What I'm concerned about - and the real thrust of this ramble - is whether Guiserver is appropriate for building interactive graphics?  Reading the documentation gs:canvas seems very low level.  Is there a graphics programming toolkit that sits on top of it?  Three things spring to mind:



(1) GKS (and I believe also OpenGL, although I've never used it) provided a means of establishing "world co-ordinate" systems, transforming them to "normalised device co-ordinates" and setting up "viewports" that were windows into NDC space.  Graphic primitives could also be clipped to these viewports.



(2) GKS provided "segments" comprising lists of primitives that could be transformed collectively as a single object.



(3) GKS could feed graphical events directly into the application event queue - for example a mouse click inside the canvas would be pre-processed to determine if location corresponded to a graphics segment and, if so, a "pick event" returned rather than just the device co-ordinates of the mouse.



I know that newLISP has a binding to GLUT, which would I think do the job, but can GLUT be bound to gs:canvas?



I'd be most grateful for comments and suggestions, including entirely different strategies.  I did think of trying an AJAX interface using SVG, but learning both newLISP and Javascript seemed a bit over the top and pouring out screeds of XML everytime something needed redrawing seemed horribly inefficient.  Again, this may just be ignorance.



Thanks in advance for your help.