First of all, everything that follows refers to real functions and numbers. Let us define a parametric equation $r(t)=(x(t),y(t))=(-\sin{t},\cos{t})$ and two functions: \begin{equation*} f(x)=4x\qquad\text{and}\qquad g(x)=\frac{x}{2^{\lfloor\ln(x)\rfloor}} \end{equation*}
We retrieve the tangents by iterating $t$ within a real interval $]0,stop]$, where each tangent passes the two points $P_1$ and $P_2$:
\begin{array}{ll} P_1=(x_{P_1},y_{P_1})=r(2\pi\cdot g(t))) & P_2=(x_{P_2},y_{P_2})=r(2\pi\cdot g(f(t))) \end{array}
For example, when $t$ ran from $1$ to $100$ in steps of $0.2$ we retrieve the following cardioid-like curve:
Many such curves can be generated by varying the functions $f$ and $g$ slightly, for example:
How can I proceed to determine the function of these nice curves from its given tangents resulting from the parameterized equation $r(t)$ and both functions $f$ and $g$?
One can retrace and plot the curve as a family of lines using the following parametric function:
r[t_] := (x = -Sin[t]; y = Cos[t]; {x, y});
f[n_] := n*4;
g[n_] := n/2^Floor[Log[n]];
parametricFunc[t_, u_] := (P1 = r[2 Pi*g[t]];
P2 = r[2 Pi*g[f[t]]]; {P1[[1]] + u*(P2[[1]] - P1[[1]]),
P1[[2]] + u*(P2[[2]] - P1[[2]])});
ParametricPlot[parametricFunc[t, u], {t, 0.01, 1}, {u, 0, 1}]
It produces the following definition: