Ejemplo n.º 1
0
        private Vector3 FindBestVertex(float x, float y, float z, int corners)
        {
            QEFData data = new QEFData();

            data.positions = GetCrossingPoints(x, y, z, corners);
            data.normals   = new Vector3[data.positions.Length];

            for (int i = 0; i < data.normals.Length; i++)
            {
                Vector3 point = data.positions[i];
                data.normals[i] = CalculateSurfaceNormal(point.x + x, point.y + y, point.z + z);
            }

            data = QEFSolver.Solve3D(data);

            return(data.point);
        }
Ejemplo n.º 2
0
    public Vector3 getPoint()
    {
        if (dirty)
        {
            dirty = false;

            List <Vector3> p = new List <Vector3>();
            List <Vector3> n = new List <Vector3>();

            foreach (Edge edge in edges)
            {
                p.Add(edge.p);
                n.Add(edge.n);
            }

            point = QEFSolver.minimize(p.ToArray(), n.ToArray(), point, 50, 0.02f);
        }

        return(point);
    }