private MTriangle GetTriangle(int index) { var t = new MTriangle(); if (triangles.Length < (index * 3 + 2) || index == -1) { Debug.LogWarning("Trying to access " + index + " but " + (index * 3 + 2) + " > " + triangles.Length); } t[0] = triangles[index * 3 + 0]; t[1] = triangles[index * 3 + 1]; t[2] = triangles[index * 3 + 2]; return(t); }
private int getNeighboringTriangle(int vertex, MTriangle mTriangle) { var triangleCandidates = g.getTrianglesAt(vertex); foreach (var t in triangleCandidates) { PolygonSide side; if (mTriangle.isNeighbor(GetTriangle(t), out side)) { Debug.Log("Is neighbor at side " + side); return(t); } } Debug.LogError("Not a neighbor"); return(-1); }
private bool isLHS(MTriangle mTriangle, PolygonSide pairEntry, int vertexExit) { foreach (var side in mTriangle.GetSides()) { if (pairEntry.SameAs(side)) { if (vertexExit == side.left) { return(false); } else if (vertexExit == side.right) { return(true); } } } return(false); }
internal bool isNeighbor(MTriangle t2, out PolygonSide neighbor) { var sides = GetSides(); foreach (var side in sides) { if (t2.innerList.Contains(side.left) && t2.innerList.Contains(side.right)) { neighbor = side; return(true); } } // var intersect = this.innerList.Intersect (t2.innerList).ToList (); // if (intersect.Count == 2) { // neighbor = new Pair<int> (intersect[0], intersect[1]); // return true; // } else { neighbor = null; return(false); // } }