Drawing a curve tangent to a line
I'd like to draw a set of curves, each tangent to a different point on a given line. The requirement is that the curves are convex and downward sloping.
In the following MWE, I use the to[out=<x>,in=<y>]
operation to manually adjust the slope of the curves so that they appear to be tangent at the desired point. This requires a lot of trial-and-errors and the result is not ideal. Is there a better way to draw such curves?
MWE
documentclass[border=2pt,tikz]{standalone}
begin{document}
begin{tikzpicture}
foreach i in {1,2,3,4}{
draw[thick](0,4.5)--(7,0)coordinate[pos=i/5](i);
fill(i)circle[radius=2pt]node[below left]{pt i};
draw[red](i)to[out=140,in=-80]++(-1,1.5) (i)to[out=-25,in=170]++(1.25,-.4);
}
draw[<->](0,5)node[left]{$y$}--(0,0)--(8,0)node[below]{$x$};
end{tikzpicture}
end{document}
tikz-pgf
add a comment |
I'd like to draw a set of curves, each tangent to a different point on a given line. The requirement is that the curves are convex and downward sloping.
In the following MWE, I use the to[out=<x>,in=<y>]
operation to manually adjust the slope of the curves so that they appear to be tangent at the desired point. This requires a lot of trial-and-errors and the result is not ideal. Is there a better way to draw such curves?
MWE
documentclass[border=2pt,tikz]{standalone}
begin{document}
begin{tikzpicture}
foreach i in {1,2,3,4}{
draw[thick](0,4.5)--(7,0)coordinate[pos=i/5](i);
fill(i)circle[radius=2pt]node[below left]{pt i};
draw[red](i)to[out=140,in=-80]++(-1,1.5) (i)to[out=-25,in=170]++(1.25,-.4);
}
draw[<->](0,5)node[left]{$y$}--(0,0)--(8,0)node[below]{$x$};
end{tikzpicture}
end{document}
tikz-pgf
add a comment |
I'd like to draw a set of curves, each tangent to a different point on a given line. The requirement is that the curves are convex and downward sloping.
In the following MWE, I use the to[out=<x>,in=<y>]
operation to manually adjust the slope of the curves so that they appear to be tangent at the desired point. This requires a lot of trial-and-errors and the result is not ideal. Is there a better way to draw such curves?
MWE
documentclass[border=2pt,tikz]{standalone}
begin{document}
begin{tikzpicture}
foreach i in {1,2,3,4}{
draw[thick](0,4.5)--(7,0)coordinate[pos=i/5](i);
fill(i)circle[radius=2pt]node[below left]{pt i};
draw[red](i)to[out=140,in=-80]++(-1,1.5) (i)to[out=-25,in=170]++(1.25,-.4);
}
draw[<->](0,5)node[left]{$y$}--(0,0)--(8,0)node[below]{$x$};
end{tikzpicture}
end{document}
tikz-pgf
I'd like to draw a set of curves, each tangent to a different point on a given line. The requirement is that the curves are convex and downward sloping.
In the following MWE, I use the to[out=<x>,in=<y>]
operation to manually adjust the slope of the curves so that they appear to be tangent at the desired point. This requires a lot of trial-and-errors and the result is not ideal. Is there a better way to draw such curves?
MWE
documentclass[border=2pt,tikz]{standalone}
begin{document}
begin{tikzpicture}
foreach i in {1,2,3,4}{
draw[thick](0,4.5)--(7,0)coordinate[pos=i/5](i);
fill(i)circle[radius=2pt]node[below left]{pt i};
draw[red](i)to[out=140,in=-80]++(-1,1.5) (i)to[out=-25,in=170]++(1.25,-.4);
}
draw[<->](0,5)node[left]{$y$}--(0,0)--(8,0)node[below]{$x$};
end{tikzpicture}
end{document}
tikz-pgf
tikz-pgf
asked 4 hours ago
Herr K.Herr K.
14k43483
14k43483
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You could use decorations.marking
, which transforms you automatically in tangent space. Then you just need to draw a curve which has slope 0 at (0,0)
.
documentclass[border=2pt,tikz]{standalone}
usetikzlibrary{decorations.markings}
begin{document}
begin{tikzpicture}[touching curve at/.style={postaction=decorate,
decoration={markings,mark=at position #1 with
{draw[touching] (-1,0.5) to[out=-45,in=180] (0,0) to[out=0,in=-135] (1,0.5);}}},
touching/.style={red}]
draw[thick,touching curve at/.list={1/5,2/5,3/5,4/5}](0,4.5)--(7,0);
draw[<->](0,5)node[left]{$y$}--(0,0)--(8,0)node[below]{$x$};
end{tikzpicture}
end{document}
2
Awesome! Thank you very much!
– Herr K.
4 hours ago
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "85"
};
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
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%2ftex.stackexchange.com%2fquestions%2f475118%2fdrawing-a-curve-tangent-to-a-line%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You could use decorations.marking
, which transforms you automatically in tangent space. Then you just need to draw a curve which has slope 0 at (0,0)
.
documentclass[border=2pt,tikz]{standalone}
usetikzlibrary{decorations.markings}
begin{document}
begin{tikzpicture}[touching curve at/.style={postaction=decorate,
decoration={markings,mark=at position #1 with
{draw[touching] (-1,0.5) to[out=-45,in=180] (0,0) to[out=0,in=-135] (1,0.5);}}},
touching/.style={red}]
draw[thick,touching curve at/.list={1/5,2/5,3/5,4/5}](0,4.5)--(7,0);
draw[<->](0,5)node[left]{$y$}--(0,0)--(8,0)node[below]{$x$};
end{tikzpicture}
end{document}
2
Awesome! Thank you very much!
– Herr K.
4 hours ago
add a comment |
You could use decorations.marking
, which transforms you automatically in tangent space. Then you just need to draw a curve which has slope 0 at (0,0)
.
documentclass[border=2pt,tikz]{standalone}
usetikzlibrary{decorations.markings}
begin{document}
begin{tikzpicture}[touching curve at/.style={postaction=decorate,
decoration={markings,mark=at position #1 with
{draw[touching] (-1,0.5) to[out=-45,in=180] (0,0) to[out=0,in=-135] (1,0.5);}}},
touching/.style={red}]
draw[thick,touching curve at/.list={1/5,2/5,3/5,4/5}](0,4.5)--(7,0);
draw[<->](0,5)node[left]{$y$}--(0,0)--(8,0)node[below]{$x$};
end{tikzpicture}
end{document}
2
Awesome! Thank you very much!
– Herr K.
4 hours ago
add a comment |
You could use decorations.marking
, which transforms you automatically in tangent space. Then you just need to draw a curve which has slope 0 at (0,0)
.
documentclass[border=2pt,tikz]{standalone}
usetikzlibrary{decorations.markings}
begin{document}
begin{tikzpicture}[touching curve at/.style={postaction=decorate,
decoration={markings,mark=at position #1 with
{draw[touching] (-1,0.5) to[out=-45,in=180] (0,0) to[out=0,in=-135] (1,0.5);}}},
touching/.style={red}]
draw[thick,touching curve at/.list={1/5,2/5,3/5,4/5}](0,4.5)--(7,0);
draw[<->](0,5)node[left]{$y$}--(0,0)--(8,0)node[below]{$x$};
end{tikzpicture}
end{document}
You could use decorations.marking
, which transforms you automatically in tangent space. Then you just need to draw a curve which has slope 0 at (0,0)
.
documentclass[border=2pt,tikz]{standalone}
usetikzlibrary{decorations.markings}
begin{document}
begin{tikzpicture}[touching curve at/.style={postaction=decorate,
decoration={markings,mark=at position #1 with
{draw[touching] (-1,0.5) to[out=-45,in=180] (0,0) to[out=0,in=-135] (1,0.5);}}},
touching/.style={red}]
draw[thick,touching curve at/.list={1/5,2/5,3/5,4/5}](0,4.5)--(7,0);
draw[<->](0,5)node[left]{$y$}--(0,0)--(8,0)node[below]{$x$};
end{tikzpicture}
end{document}
answered 4 hours ago
marmotmarmot
100k4116223
100k4116223
2
Awesome! Thank you very much!
– Herr K.
4 hours ago
add a comment |
2
Awesome! Thank you very much!
– Herr K.
4 hours ago
2
2
Awesome! Thank you very much!
– Herr K.
4 hours ago
Awesome! Thank you very much!
– Herr K.
4 hours ago
add a comment |
Thanks for contributing an answer to TeX - LaTeX 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.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
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%2ftex.stackexchange.com%2fquestions%2f475118%2fdrawing-a-curve-tangent-to-a-line%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');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
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');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
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');
var $window = $(window),
onScroll = function(e) {
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom)) {
StackExchange.using('gps', function() { StackExchange.gps.track('embedded_signup_form.view', { location: 'question_page' }); });
$window.unbind('scroll', onScroll);
}
};
$window.on('scroll', onScroll);
});
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