anchor.diff:          }
   
           {
  -            // when we set the cloud, we need to set the camera relative to it
  -            // position is returned in model space
  -            _cameraEyePoint = RenderUtils.getCameraPointEye(renderTarget);
  -            _cameraTargetPoint = RenderUtils.getCameraPointTarget(renderTarget);
  +            // camera positions are computed in geo space, but maintained in world space
  +            _cameraEyePoint = RenderUtils.getCameraPointEye(renderSource);
  +            _cameraTargetPoint = RenderUtils.getCameraPointTarget(renderSource);
   
               // move position to world space
               _cameraEyePoint.applyProjection(modelToWorld);
               _cameraTargetPoint.applyProjection(modelToWorld);
  -            _cameraUpVector = new Vector3(0.0, 0.0, 1.0);
  +            _cameraUpVector = new Vector3(0.0, 1.0, 0.0);
   
               _addCamera();
               goHome();
  
positive.code:             // axes model space is (0,0,0)..(100,100,100)
              _axesObject = new AxesObject();
              Vector3 a = new Vector3(100.0, 100.0, 100.0);
              Vector3 b = renderTarget.len.clone();
              Vector3 c = b.divide(a).scale(1.0 / 4.0);
              var axesModelToWorld = new Matrix4.identity().scale(c);
              _axesObject.applyMatrix(axesModelToWorld);
  
negative.code:         //_cameraControls.dynamicDampingFactor = 0.3;
      }
  
      void setSource(RenderSource renderSource) {
          _renderTarget = renderSource;
  
          // model space ...(xmin,ymin,zmin)..(xmax,ymax,zmax)...
          // world space ...(0,0)..(xlen,ylen)...
          //
          // min point of the model becomes the origin of world space
  
          modelToWorld = new Matrix4.identity();
          modelToWorld.translate(-renderSource.min);
  
          {
              _particleSystem = RenderUtils.drawPoints(renderSource);
              _particleSystem.applyMatrix(modelToWorld);
              _scene.add(_particleSystem);
          }
  