Exemplo n.º 1
0
    /**
     * Returns an interval of alpha values based on frames
     * inside which the targets can be projected.
     *
     * @param desPosA the desired  onscreen position of target A around the frame is going to be constructed
     * @param desPosB the desired  onscreen position of target B around the frame is going to be constructed
     * @return a interval of accepted alpha values in degrees
     *
     */

    public Interval getAlphaIntervalFromOnscreenPositions(Vector2 desPosA, Vector2 desPosB)
    {
        List <Vector2> verticesFrameTargetA = getFrameTarget(desPosA);
        List <Vector2> verticesFrameTargetB = getFrameTarget(desPosB);



        List <Vector3> VerticesInCamSpaceA = new List <Vector3>();
        List <Vector3> VerticesInCamSpaceB = new List <Vector3>();

        foreach (Vector2 vec in verticesFrameTargetA)
        {
            Vector3 inCamSpace = ToricComputing.GetVectorInCameraSpace(vec);
            VerticesInCamSpaceA.Add(inCamSpace);
        }
        foreach (Vector2 vec in verticesFrameTargetB)
        {
            Vector3 inCamSpace = ToricComputing.GetVectorInCameraSpace(vec);
            VerticesInCamSpaceB.Add(inCamSpace);
        }



        List <float> alphaValues = new List <float>();

        foreach (Vector3 pA in VerticesInCamSpaceA)
        {
            foreach (Vector3 pB in VerticesInCamSpaceB)
            {
                float alpha = Vector3.Angle(pA, pB) * Mathf.Deg2Rad;
                alphaValues.Add(alpha);
            }
        }
        return(new Interval(Mathf.Min(alphaValues.ToArray()), Mathf.Max(alphaValues.ToArray())));
    }
Exemplo n.º 2
0
    //private methods

    private Quaternion computeLookAtTransition()
    {
        Vector3 forward, up;

        {
            Vector3 pA3 = Vector3.Normalize(ToricComputing.GetVectorInCameraSpace(screenPositionA));
            Vector3 pB3 = Vector3.Normalize(ToricComputing.GetVectorInCameraSpace(screenPositionB));

            up      = Vector3.Cross(pB3, pA3).normalized;
            forward = (pA3 + pB3).normalized;
        }
        return(Quaternion.LookRotation(forward, up));
    }