Mathematisches Modell plotten | TeXwelt

Mathematisches Modell plotten

Bei meinem Vortrag “Grafik mit LaTeX” bei der DANTE-Frühjahrstagung 2018 sagte ich, dass man auch Menschen mit TikZ und pgfplots porträtieren könne. Ich erwähnte, dass ich mit pgfplots vor einiger Zeit ein mathematisches Modell einer Frau geplottet habe. Ein Bild zeigte ich in der Präsentation nicht, da ich ich keine Kleidung hierzu modelliert habe. Das Gesicht ist wegen der Datenschutzgrundverordnung weggelassen.

Es ist Mathematik und TeX und Kunst – dennoch bitte nur übersetzen wenn man sich von abstrahierter Nacktheit nicht abgeschreckt fühlt.

Der Code, zum schnellen Übersetzen mit geringer Auflösung:

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{
  width  = 7cm,
  compat = 1.11,
  /pgf/declare function = {
    bx(\a,\b,\c,\d,\e) = tanh(\d*(\a-\b)) + tanh(-1*\e*(\a-\c));
    ex(\x,\y,\z)       = exp(-1*(\x-\y)^2/\z);
    ra(\x,\y)          = 0.4*(1-0.4*ex(\x,0.8,0.15) + sin(2*pi*\y)^2
       + 0.6*ex(\x,0.8,0.25)*cos(2*pi*\y)^2
       + 0.3*cos(2*pi*\y))*0.5*(1+tanh(4*\x))
       + (1-0.2*ex(\x,-1.3,0.9))*0.5*(1+tanh(-4*\x))*(0.5*(1+sin(2*pi*\y)^2
       + 0.3*cos(2*pi*\y))*((abs(sin(2*pi*\y)))^1.3+0.08*(1+tanh(4*\x))))
       + 0.13*bx(cos(pi*\y),-0.45,0.45,5,5)*bx(\x,-0.5,0.2,4,2)
       - 0.1*bx(cos(pi*\y),-0.008,0.008,30,30)*bx(\x,-0.4,0.25,8,6)
       - 0.05*sin(pi*\y)^16*bx(\x,-0.55,-0.35,8,18);
  }
}
\begin{document}
\begin{tikzpicture}
  \begin{axis
}[
      small,
      trig format plots = rad,% radian instead of deg
      grid              = major,% thin gray grid lines
      z post scale      = 3,% scaling height
      samples           = 20,% use 20 for low res quicker compiling
                             % I chose 100 for high resolution
      samples y         = 20,% use 20 for low res quicker compiling
                             % I chose 30 for high resolution  
      z buffer          = sort,% sort according to depth of point
      zmax              = 2,
      colormap          = {skin}{rgb255=(255,105,180) rgb255=(255,240,245)},
      draw              = mapped color!95!black,% lighter mesh lines
      view              = {-45}{10},
      %view             = {45}{15},% different view
    ]
    \addplot3[
      surf,
      shader   = faceted interp,
      domain   = 0:1,
      domain y = -1.5:1.5,
   
]
    ( { 0.1*exp(-1*(y-0.8)^2/0.6)-0.18*exp(-1*(y-0.1)^2/0.4) +
        ra(y,x)*cos(2*pi*x) },
      { ra(y,x)*sin(2*pi*x) },
      { y } );
  \end{axis}
\end{tikzpicture}
\end{document
}

Die Ausgabe in höherer Auflösung mit samples=100 und samples y=30 sowie view = {-45}{10} und view = {45}{15} kann man hier sehen:

https://twitter.com/TeXgallery/status/894138645967491072

Das war einer von vielen Tweets, mit denen ich auf dem SHA 2017 hackers camp für unsere Vorträge geworben habe.

Von mir ist nur die Umsetzung mit pgfplots, die Formeln hierzu hat mikuszefski mit Mathematica hier entwickelt.

Zunächst hatte ich die TeX-Version auf TeX.SE gepostet und erhielt auch einen Vorschlag für eine solide Färbung.

07. April 2018 von Stefan Kottwitz
Kategorien: TikZ | Schreibe einen Kommentar

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert