StreamLineTracer::StreamLineTracer(std::shared_ptr<const SpatialSampler<3, 3, double>> vol, const StreamLineProperties &properties)
    : IntegralLineTracer(properties)
    , volumeSampler_(vol)
    , invBasis_(dmat3(glm::inverse(vol->getBasis())))
    , normalizeSample_(properties.getNormalizeSamples())
{

}
void TrackballHandler::Trackball::mouseUp ( int i, int j )
{
  if (!ismousedown)
    return;
  ismousedown = false;

  vec3 cur = _ij2xyz(i,j);
  vec3 axis = cross(last, cur);
  R0 = mat3(rotate(mat4(),float(acos(dot(last,cur))),axis));
  R = R0*R;
  R0 = dmat3();
  R0R = R;
}