示例#1
0
        public void add(T p, bool optimize)
        {
            if (!optimize || points.Count < 2)
            {
                points.Add(p);
            }
            else
            {
                T dir = mtt.diff(points.at(-1), points.at(-2));
                dir = mtt.mul(1f / mtt.scalar(dir), dir);
                T pdir = mtt.diff(p, points.at(-2));
                pdir = mtt.mul(1f / mtt.scalar(pdir), pdir);

                if (!mtt.eq(dir, pdir))
                {
                    points.Add(p);
                }
                else
                {
                    points[points.Count - 1] = p;
                }
            }
        }
示例#2
0
        public override T getNodeTangent(int nodeIndex)
        {
            int i = getNodeIndex(nodeIndex);

            return(mtt.diff(p[i + 1], p[i]));
        }