protected virtual void InitialCurve(ICurveParam curveParam) { if (curveParam.getCurveType() == InterpolationCurveType.bsCurve) { BSplineCurveParam param = (BSplineCurveParam)curveParam; this.curve = new BSplineParametricCurveElement(param); } else { throw new UnmatchedCurveParamTypeException(InterpolationCurveType.bsCurve, curveParam.getCurveType()); } }
private List<DataPoint> sampleABSplineCurve(BSplineParametricCurveElement 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; }