.png)
Ich möchte Text in Ti anzeigenkZ, das perspektivisch verzerrt ist, etwa so:
(Kariertes Muster nur zur Veranschaulichung hinzugefügt)
Es gibt viele ähnliche Lösungen auf TeX.SE (Hier,Hier, oderHier), aber alle, die ich gefunden habe, täuschen die Perspektive lediglich durch die Verwendung von Neigung und Schwenk vor.
Die Lösung sollte den Text wie folgt umwandeln:
- haben einen horizontalen Fluchtpunkt, zu dem alle normalerweise horizontal parallelen Linien merklich zusammenlaufen
- einen vertikalen Fluchtpunkt haben, auf den alle normalerweise vertikal parallelen Linien zulaufen oder sie streng parallel halten (wie in meinem Beispiel oben)
- Bonus, wenn Ihre Lösung es dem Benutzer ermöglicht, den Fluchtpunkt explizit zu definieren.
Sie können dies als Ausgangspunkt verwenden:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\node[draw,align=left] at (0,0) {some text\\maybe with line breaks};
\end{tikzpicture}
\end{document}
Antwort1
Bei diesem Ansatz wird das Wort in kleine Dreiecke unterteilt und jedes Dreieck wird geneigt und geneigt. Dies funktioniert sowohl für Projektionen als auch für allgemeine nichtlineare Transformationen.
Es ist schon einmal erschienen
- Saisonale Herausforderung (Beiträge von TeXing Dead Welcome)
- Zeichnen Sie Text in verschiedenen Formen
- Geometrische Umkehrung eines Bildes (png, jpg, bmp)
\documentclass[border=9,tikz]{standalone}
\begin{document}
\fontsize{188pt}{0}\bfseries
\pgfmathdeclarefunction{fxx}{2}{\pgfmathparse{fx(#1+1,#2)-fx(#1,#2)}}
\pgfmathdeclarefunction{fxy}{2}{\pgfmathparse{fy(#1+1,#2)-fy(#1,#2)}}
\pgfmathdeclarefunction{fyx}{2}{\pgfmathparse{fx(#1,#2+1)-fx(#1,#2)}}
\pgfmathdeclarefunction{fyy}{2}{\pgfmathparse{fy(#1,#2+1)-fy(#1,#2)}}
\begin{tikzpicture}
\pgfmathdeclarefunction{gx}{2}{\pgfmathparse{3*#1-20}}
\pgfmathdeclarefunction{gy}{2}{\pgfmathparse{3.1622*#2}}
\pgfmathdeclarefunction{gz}{2}{\pgfmathparse{#1+10}}
\pgfmathdeclarefunction{fx}{2}{\pgfmathparse{gx(#1,#2)*6/gz(#1,#2)}}
\pgfmathdeclarefunction{fy}{2}{\pgfmathparse{gy(#1,#2)*6/gz(#1,#2)}}
\clip(-15,-9)rectangle(15,10);
\foreach\i in{0,...,40}{
\foreach\j in{-3,...,3}{
\pgfmathsetmacro\aa{fxx(\i,\j)}
\pgfmathsetmacro\ab{fxy(\i,\j)}
\pgfmathsetmacro\ba{fyx(\i,\j)}
\pgfmathsetmacro\bb{fyy(\i,\j)}
\pgfmathsetmacro\xx{fx (\i,\j)}
\pgfmathsetmacro\yy{fy (\i,\j)}
\pgflowlevelobj{
\pgfsettransformentries{\aa}{\ab}{\ba}{\bb}{\xx cm}{\yy cm}
}{
\clip(1,0)--(0,0)--(0,1)--cycle;
\draw(1,0)--(0,0)--(0,1)--cycle;
\tikzset{shift={(-\i,-\j)}}
\path(20,.5)node{WORDART};
}
\pgfmathsetmacro\aa{fxx(\i ,\j+1)}
\pgfmathsetmacro\ab{fxy(\i ,\j+1)}
\pgfmathsetmacro\ba{fyx(\i+1,\j )}
\pgfmathsetmacro\bb{fyy(\i+1,\j )}
\pgfmathsetmacro\xx{fx (\i+1,\j+1)}
\pgfmathsetmacro\yy{fy (\i+1,\j+1)}
\pgflowlevelobj{
\pgfsettransformentries{\aa}{\ab}{\ba}{\bb}{\xx cm}{\yy cm}
}{
\clip(0,0)--(-1,0)--(0,-1)--cycle;
\draw(0,0)--(-1,0)--(0,-1)--cycle;
\tikzset{shift={(-\i-1,-\j-1)}}
\path(20,.5)node{WORDART};
}
}
}
\end{tikzpicture}
\end{document}