# TikZ: non-linear tangent curve

I'd like to draw a tangent curve from point (a) to point (b), intersecting point (c) (the center of the square). The curve should be stretched according to the gray lines (being a logarithmic scale). I've played around with controls, but I didn't get very far. Is there a better way than using controls?

My code so far:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[every node/.style = {draw, circle, fill=white, inner sep=.01cm}]

\draw (0, 1) -- (10, 1) -- (10, -1) -- (0, -1) -- cycle;
\node (a) at (0, -1) {a};   % south-west corner
\node (b) at (10, 1) {b};   % north-east corner
\node (c) at (5, 0) {c};    % center
\foreach \n in {1,...,50} \draw[gray, very thin]
({10/pow(2, \n/12)}, 1)
--  ({10/pow(2, \n/12)}, -1);

\draw[cyan] (a) -- (b);

\end{tikzpicture}
\end{document}


The result:

What I want to achieve is the following (although the left half of the curve should decrease more rapidly):

• Among your trials, have you come across this \draw (0,-1) .. controls (5,-1.0) and (5,1.0) .. (10,1); Further, you could try (5,-1.1) and (5,1.1) pairs too. May 12 '14 at 11:50
• I don't undersand the "logarithmic" nature of your curve. What is is supposed to increase logarithmically? The derivative of the curve? Then, how could it be tangent to (b)? May 12 '14 at 12:23
• Will this produce what you want? \draw[cyan] (a) to[out=0,in=180] (b); May 12 '14 at 12:26
• Or what about this: \draw[cyan] (a) .. controls +(4, 0) and +(-.5, -.5) .. (c.center) .. controls +(.5,.5) and +(-2,0) .. (b);  ? May 12 '14 at 12:30
• Hi, watain, just a thought: Continue searching \draw (0,-1) .. controls (6,-1.0) and (4,1.0) .. (10,1); (7,-1) and (3,1); (8,-1) and (2,1) or any pairs among them, should get one of your expected output. May 12 '14 at 12:30

May be this comes some what closer?

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[every node/.style = {draw, circle, fill=white, inner sep=.01cm}]

\draw (0, 1) -- (10, 1) -- (10, -1) -- (0, -1) -- cycle;
\node (a) at (0, -1) {a};   % south-west corner
\node (b) at (10, 1) {b};   % north-east corner
\node (c) at (5, 0) {c};    % center
\foreach \n in {1,...,50} \draw[gray, very thin]
({10/pow(2, \n/12)}, 1)
--  ({10/pow(2, \n/12)}, -1);

\draw[thick,cyan] (a) to[out=0,in=270,looseness=0.55] (c.center) to[out=65,in=180,looseness=0.5] (b);

\end{tikzpicture}
\end{document}


• At first I wasn't too keen about using the to[...] syntax, but it seems like it's really the easiest way. It pretty much matches what I needed. Thank you! May 13 '14 at 6:49

This is what I get from your description in one of your comments. Was I close to your idea? If not, perhaps you could provide a hand-drawn mockup.

\usetikzlibrary{calc}
\begin{tikzpicture}[every node/.style = {draw, circle, fill=white, inner sep=.01cm}]

\draw (0, 1) -- (10, 1) -- (10, -1) -- (0, -1) -- cycle;
\node (a) at (0, -1) {a};   % south-west corner
\node (b) at (10, 1) {b};   % north-east corner
\node (c) at (5, 0) {c};    % center
\foreach \n in {1,...,50} \draw[gray, very thin]
({10/pow(2, \n/12)}, 1)
--  ({10/pow(2, \n/12)}, -1);

\draw[cyan] (a) .. controls +(5, 0) and +(-.5, -.5) .. (c.center) .. controls +(.5,.5) and +(-1,0) .. (b);
\end{tikzpicture}

• Thanks for your answer, too bad I can't accept two correct answers - yours seems to be a good alternative to what Harish Kumar posted. May 13 '14 at 6:50
• Not worry about the acceptance. More important to me is, if I got it right. Was this the kind of slope you wanted? May 13 '14 at 8:17
• Yes, this is the kind of slope that I wanted. Your answer made me understand how controls really works. Harish Kumar's answer just seemed simpler to me, but both are correct. May 13 '14 at 8:43