获取点坐标在任意矩形的内矩形中0-1的Vector2坐标

    /// 
    /// 获取点坐标在内矩形中0-1的Vector2坐标
    /// 
    /// 已知的向量x坐标
    /// 已知的向量y坐标
    /// b向量结束坐标
    /// b向量开始坐标
    /// c向量结束坐标
    /// c向量开始坐标
    /// 返回一个在内矩形中0-1的Vector2
    Vector2 GetLineOutLine(double x, double y,double b1, double b0, double c1, double c0)
    {
        float a, b, c;
        a = innerHeight;
        b = (int)Mathf.Sqrt(Mathf.Pow(((float)y - (float)b1), 2) + Mathf.Pow(((float)x - (float)b0), 2));
        c = (int)Mathf.Sqrt(Mathf.Pow(((float)y - (float)c1), 2) + Mathf.Pow(((float)x - (float)c0), 2));

        float px, py;
        px = Mathf.Clamp(Mathf.Sqrt(Mathf.Pow(c, 2) - Mathf.Pow((Mathf.Pow(a, 2) + Mathf.Pow(c, 2) - Mathf.Pow(b, 2)) / (2 * a), 2)) / innerWidth, 0f, 1f);

        py = Mathf.Clamp(1 - ((Mathf.Pow(a, 2) + Mathf.Pow(c, 2) - Mathf.Pow(b, 2)) / (2 * a)) / innerHeight, 0f, 1f);

        return new Vector2(float.IsNaN(px) ? 0 : px, float.IsNaN(py) ? 0 : py);
    }

 

你可能感兴趣的:(unity,C#,数据)