コード例 #1
0
    /// <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);
    }
コード例 #2
0
    /// <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);
    }