/// <summary> /// Gets the minimum distance to plane boundaries of a given 3D point (in world space) /// </summary> /// <returns>The minimum distance to boundaries.</returns> /// <param name="worldPosition">World position.</param> public float getMinimumDistanceToBoundaries(Vector3 worldPosition, out Vector3 minimumBoundsPosition) { var leftCamera = ZEDManager.Instance.GetLeftCameraTransform().gameObject.GetComponent <Camera>(); var minimal_distance = ZEDSupportFunctions.DistancePointLine(worldPosition, leftCamera.transform.TransformPoint(planeData.Bounds[0]), leftCamera.transform.TransformPoint(planeData.Bounds[1])); var BestFoundPoint = new Vector3(0.0f, 0.0f, 0.0f); if (planeData.BoundsSize > 2) { for (var i = 1; i < planeData.BoundsSize - 1; i++) { var currentDistance = ZEDSupportFunctions.DistancePointLine(worldPosition, leftCamera.transform.TransformPoint(planeData.Bounds[i]), leftCamera.transform.TransformPoint(planeData.Bounds[i + 1])); if (currentDistance < minimal_distance) { minimal_distance = currentDistance; BestFoundPoint = ZEDSupportFunctions.ProjectPointLine(worldPosition, leftCamera.transform.TransformPoint(planeData.Bounds[i]), leftCamera.transform.TransformPoint(planeData.Bounds[i + 1])); } } } minimumBoundsPosition = BestFoundPoint; return(minimal_distance); }
/// <summary> /// Gets the minimum distance to plane boundaries of a given 3D point (in world space) /// </summary> /// <returns>The minimum distance to boundaries.</returns> /// <param name="worldPosition">World position.</param> public float getMinimumDistanceToBoundaries(Camera cam, Vector3 worldPosition, out Vector3 minimumBoundsPosition) { Camera leftCamera = cam; float minimal_distance = ZEDSupportFunctions.DistancePointLine(worldPosition, leftCamera.transform.TransformPoint(planeData.Bounds[0]), leftCamera.transform.TransformPoint(planeData.Bounds[1])); Vector3 BestFoundPoint = new Vector3(0.0f, 0.0f, 0.0f); if (planeData.BoundsSize > 2) { for (int i = 1; i < planeData.BoundsSize - 1; i++) { float currentDistance = ZEDSupportFunctions.DistancePointLine(worldPosition, leftCamera.transform.TransformPoint(planeData.Bounds[i]), leftCamera.transform.TransformPoint(planeData.Bounds[i + 1])); if (currentDistance < minimal_distance) { minimal_distance = currentDistance; BestFoundPoint = ZEDSupportFunctions.ProjectPointLine(worldPosition, leftCamera.transform.TransformPoint(planeData.Bounds[i]), leftCamera.transform.TransformPoint(planeData.Bounds[i + 1])); } } } minimumBoundsPosition = BestFoundPoint; return(minimal_distance); }