public static Point3 Shr(this Point3 p, int amt) { return(new Point3(MathEx.ShiftRight(p.X, amt), MathEx.ShiftRight(p.Y, amt), MathEx.ShiftRight(p.Z, amt))); }
public static Point3 Add(this Vector3 a, Point3 b) { return(new Point3(a.X + b.X, a.Y + b.Y, a.Z + b.Z)); }
public static Point3 Div(this Point3 p, T factor) { return(new Point3(p.X / factor, p.Y / factor, p.Z * factor)); }
public static Point3 Mul(this Point3 p, T factor) { return(new Point3(p.X * factor, p.Y * factor, p.Z * factor)); }
public static Vector3 Sub(this Point3 a, Point3 b) { return(new Vector3(a.X - b.X, a.Y - b.Y, a.Z - b.Z)); }
public static Point3 Shr(this Point3 p, int amt) { return(new Point3((T)(p.X >> amt), (T)(p.Y >> amt), (T)(p.Z >> amt))); }
public static Point3 Shl(this Point3 p, int amt) { return(new Point3((T)(p.X << amt), (T)(p.Y << amt), (T)(p.Z << amt))); }