public static List <int> CreateTrianglesClock(IList <int> indices) { Debug.Assert(indices.Count % 2 == 0); List <int> rets = new List <int>(); var n = indices.Count; for (var i = 0; i < n / 2; i++) { var id1 = indices[i + 0]; var id2 = indices[i + 1]; var id3 = indices[n - 1 - (i + 1)]; var id4 = indices[n - 1 - (i + 0)]; MeshUtils.AddQuad(rets, id1, id2, id3, id4); } return(rets); }
public static List <int> CreateSpiderWebTriangles(List <Vector3> vectors, Vector3 center, List <Vector3> predicts, int offset) { List <int> ret = new List <int>(); if (predicts.Count != vectors.Count) { Debug.LogError("predict is not equal vectors"); return(null); } int count = vectors.Count; int tailID = count * 2; for (int i = 0; i < count; i++) { //内圈的点,蜘蛛网缝 int idx1 = i; int idx2 = (i + 1) % count; int idx3 = tailID; ret.Add(offset + idx1); ret.Add(offset + idx2); ret.Add(offset + idx3); } //外圈的点 for (int i = 0; i < count; i++) { int idx1 = i + count; int idx2 = (i + count + 1) % (count * 2) == 0 ? count : (i + count + 1); int idx3 = i % count; int idx4 = (i + 1) % count; MeshUtils.AddQuad(ret, offset + idx1, offset + idx2, offset + idx4, offset + idx3); } return(ret); }