Understanding Bezier Curves vs. Circular/Elliptical/Other Arcs
$begingroup$
From what I've read, you cannot construct an elliptical or circular arc with a single bezier curve (though I read maybe you can if the arc is less than 1/4 of a circle or something small like that, or maybe it approximates it close enough).
I would like to know in detail how to think about curves in the general sense, whether the curve be bezier curves or elliptical or circular arcs. I would like to apply this to computer formulas.
- The first part of my question is, why you can't use (cubic) bezier curves to model circular/elliptical arcs.
- The second part is, if you can combine multiple (cubic) bezier curves to define an elliptical/circular arc, and if so, if there is a pattern or formula to it.
- If there are any classes of arcs or curves that are outside of these two that these two cannot model. That would at least introduce me to the idea of what is not possible with these in terms of modeling curves.
The reason for asking is because I was initially under the assumption that all curves were about the same and that they could be modeled by bezier curves, which turns out to be incorrect.
I also just read this:
Maybe you already know this, but it's impossible to convert nurbs to bezier splines exactly because nurbs are rational functions, and bezier splines are polynomials.
I would like to know as part of this if there is any way to transform a NURBS curve into a cubic bezier curve, similar to the other above points. Not necessarily how exactly to do it, but just to know if it is possible to get started.
circle curves bezier-curve
$endgroup$
add a comment |
$begingroup$
From what I've read, you cannot construct an elliptical or circular arc with a single bezier curve (though I read maybe you can if the arc is less than 1/4 of a circle or something small like that, or maybe it approximates it close enough).
I would like to know in detail how to think about curves in the general sense, whether the curve be bezier curves or elliptical or circular arcs. I would like to apply this to computer formulas.
- The first part of my question is, why you can't use (cubic) bezier curves to model circular/elliptical arcs.
- The second part is, if you can combine multiple (cubic) bezier curves to define an elliptical/circular arc, and if so, if there is a pattern or formula to it.
- If there are any classes of arcs or curves that are outside of these two that these two cannot model. That would at least introduce me to the idea of what is not possible with these in terms of modeling curves.
The reason for asking is because I was initially under the assumption that all curves were about the same and that they could be modeled by bezier curves, which turns out to be incorrect.
I also just read this:
Maybe you already know this, but it's impossible to convert nurbs to bezier splines exactly because nurbs are rational functions, and bezier splines are polynomials.
I would like to know as part of this if there is any way to transform a NURBS curve into a cubic bezier curve, similar to the other above points. Not necessarily how exactly to do it, but just to know if it is possible to get started.
circle curves bezier-curve
$endgroup$
add a comment |
$begingroup$
From what I've read, you cannot construct an elliptical or circular arc with a single bezier curve (though I read maybe you can if the arc is less than 1/4 of a circle or something small like that, or maybe it approximates it close enough).
I would like to know in detail how to think about curves in the general sense, whether the curve be bezier curves or elliptical or circular arcs. I would like to apply this to computer formulas.
- The first part of my question is, why you can't use (cubic) bezier curves to model circular/elliptical arcs.
- The second part is, if you can combine multiple (cubic) bezier curves to define an elliptical/circular arc, and if so, if there is a pattern or formula to it.
- If there are any classes of arcs or curves that are outside of these two that these two cannot model. That would at least introduce me to the idea of what is not possible with these in terms of modeling curves.
The reason for asking is because I was initially under the assumption that all curves were about the same and that they could be modeled by bezier curves, which turns out to be incorrect.
I also just read this:
Maybe you already know this, but it's impossible to convert nurbs to bezier splines exactly because nurbs are rational functions, and bezier splines are polynomials.
I would like to know as part of this if there is any way to transform a NURBS curve into a cubic bezier curve, similar to the other above points. Not necessarily how exactly to do it, but just to know if it is possible to get started.
circle curves bezier-curve
$endgroup$
From what I've read, you cannot construct an elliptical or circular arc with a single bezier curve (though I read maybe you can if the arc is less than 1/4 of a circle or something small like that, or maybe it approximates it close enough).
I would like to know in detail how to think about curves in the general sense, whether the curve be bezier curves or elliptical or circular arcs. I would like to apply this to computer formulas.
- The first part of my question is, why you can't use (cubic) bezier curves to model circular/elliptical arcs.
- The second part is, if you can combine multiple (cubic) bezier curves to define an elliptical/circular arc, and if so, if there is a pattern or formula to it.
- If there are any classes of arcs or curves that are outside of these two that these two cannot model. That would at least introduce me to the idea of what is not possible with these in terms of modeling curves.
The reason for asking is because I was initially under the assumption that all curves were about the same and that they could be modeled by bezier curves, which turns out to be incorrect.
I also just read this:
Maybe you already know this, but it's impossible to convert nurbs to bezier splines exactly because nurbs are rational functions, and bezier splines are polynomials.
I would like to know as part of this if there is any way to transform a NURBS curve into a cubic bezier curve, similar to the other above points. Not necessarily how exactly to do it, but just to know if it is possible to get started.
circle curves bezier-curve
circle curves bezier-curve
edited Jan 15 at 22:04
Jyrki Lahtonen
109k13169372
109k13169372
asked Jan 13 at 19:46
Lance PollardLance Pollard
1,162723
1,162723
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
$begingroup$
For a point on a Bézier curve of degree $n$, the $x$ and $y$ coordinates are expressed by $n$-th degree polynomial functions of some parameter $t$, say $x=a(t)$ and $y=b(t)$. If the Bézier curve is a circle of radius $1$ centered at the origin, then $[a(t)]^2 + [b(t)]^2 = 1$ for all values of $t$. The left-hand side is a polynomial of degree $2n$, so it can't be identically equal to $1$ (unless it's constant, independent of $t$, which is an uninteresting corner case). So, an exact representation of a circle is not possible.
A NURBS curve can be expressed exactly as a string of Bézier curves if and only if all of its weights are equal. If the weights are equal, then the "rational" quality of the NURBS curve degenerates, and it becomes a regular (polynomial) b-spline. In that case, you can divide the curve into its Bézier pieces using Boehm's algorithm, as described here.
There are many curves for which you can't write parametric equations in any form, so certainly not in polynomial (Bézier) form. For example, the "curve" $xy=1$, or any other curve with several disconnected pieces.
On the other hand, there is a mathematical theorem (the Weierstrass approximation theorem) that says you can approximate any continuous function as closely as you like by a polynomial. This implies that any parametric curve can be approximated as closely as you like by using a single Bézier curve of sufficiently high degree. However, in practice, instead of using a single Bézier curve with high degree, you'd typically use a string of quadratic or cubic Bézier curves strung end-to-end. In other words, you'd use a spline curve. You can look up "spline" to learn more.
You'll find lots of info if you search for "approximate a circle with Bezier curve". For example: here.
$endgroup$
add a comment |
$begingroup$
A cubic Bezier curve is expressed by polynomials of degree 3. An arc cannot be expressed by any polynomial function, the best you can do is a Taylor series, which is a limit of infinite-dimensional polynomials. But for arcs that are sufficiently short (in terms of the angle), a cubic Bezier curve will be a good approximation. Even a parabola might work, or even a straight line.
Stitching multiple Bezier curves together should work for the general case, but there are better and more efficient algorithms for producing arcs. Sorry but I can't provide a more comprehensive answer right now.
There are also higher-dimensional Bezier curves ($n>3$), but I don't know anything about their properties so I won't say anything more about them.
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "69"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3072440%2funderstanding-bezier-curves-vs-circular-elliptical-other-arcs%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
For a point on a Bézier curve of degree $n$, the $x$ and $y$ coordinates are expressed by $n$-th degree polynomial functions of some parameter $t$, say $x=a(t)$ and $y=b(t)$. If the Bézier curve is a circle of radius $1$ centered at the origin, then $[a(t)]^2 + [b(t)]^2 = 1$ for all values of $t$. The left-hand side is a polynomial of degree $2n$, so it can't be identically equal to $1$ (unless it's constant, independent of $t$, which is an uninteresting corner case). So, an exact representation of a circle is not possible.
A NURBS curve can be expressed exactly as a string of Bézier curves if and only if all of its weights are equal. If the weights are equal, then the "rational" quality of the NURBS curve degenerates, and it becomes a regular (polynomial) b-spline. In that case, you can divide the curve into its Bézier pieces using Boehm's algorithm, as described here.
There are many curves for which you can't write parametric equations in any form, so certainly not in polynomial (Bézier) form. For example, the "curve" $xy=1$, or any other curve with several disconnected pieces.
On the other hand, there is a mathematical theorem (the Weierstrass approximation theorem) that says you can approximate any continuous function as closely as you like by a polynomial. This implies that any parametric curve can be approximated as closely as you like by using a single Bézier curve of sufficiently high degree. However, in practice, instead of using a single Bézier curve with high degree, you'd typically use a string of quadratic or cubic Bézier curves strung end-to-end. In other words, you'd use a spline curve. You can look up "spline" to learn more.
You'll find lots of info if you search for "approximate a circle with Bezier curve". For example: here.
$endgroup$
add a comment |
$begingroup$
For a point on a Bézier curve of degree $n$, the $x$ and $y$ coordinates are expressed by $n$-th degree polynomial functions of some parameter $t$, say $x=a(t)$ and $y=b(t)$. If the Bézier curve is a circle of radius $1$ centered at the origin, then $[a(t)]^2 + [b(t)]^2 = 1$ for all values of $t$. The left-hand side is a polynomial of degree $2n$, so it can't be identically equal to $1$ (unless it's constant, independent of $t$, which is an uninteresting corner case). So, an exact representation of a circle is not possible.
A NURBS curve can be expressed exactly as a string of Bézier curves if and only if all of its weights are equal. If the weights are equal, then the "rational" quality of the NURBS curve degenerates, and it becomes a regular (polynomial) b-spline. In that case, you can divide the curve into its Bézier pieces using Boehm's algorithm, as described here.
There are many curves for which you can't write parametric equations in any form, so certainly not in polynomial (Bézier) form. For example, the "curve" $xy=1$, or any other curve with several disconnected pieces.
On the other hand, there is a mathematical theorem (the Weierstrass approximation theorem) that says you can approximate any continuous function as closely as you like by a polynomial. This implies that any parametric curve can be approximated as closely as you like by using a single Bézier curve of sufficiently high degree. However, in practice, instead of using a single Bézier curve with high degree, you'd typically use a string of quadratic or cubic Bézier curves strung end-to-end. In other words, you'd use a spline curve. You can look up "spline" to learn more.
You'll find lots of info if you search for "approximate a circle with Bezier curve". For example: here.
$endgroup$
add a comment |
$begingroup$
For a point on a Bézier curve of degree $n$, the $x$ and $y$ coordinates are expressed by $n$-th degree polynomial functions of some parameter $t$, say $x=a(t)$ and $y=b(t)$. If the Bézier curve is a circle of radius $1$ centered at the origin, then $[a(t)]^2 + [b(t)]^2 = 1$ for all values of $t$. The left-hand side is a polynomial of degree $2n$, so it can't be identically equal to $1$ (unless it's constant, independent of $t$, which is an uninteresting corner case). So, an exact representation of a circle is not possible.
A NURBS curve can be expressed exactly as a string of Bézier curves if and only if all of its weights are equal. If the weights are equal, then the "rational" quality of the NURBS curve degenerates, and it becomes a regular (polynomial) b-spline. In that case, you can divide the curve into its Bézier pieces using Boehm's algorithm, as described here.
There are many curves for which you can't write parametric equations in any form, so certainly not in polynomial (Bézier) form. For example, the "curve" $xy=1$, or any other curve with several disconnected pieces.
On the other hand, there is a mathematical theorem (the Weierstrass approximation theorem) that says you can approximate any continuous function as closely as you like by a polynomial. This implies that any parametric curve can be approximated as closely as you like by using a single Bézier curve of sufficiently high degree. However, in practice, instead of using a single Bézier curve with high degree, you'd typically use a string of quadratic or cubic Bézier curves strung end-to-end. In other words, you'd use a spline curve. You can look up "spline" to learn more.
You'll find lots of info if you search for "approximate a circle with Bezier curve". For example: here.
$endgroup$
For a point on a Bézier curve of degree $n$, the $x$ and $y$ coordinates are expressed by $n$-th degree polynomial functions of some parameter $t$, say $x=a(t)$ and $y=b(t)$. If the Bézier curve is a circle of radius $1$ centered at the origin, then $[a(t)]^2 + [b(t)]^2 = 1$ for all values of $t$. The left-hand side is a polynomial of degree $2n$, so it can't be identically equal to $1$ (unless it's constant, independent of $t$, which is an uninteresting corner case). So, an exact representation of a circle is not possible.
A NURBS curve can be expressed exactly as a string of Bézier curves if and only if all of its weights are equal. If the weights are equal, then the "rational" quality of the NURBS curve degenerates, and it becomes a regular (polynomial) b-spline. In that case, you can divide the curve into its Bézier pieces using Boehm's algorithm, as described here.
There are many curves for which you can't write parametric equations in any form, so certainly not in polynomial (Bézier) form. For example, the "curve" $xy=1$, or any other curve with several disconnected pieces.
On the other hand, there is a mathematical theorem (the Weierstrass approximation theorem) that says you can approximate any continuous function as closely as you like by a polynomial. This implies that any parametric curve can be approximated as closely as you like by using a single Bézier curve of sufficiently high degree. However, in practice, instead of using a single Bézier curve with high degree, you'd typically use a string of quadratic or cubic Bézier curves strung end-to-end. In other words, you'd use a spline curve. You can look up "spline" to learn more.
You'll find lots of info if you search for "approximate a circle with Bezier curve". For example: here.
edited Jan 14 at 2:03
answered Jan 14 at 1:22
bubbabubba
30.3k33086
30.3k33086
add a comment |
add a comment |
$begingroup$
A cubic Bezier curve is expressed by polynomials of degree 3. An arc cannot be expressed by any polynomial function, the best you can do is a Taylor series, which is a limit of infinite-dimensional polynomials. But for arcs that are sufficiently short (in terms of the angle), a cubic Bezier curve will be a good approximation. Even a parabola might work, or even a straight line.
Stitching multiple Bezier curves together should work for the general case, but there are better and more efficient algorithms for producing arcs. Sorry but I can't provide a more comprehensive answer right now.
There are also higher-dimensional Bezier curves ($n>3$), but I don't know anything about their properties so I won't say anything more about them.
$endgroup$
add a comment |
$begingroup$
A cubic Bezier curve is expressed by polynomials of degree 3. An arc cannot be expressed by any polynomial function, the best you can do is a Taylor series, which is a limit of infinite-dimensional polynomials. But for arcs that are sufficiently short (in terms of the angle), a cubic Bezier curve will be a good approximation. Even a parabola might work, or even a straight line.
Stitching multiple Bezier curves together should work for the general case, but there are better and more efficient algorithms for producing arcs. Sorry but I can't provide a more comprehensive answer right now.
There are also higher-dimensional Bezier curves ($n>3$), but I don't know anything about their properties so I won't say anything more about them.
$endgroup$
add a comment |
$begingroup$
A cubic Bezier curve is expressed by polynomials of degree 3. An arc cannot be expressed by any polynomial function, the best you can do is a Taylor series, which is a limit of infinite-dimensional polynomials. But for arcs that are sufficiently short (in terms of the angle), a cubic Bezier curve will be a good approximation. Even a parabola might work, or even a straight line.
Stitching multiple Bezier curves together should work for the general case, but there are better and more efficient algorithms for producing arcs. Sorry but I can't provide a more comprehensive answer right now.
There are also higher-dimensional Bezier curves ($n>3$), but I don't know anything about their properties so I won't say anything more about them.
$endgroup$
A cubic Bezier curve is expressed by polynomials of degree 3. An arc cannot be expressed by any polynomial function, the best you can do is a Taylor series, which is a limit of infinite-dimensional polynomials. But for arcs that are sufficiently short (in terms of the angle), a cubic Bezier curve will be a good approximation. Even a parabola might work, or even a straight line.
Stitching multiple Bezier curves together should work for the general case, but there are better and more efficient algorithms for producing arcs. Sorry but I can't provide a more comprehensive answer right now.
There are also higher-dimensional Bezier curves ($n>3$), but I don't know anything about their properties so I won't say anything more about them.
answered Jan 13 at 21:24
Cuspy CodeCuspy Code
32626
32626
add a comment |
add a comment |
Thanks for contributing an answer to Mathematics Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3072440%2funderstanding-bezier-curves-vs-circular-elliptical-other-arcs%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown