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); }
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); }