ortho method

Sp3dV3D ortho()

(en)Return random orthogonal vector.

(ja)このベクトルに直交するランダムなベクトルを返します。

Implementation

Sp3dV3D ortho() {
  if (isZero()) {
    return deepCopy();
  }
  double r = Random().nextDouble() + 1;
  if (x != 0) {
    return Sp3dV3D((-1 * y * r - z * r) / x, r, r);
  } else if (y != 0) {
    return Sp3dV3D(r, (-1 * x * r - z * r) / y, r);
  } else {
    return Sp3dV3D(r, r, (-1 * x * r - y * r) / z);
  }
}