Triangle.ContainsVertex C# (CSharp) Méthode

ContainsVertex() private méthode

private ContainsVertex ( Vector3D, p ) : bool
p Vector3D,
Résultat bool
    private bool ContainsVertex(Vector3D p)
    {
        for (int i=0;i<points.Length;i++){
            if ((p-points[i]).sqrMagnitude < 0.001f){
                return true;
            }
        }
        return false;
    }

Usage Example

    // Bowyer-Watson algorithm
    public IList <Triangle> Triangulate(Vector3[] pointList)
    {
        List <Triangle> triangulation = new List <Triangle>();
        Triangle        superTriangle = CreateBoundingTriangle(pointList);

        triangulation.Add(superTriangle);
        for (int i = 0; i < pointList.Length; i++)
        {
            List <Triangle> badTriangles = new List <Triangle>();
            for (int j = 0; j < triangulation.Count; j++)
            {
                Triangle triangle = triangulation[j];

                if (triangle.IsInsideCircumcircle(pointList[i]))
                {
                    badTriangles.Add(triangle);
                }
            }
            ICollection <Edge> polygon = new HashSet <Edge>();

            if (badTriangles.Count == 1)
            {
                Triangle     triangle = badTriangles[0];
                IList <Edge> edges    = triangle.GetEdges();
                foreach (Edge edge in edges)
                {
                    polygon.Add(edge);
                }
            }
            for (int j = 0; j < badTriangles.Count; j++)
            {
                Triangle triangle = badTriangles[j];
                foreach (Edge edge in triangle.GetEdges())
                {
                    ICollection <Triangle> triangleList = new HashSet <Triangle>(badTriangles);
                    triangleList.Remove(triangle);
                    if (edge.IsEdgeUnshared(triangleList))
                    {
                        polygon.Add(edge);
                    }
                }
            }
            //remove each triangle in badTriangles from triangulation
            foreach (Triangle triangle in badTriangles)
            {
                //remove triangle from triangulation
                triangulation.Remove(triangle);
            }
            foreach (Edge edge in polygon)
            {
                Triangle newTri = new Triangle(pointList[i], edge.A, edge.B);
                if (newTri.IsValid() && !triangulation.Contains(newTri))
                {
                    triangulation.Add(newTri);
                }
            }
        }
        triangulation = triangulation.FindAll(triangle => triangle.ContainsVertex(pointList));
        return(triangulation);
    }
All Usage Examples Of Triangle::ContainsVertex