コード例 #1
0
        public List <Point> Subdivide(Point point, int count, GetCachedPointDelegate checkPoint)
        {
            List <Point> segments = new List <Point> (count + 1);

            segments.Add(this);

            double dx          = point.x - this.x;
            double dy          = point.y - this.y;
            double dz          = point.z - this.z;
            double doublex     = (double)this.x;
            double doubley     = (double)this.y;
            double doublez     = (double)this.z;
            double doubleCount = (double)count;

            for (int i = 1; i < count; i++)
            {
                Point np = new Point(
                    (float)(doublex + dx * (double)i / doubleCount),
                    (float)(doubley + dy * (double)i / doubleCount),
                    (float)(doublez + dz * (double)i / doubleCount)
                    );
                np = checkPoint(np);
                segments.Add(np);
            }

            segments.Add(point);

            return(segments);
        }
コード例 #2
0
ファイル: Point.cs プロジェクト: capitolinteractive/VietVR
        public List <Point> Subdivide(Point point, int count, GetCachedPointDelegate checkPoint)
        {
            List <Point> segments = new List <Point> (count + 1);

            segments.Add(this);

            for (int i = 1; i < count; i++)
            {
                Point np = new Point(this.x + (point.x - this.x) * i / count,
                                     this.y + (point.y - this.y) * i / count,
                                     this.z + (point.z - this.z) * i / count);
                np = checkPoint(np);
                segments.Add(np);
            }

            segments.Add(point);

            return(segments);
        }