calculateTbRadius method

double calculateTbRadius(
  1. Camera camera
)
  • Calculate the trackball radius so that gizmo's diamater will be 2/3 of the minimum side of the camera frustum
  • returns double The trackball radius

Implementation

double calculateTbRadius(Camera camera) {
    final distance = camera.position.distanceTo(_gizmos.position);

    if (camera is PerspectiveCamera) {
      final halfFovV = MathUtils.deg2rad * camera.fov * 0.5; //vertical fov/2 in radians
      final halfFovH = math.atan((camera.aspect) * math.tan(halfFovV)); //horizontal fov/2 in radians
      return math.tan(math.min(halfFovV, halfFovH)) *distance *radiusFactor;
    }
    else if (camera is OrthographicCamera) {
      return math.min(camera.top, camera.right) * radiusFactor;
    }

    return 0;
  }