A simple problem


    Apr 20 2006 | 1:50 pm
    I am designing an interface for a pluggo pluggin I have been working on - I want to modify the behaviour of the JSUI 3dDial, so that as it turns: rather than splitting and displaying two sets of colours it just rotates like a conventional dial.
    This JPEG illustrates what I mean:
    I have no experience of JS so I am hoping someone has a simple solution to this problem.
    Best
    bingweb

    • Apr 20 2006 | 2:36 pm
      If you just want a rotating fixed picture for your dial, you might as well
      use pictctl (I think it's a lot cheaper in terms of cpu usage too). You
      could also draw something in js, capture it to an image and rotate that. Or
      load a texture into js, as opposed to pictctl. There is an example that
      should get you started, called "jsui_imagestuff-example.pat". Pictctl is by
      far the easiest option though.
      To me it doesn't make much sense to calculate and draw a new dial on every
      rotation if it's not changing its appearance along the way. You'll be
      wasting your precious cpu cycles;-)
      Best, Thijs
    • Apr 20 2006 | 7:55 pm
      Thanks for your reply,
      That's a valid point about the CPU - the only other problem is that I am a PC user and have no pict file editor. Also creating all the different pict files will be time consuming - I am on a strict time scale, this will be a submission for an MIT degree in a month, so the less time I have to spend getting the solution the better. Some of the other JSUI dials simply rotate so I would have hoped there was a simple tweak I can make to the code of 3ddial to make it perform like this. - Anyone?
    • Apr 20 2006 | 10:41 pm
      ok here's your tweak:
      i just commented out the drawing commands you don't want:
      /*j
      >
      > I would have hoped there was a simple tweak I can make to the code
      > of 3ddial to make it perform like this.
      default: // 3d sphere
      with (sketch) {
      glenable("depth_test");
      shapeslice(40,10);
      glcullface("back");
      // wireframe on/off
      if (vwire) {
      glpolygonmode("front","line");
      glpolygonmode("back","line");
      } else {
      glpolygonmode("front","fill");
      glpolygonmode("back","fill");
      }
      // erase background
      glclearcolor(vbrgb);
      glclear();
      // fill bg sphere
      glcolor(vrgb2);
      moveto(0,0,0);
      sphere(0.8,0,360,0,90);
      // fill fg arc
      glclear("depth");
      glcolor(vfrgb);
      /* sphere(0.8,-90-val*360,-90,0,90);
      // draw arc outline
      gldisable("depth_test");
      glenable("line_smooth");
      shapeslice(80,1);
      glcolor(0,0,0,1);
      framecircle(0.8,-90-val*360,-90); */
      glcolor(0,0,0,1);
      moveto(0,0);
      /* lineto(0,-0.8);
      moveto(0,0); */
      theta = (0.75-val)*2*Math.PI;
      lineto(0.8*Math.cos(theta),0.8*Math.sin(theta));