protected override void OnPolygonComplete(Polygon2f input) { polygon = input; polygon.MakeCCW(); polygon.BuildIndices(); polygon.BuildHoleIndices(); if (polygon.IsSimple) { if (mode == TRIANGULATION_MODE.CONSTRAINTED) { mesh = ConstraintedTriangulation2.Triangulate(polygon); } else { ConformingCriteria criteria = new ConformingCriteria(); criteria.angBounds = 0.125f; criteria.lenBounds = 0.2f; criteria.iterations = iterations; mesh = ConformingTriangulation2.Triangulate(polygon, criteria); } } else { mesh = new Mesh2f(0, 0); } }
private void Start() { Polygon2f polygon = CreatePolygon2.FromCircle(new Vector2f(), 1.8f, 32); ConformingCriteria criteria = new ConformingCriteria(); criteria.angBounds = 0.125f; criteria.lenBounds = 0.2f; criteria.iterations = 100; var constructor = new FBMeshConstructor <FBVertex2f, FBFace>(); ConformingTriangulation2.Triangulate(polygon, constructor, criteria); mesh = constructor.PopMesh(); int count = mesh.Vertices.Count; positions = new List <Vector2f>(); for (int i = 0; i < mesh.Vertices.Count; i++) { positions.Add(mesh.Vertices[i].Position); } indices = mesh.CreateFaceIndices(3); CreateConnectionLines(mesh); }