-
Q: What is the purpose of this app?
A: This interactive web app enables you to explore the relationship between
the following objects that are related to a curve C that can be either a Bezier curve or a spline curve.
- The control points P[i]
- The parameter value t
- The blending functions b[i](t) (Bernstein polynomials or B-spline basis functions)
- The point on the curve C(t) = sum{P[i]*b[i](t)}
-
Q: How do I get this app to run on my computer, tablet, or smart phone?
A: Launch a web browser on your device and access https://richardfuhr.neocities.org/BusyBCurves.html.
-
Q: On which devices does this app run?
A: The web app runs on the following devices:
- Microsoft Windows computers
- Apple macOS computers
- Ubuntu Linux computers
- Google Chromebooks
- iPhones
- Android phones
- iPads
- Kindles
-
Q: What programming language was used to develop this app?
A: TypeScript
-
Q: How is the cubic Bezier curve drawn?
A: The cubic Bezier curve is drawn using the bezierCurveTo method of the CanvasRenderingContext2D object, which is obtained from the HTML5 Canvas.
-
Q: How is the cubic spline curve drawn?
A: The cubic spline curve is drawn by first internally representing it as a piecewise Bezier curve and then using the bezierCurveTo method. The
piecewise-Bezier curve representation is obtained by knot insertion so that each distinct knot has multiplicity equal to the degree.
-
Q: How are the graphs of the Bernstein polynomials drawn?
A: The graph of each Bernstein polynomial b[i](t) is represented as a cubic Bezier curve (t, b[i](t)) by determining the appropriate control points, and
that Bezier curve is drawn as described above.
-
Q: How are the graphs of the B-spline functions drawn?
A: The graph of each B-spline function b[i](t) is represented as a cubic spline curve (t, b[i](t)) by determining the appropriate control points, and
that cubic spline curve is drawn as described above.
-
Q: If I have more questions or comments, how do I contact the developer?
A: Please send your questions or comments to the software developer at
richard.fuhr@gmail.com.