public void AlgorithmBruteDirection()
    {
        var dataCloud = mConvexHull3.DataCloud;
        var points    = mConvexHull3.Vertices;

        const int X = 128;
        const int Y = 128;

        mVolume = float.MaxValue;
        for (int y = 0; y < Y; y++)
        {
            for (int x = 0; x < X; x++)
            {
                float fx = (float)x / (X - 1) * 2f - 1f;
                float fy = (float)y / (Y - 1) * 2f - 1f;

                float sqLength = fx * fx + fy * fy;
                if (sqLength > 1f)
                {
                    continue;
                }

                float fz = Mathf.Sqrt(1f - sqLength);

                Vector3 zAxis = new Vector3(fx, fy, fz);
                Vector3 xAxis;
                Vector3 yAxis;
                ExtMathf.AxesFromAxis(zAxis, out xAxis, out yAxis);

                BoxFromNormalAxes(xAxis, yAxis, zAxis);
            }
        }
    }
Beispiel #2
0
    public static void TestExtMath()
    {
        float a = 1f;
        float b = 1f + 1e-6f;
        float c = 1f + 1e-4f;

        Debug.Assert(ExtMathf.Equal(a, b));
        Debug.Assert(!ExtMathf.Equal(a, c));
        Debug.Assert(ExtMathf.Greater(c, a));
        Debug.Assert(!ExtMathf.Greater(b, a));
        Debug.Assert(ExtMathf.Less(a, c));
        Debug.Assert(!ExtMathf.Less(a, b));

        Vector3 A = new Vector3(-1, 0, -1);
        Vector3 B = new Vector3(1, 0, 1);
        Vector3 C = new Vector3(0, 1, 0);
        Vector3 D = new Vector3(0, (1f / 3f), 0);

        Debug.Assert(ExtMathf.Centroid(A, B, C) == D);

        Vector3 xAxis = new Vector3(Random.Range(-1f, 1f), Random.Range(-1f, 1f), Random.Range(-1f, 1f)).normalized;
        Vector3 yAxis;
        Vector3 zAxis;

        ExtMathf.AxesFromAxis(xAxis, out yAxis, out zAxis);
        Debug.Assert(ExtMathf.Equal(Vector3.Cross(yAxis, zAxis).normalized, xAxis));
        Debug.Assert(ExtMathf.Equal(Vector3.Cross(zAxis, xAxis).normalized, yAxis));
        Debug.Assert(ExtMathf.Equal(Vector3.Cross(xAxis, yAxis).normalized, zAxis));
    }
Beispiel #3
0
    public Triangle(Vector3 V, Vector3 N)
    {
        Vector3 xAxis;
        Vector3 yAxis;

        ExtMathf.AxesFromAxis(N, out xAxis, out yAxis);

        Initialize(V + xAxis, V, V + yAxis);
    }