Vector3D.perpendicular constructor

Vector3D.perpendicular(
  1. Vector3D o
)

Implementation

factory Vector3D.perpendicular(Vector3D o) {
  double min = o.x.abs();
  Vector3D cardinalAxis = .vec3(1.0, 0.0, 0.0);

  if ((o.y).abs() < min) {
    min = (o.y).abs();
    cardinalAxis = .vec3(0.0, 1.0, 0.0);
  }

  if ((o.z).abs() < min) {
    cardinalAxis = .vec3(0.0, 0.0, 1.0);
  }

  return o.crossProduct(cardinalAxis);
}