public static Vector3Json operator /(Vector3Json v1, float f) { Vector3Json res = new Vector3Json(); res.X = v1.X / f; res.Y = v1.Y / f; res.Z = v1.Z / f; return(res); }
public static Vector3Json operator +(Vector3Json v1, Vector3Json v2) { Vector3Json res = new Vector3Json(); res.X = v1.X + v2.X; res.Y = v1.Y + v2.Y; res.Z = v1.Z + v2.Z; return(res); }
public static Vector3Json Diff(Vector3Json v1, Vector3Json v2) { Vector3Json res = new Vector3Json(); res.X = (v1.X - v2.X); res.Y = (v1.Y - v2.Y); res.Z = (v1.Z - v2.Z); return(res); }
public static Vector3Json Mediate(Vector3Json v1, Vector3Json v2, double minDis = 0) { if (minDis == 0 || Distance(v1, v2) > minDis) { Vector3Json res = new Vector3Json(); res.X = (v1.X + v2.X) / 2; res.Y = (v1.Y + v2.Y) / 2; res.Z = (v1.Z + v2.Z) / 2; return(res); } return(v1); }
public static Vector3Json Mean(List <Vector3Json> lst) { if (lst != null && lst.Count > 0) { Vector3Json r = new Vector3Json(); foreach (var i in lst) { r += i; } return(r / lst.Count); } return(null); }
public static double Distance(Vector3Json v1, Vector3Json v2) { Vector3Json res = Diff(v1, v2); return(Math.Sqrt(Math.Pow(res.X, 2) + Math.Pow(res.Y, 2) + Math.Pow(res.Z, 2))); }