// // // public void Cap(PointList points) { // Add positions for (int i = 0; i < points.Count; i++) { AddPosition(points, i); } // Add triangles for (int i = 0; i < points.Count - 2; i++) { AddTriangle(points.Uid(0), points.Uid(i + 1), points.Uid(i + 2)); } }
// // Update pointsA UV Mapping to get continuity with pointsB UVMapping // public static void Connect(PointList pointsA, PointList pointsB) { // Check uids identity for (int i = 0; i < pointsA.Count; i++) { for (int j = 0; j < pointsB.Count; j++) { if (pointsA.Uid(i) == pointsB.Uid(j)) { Vector2 uv = pointsB.UVMapper.GetUV(pointsB [j]); pointsA.UVMapper.SetConstraint(pointsA[i], uv); return; } } } float epsilon = 0.001f; // Check coordinates identity for (int i = 0; i < pointsA.Count; i++) { for (int j = 0; j < pointsB.Count; j++) { float d = Vector3.Distance(pointsA [i], pointsB[j]); if (d < epsilon) { Vector2 uv = pointsB.UVMapper.GetUV(pointsB [j]); pointsA.UVMapper.SetConstraint(pointsA[i], uv); return; } } } }
public void TestCopy() { PointList list0 = new PointList(); list0.Add(1f, 1f, 1f); int uid0 = list0.Uid(0); PointList list1 = new PointList(); list1.Copy(list0, 0); Assert.AreEqual(uid0, list1.Uid(0)); }
// // Add a position from a PointList // Warning : here we assume uvs and positions share the same index ... NOT SURE AT ALL ! // private void AddPosition(PointList points, int i) { int uid = points.Uid(i); if (!m_uidToIndex.ContainsKey(uid)) { Vector3 point = points [i]; int index = m_positions.Count; m_positions.Add(point); m_uvs.Add(points.UVMapper.GetUV(point)); m_uidToIndex [uid] = index; } }
public void TestReverse() { PointList list0 = new PointList(); list0.Add(0f, 0f, 0f); list0.Add(1f, 1f, 1f); list0.Add(2f, 2f, 2f); PointList list1 = list0.Reverse(); Assert.AreEqual(3, list1.Count); for (int i = 0; i < 3; i++) { Assert.AreEqual(list0.Uid(i), list1.Uid(2 - i)); } }
public void TestDuplicate() { PointList list0 = new PointList(); list0.Add(0f, 0f, 0f); list0.Add(1f, 1f, 1f); list0.Add(2f, 2f, 2f); PointList list1 = list0.Duplicate(); Assert.AreEqual(3, list1.Count); for (int i = 0; i < 3; i++) { Assert.AreEqual(list0 [i], list1 [i]); Assert.AreNotEqual(list0.Uid(i), list1.Uid(i)); } }