public Point3DCollection FillMesh(int xVertices, int yVertices, double startT) { BezierEvaluator lBezier = new BezierEvaluator(); lBezier.Point1 = LeftPoint1; lBezier.Point2 = LeftPoint2; lBezier.Point3 = LeftPoint3; lBezier.Point4 = LeftPoint4; BezierEvaluator rBezier = new BezierEvaluator(); rBezier.Point1 = RightPoint1; rBezier.Point2 = RightPoint2; rBezier.Point3 = RightPoint3; rBezier.Point4 = RightPoint4; LineEvaluator line = new LineEvaluator(); double t = startT; double deltaT = (1.0D - startT) / (yVertices - 1); Point3DCollection positions = new Point3DCollection(); for (int y = 0; y < yVertices; y++) { Point3D leftBezier = lBezier.Evaluate(t); Point3D rightBezier = rBezier.Evaluate(t); for (int x = 0; x < xVertices; x++) { double lineT = (double)x / (xVertices - 1); line.Point1 = leftBezier; line.Point2 = rightBezier; Point3D linePos = line.Evaluate(lineT); if (x == 0) { positions.Add(leftBezier); } else if (x == xVertices - 1) { positions.Add(rightBezier); } else { positions.Add(linePos); } } t += deltaT; } return(positions); }
public Point3DCollection FillMesh(int xVertices, int yVertices, double startT) { BezierEvaluator lBezier = new BezierEvaluator(); lBezier.Point1 = LeftPoint1; lBezier.Point2 = LeftPoint2; lBezier.Point3 = LeftPoint3; lBezier.Point4 = LeftPoint4; BezierEvaluator rBezier = new BezierEvaluator(); rBezier.Point1 = RightPoint1; rBezier.Point2 = RightPoint2; rBezier.Point3 = RightPoint3; rBezier.Point4 = RightPoint4; LineEvaluator line = new LineEvaluator(); double t = startT; double deltaT = (1.0D - startT)/(yVertices - 1); Point3DCollection positions = new Point3DCollection(); for (int y = 0; y < yVertices; y++) { Point3D leftBezier = lBezier.Evaluate(t); Point3D rightBezier = rBezier.Evaluate(t); for (int x = 0; x < xVertices; x++) { double lineT = (double) x/(xVertices - 1); line.Point1 = leftBezier; line.Point2 = rightBezier; Point3D linePos = line.Evaluate(lineT); if (x == 0) { positions.Add(leftBezier); } else if (x == xVertices - 1) { positions.Add(rightBezier); } else { positions.Add(linePos); } } t += deltaT; } return positions; }