protected override void InitialCurve(ICurveParam curveParam) { if (curveParam.getCurveType() == InterpolationCurveType.nurbsCurve) { NurbsCurveParam param = (NurbsCurveParam)curveParam; this.curve = new NurbsParametricCurveElement(param); } else { throw new UnmatchedCurveParamTypeException(InterpolationCurveType.nurbsCurve, curveParam.getCurveType()); } }
private List<DataPoint> sampleANurbsCurve(NurbsParametricCurveElement curve) { double stepSize = 0.005; int step = 200; if (curve.Interval.Length > 1) { stepSize = curve.Interval.Length.AccurateValue / step; } else { step = (int)(curve.Interval.Length.AccurateValue / stepSize); } DoubleExtension parametricValue = curve.Interval.LeftBorder; List<DataPoint> pts = new List<DataPoint>(); int count = 0; while (count++ < step) { pts.Add(curve.calculatePoint(parametricValue)); parametricValue += stepSize; } return pts; }