/// <summary> /// retrieve the component (0:X, 1:Y, 2:Z) /// </summary> public double GetOrd(OrdIdx ord) { switch (ord) { case OrdIdx.X: return(X); case OrdIdx.Y: return(Y); case OrdIdx.Z: return(Z); default: throw new ArgumentException($"invalid ord {ord}. Must between one of 0,1,2"); } }
/// <summary> /// return a copy of this vector with ordinate ( 0:x 1:y 2:z ) changed /// </summary> public Vector3D Set(OrdIdx ordIdx, double value) { var x = X; var y = Y; var z = Z; switch (ordIdx) { case OrdIdx.X: x = value; break; case OrdIdx.Y: y = value; break; case OrdIdx.Z: z = value; break; default: throw new Exception($"invalid ordIdx:{ordIdx}"); } return(new Vector3D(x, y, z)); }