public void GetClosestFace(Cuboid that, out int firstFace, out int secondFace) { float minDistance = float.MinValue, currentDistance = float.MinValue; firstFace = -1; secondFace = -1; for (int i = 0; i < 6; i++) { //face.Distance(that.Faces[i]) firstFace = this.Faces.IndexOfMinBy(face => Face.Distance(face, that.Faces[i]), out currentDistance); if (currentDistance < minDistance) { minDistance = currentDistance; secondFace = i; } } }
public Face(Vector3 A, Vector3 B, Vector3 C, Vector3 D, Vector3 cuboidCenter, Vector3 cuboidPivot, float depth, Cuboid parent) { Center = (A + B + C + D) / 4; CornerPoints = new Vector3[] { A, B, C, D }; Normal = (Center - cuboidCenter).normalized; if (Mathf.Approximately(Normal.magnitude, 0)) { Normal = Vector3.Cross(A - B, B - C).normalized; } a = Normal.x; b = Normal.y; c = Normal.z; d = -(a * A.x + b * A.y + c * A.z); ProjectedPivot = Face.ProjectPointOnPlane(Normal, Center, cuboidPivot); PerpendicularDepth = depth; DiagnoalLength = 0; m_Parent = parent; }
public static float GetClosedFaces(Face face, Cuboid cuboid, float snappingDistance, out int snappingFaceID) { float minDistance = float.MaxValue, currentDistance = 0; snappingFaceID = -1; for (int i = 0; i < 6; i++) { if (Face.CheckSnapping(face, cuboid.Faces[i], snappingDistance, out currentDistance)) { if (currentDistance < minDistance) { minDistance = currentDistance; snappingFaceID = i; } } } return(minDistance); }
public static float GetClosedFaces(Cuboid first, Cuboid second, float snappingDistance, out int firstFace, out int secondFace) { float minDistance = float.MaxValue, currentDistance = 0; firstFace = -1; secondFace = -1; for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) { if (Face.CheckSnapping(first.Faces[i], second.Faces[j], snappingDistance, out currentDistance)) { if (currentDistance < minDistance) { minDistance = currentDistance; firstFace = i; secondFace = j; } } } } return(minDistance); }
public static float Distance(Cuboid first, Cuboid second) { return(Vector3.Distance(first.Pivot, second.Pivot)); }