コード例 #1
0
        //
        //
        //
        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));
            }
        }
コード例 #2
0
        //
        // 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;
                    }
                }
            }
        }
コード例 #3
0
        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));
        }
コード例 #4
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;
            }
        }
コード例 #5
0
        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));
            }
        }
コード例 #6
0
        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));
            }
        }