public static CoordSys GramSchmidt(CameraSpacePoint first, CameraSpacePoint sec, CameraSpacePoint third, CameraSpacePoint center) { CameraSpacePoint secNew = first.ProjOperator(sec).SubtractFrom(sec); CameraSpacePoint thirdNew = secNew.ProjOperator(third).Add(first.ProjOperator(third)).SubtractFrom(third); //float res1 = first.DotProduct(secNew); //float res2 = first.DotProduct(thirdNew); //float res3 = secNew.DotProduct(thirdNew); return(new CoordSys() { Center = center, Top = center.Add(secNew), Front = center.Add(first), Side = center.Add(thirdNew) }); }
public static CoordSys NewCoordSys(CoordSys coordSys) { CoordSys newCoord = new CoordSys() { Center = coordSys.Center, Top = coordSys.Top, Side = coordSys.Side, Front = coordSys.Front }; newCoord.Side.Y = coordSys.Center.Y; newCoord.Top.X = coordSys.Center.X; CameraSpacePoint transSideN = newCoord.Center.SubtractFrom(newCoord.Side); CameraSpacePoint transFrontN = newCoord.Center.SubtractFrom(newCoord.Front); CameraSpacePoint transTopN = newCoord.Center.SubtractFrom(newCoord.Top); transFrontN = transSideN.CrossProduct(transTopN); newCoord.Top = transTopN.Add(coordSys.Center); newCoord.Side = transSideN.Add(coordSys.Center); newCoord.Front = transFrontN.Add(coordSys.Center); //newCoord.Front = newCoord.Side.CrossProduct(newCoord.Top); //newCoord.Front.X = coordSys.Center.X; //newCoord.Front.Y = coordSys.Center.Y; return(newCoord); }