def test_bspline_curve2d_deriv1(): # Create a curve instance curve = OBJECT_INSTANCE() # Set curve degree curve.degree = 3 # Set control points curve.ctrlpts = CONTROL_POINTS # Set knot vector curve.knotvector = [0.0, 0.0, 0.0, 0.0, 0.33, 0.66, 1.0, 1.0, 1.0, 1.0] # Take the derivative der1 = curve.derivatives(u=0.35, order=2) curve.evaluator = evaluators.CurveEvaluator2() der2 = curve.derivatives(u=0.35, order=2) assert abs(der1[0][0] - der2[0][0]) < GEOMDL_DELTA assert abs(der1[0][1] - der2[0][1]) < GEOMDL_DELTA assert abs(der1[1][0] - der2[1][0]) < GEOMDL_DELTA assert abs(der1[1][1] - der2[1][1]) < GEOMDL_DELTA assert abs(der1[2][0] - der2[2][0]) < GEOMDL_DELTA assert abs(der1[2][1] - der2[2][1]) < GEOMDL_DELTA
def test_bspline_curve3d_deriv2(): # Create a curve instance curve = OBJECT_INSTANCE() # Set curve degree curve.degree = 4 # Set control points curve.ctrlpts = CONTROL_POINTS # Set knot vector curve.knotvector = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.0, 1.0, 1.0, 1.0, 1.0 ] # Take the derivative evalpt = curve.curvept(u=0.35) der1 = curve.derivatives(u=0.35) curve.evaluator = evaluators.CurveEvaluator2() der2 = curve.derivatives(u=0.35) assert abs(der1[0][0] - evalpt[0]) < GEOMDL_DELTA assert abs(der1[0][1] - evalpt[1]) < GEOMDL_DELTA assert abs(der1[0][2] - evalpt[2]) < GEOMDL_DELTA assert abs(der2[0][0] - evalpt[0]) < GEOMDL_DELTA assert abs(der2[0][1] - evalpt[1]) < GEOMDL_DELTA assert abs(der2[0][2] - evalpt[2]) < GEOMDL_DELTA
def test_bspline_curve2d_deriv_eval(spline_curve): evalpt = spline_curve.evaluate_single(0.35) der1 = spline_curve.derivatives(u=0.35) spline_curve.evaluator = evaluators.CurveEvaluator2() der2 = spline_curve.derivatives(u=0.35) assert abs(der1[0][0] - evalpt[0]) < GEOMDL_DELTA assert abs(der1[0][1] - evalpt[1]) < GEOMDL_DELTA assert abs(der2[0][0] - evalpt[0]) < GEOMDL_DELTA assert abs(der2[0][1] - evalpt[1]) < GEOMDL_DELTA
def test_bspline_curve2d_deriv(spline_curve): der1 = spline_curve.derivatives(u=0.35, order=2) spline_curve.evaluator = evaluators.CurveEvaluator2() der2 = spline_curve.derivatives(u=0.35, order=2) assert abs(der1[0][0] - der2[0][0]) < GEOMDL_DELTA assert abs(der1[0][1] - der2[0][1]) < GEOMDL_DELTA assert abs(der1[1][0] - der2[1][0]) < GEOMDL_DELTA assert abs(der1[1][1] - der2[1][1]) < GEOMDL_DELTA assert abs(der1[2][0] - der2[2][0]) < GEOMDL_DELTA assert abs(der1[2][1] - der2[2][1]) < GEOMDL_DELTA
def test_bspline_curve2d_deriv2(bs_curve): # Take the derivative evalpt = bs_curve.evaluate_single(0.35) der1 = bs_curve.derivatives(u=0.35) bs_curve.evaluator = evaluators.CurveEvaluator2() der2 = bs_curve.derivatives(u=0.35) assert abs(der1[0][0] - evalpt[0]) < GEOMDL_DELTA assert abs(der1[0][1] - evalpt[1]) < GEOMDL_DELTA assert abs(der2[0][0] - evalpt[0]) < GEOMDL_DELTA assert abs(der2[0][1] - evalpt[1]) < GEOMDL_DELTA
def test_bspline_curve3d_deriv1(bs_curve): # Take the derivative der1 = bs_curve.derivatives(u=0.35, order=5) bs_curve.evaluator = evaluators.CurveEvaluator2() der2 = bs_curve.derivatives(u=0.35, order=5) assert abs(der1[0][0] - der2[0][0]) < GEOMDL_DELTA assert abs(der1[0][1] - der2[0][1]) < GEOMDL_DELTA assert abs(der1[0][2] - der2[0][2]) < GEOMDL_DELTA assert abs(der1[1][0] - der2[1][0]) < GEOMDL_DELTA assert abs(der1[1][1] - der2[1][1]) < GEOMDL_DELTA assert abs(der1[1][2] - der2[1][2]) < GEOMDL_DELTA assert abs(der1[2][0] - der2[2][0]) < GEOMDL_DELTA assert abs(der1[2][1] - der2[2][1]) < GEOMDL_DELTA assert abs(der1[2][2] - der2[2][2]) < GEOMDL_DELTA
curve.ctrlpts = exchange.import_txt("ex_curve02.cpt") # Auto-generate knot vector curve.knotvector = utilities.generate_knot_vector(curve.degree, len(curve.ctrlpts)) # Set evaluation delta curve.delta = 0.01 # Evaluate curve curve.evaluate() # Plot the control point polygon and the evaluated curve vis_comp = VisMPL.VisCurve2D() curve.vis = vis_comp curve.render() # Evaluate derivatives at u = 0.6 ders1 = curve.derivatives(0.6, 4) # Change evaluator curve.evaluator = evaluators.CurveEvaluator2() # Evaluate derivatives at u = 0.6 using the new evaluator ders2 = curve.derivatives(0.6, 4) # Compute curve tangent at u = 0.6 curvetan = operations.tangent(curve, 0.6) # Good to have something here to put a breakpoint pass