Abstract Direct manipulation of B-spline control points has been used for modifying B-spline curves and surfaces. But, designers usually wish to modify shapes in more direct ways in practical designing situations, such as moving a point on a curve to some desirable location or modifying a tangent vector at some point on a curve into another direction etc. The author will propose a method that enables arbitrary and direct modification of curves by constructing a displacement function. Moreover, a systematic B-spline interpolation method which has enough generality for practical use will be proposed. The method is also available for surfaces and some interesting applications will be shown.