Desenhe linhas isométricas do disco de Poincaré

Desenhe linhas isométricas do disco de Poincaré

Tentando desenhar as linhas de "distância igual" do disco de Poincaré, como neste post:https://math.stackexchange.com/a/1343730/390217

Tentei usar funções hiperbólicas, mas não é isso, o resultado não está certo: disco de Poincaré errado

Aqui está o código, você pode obter algumas imagens legais brincando com os valores e funções.

\documentclass[border=5pt]{standalone}
\usepackage{tkz-euclide}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{fp}
\usepackage{comment}

\begin{document}
\begin{tikzpicture}[scale=3]
  \tkzDefPoint(0,0){O}
  \tkzDefPoint(1,0){A}
  \tkzDrawCircle(O,A)
  \draw (A) -- (-1,0);
  \draw (0,1) -- (0,-1);
\foreach \nt in {0.1,0.2,...,1}{
\pgfmathsetmacro\nx{cosh(\nt)}
\pgfmathsetmacro\ny{sinh(\nt)}
\pgfmathsetmacro\mx{(-\nx)}
\pgfmathsetmacro\my{(-\ny)}
  \tkzClipCircle(O,A)
  \tkzDefPoint(\nx,\ny){z1}
  \tkzDefPoint(\nx,\my){z2}
  \tkzDefPoint(\mx,\my){z3}
  \tkzDefPoint(\mx,\ny){z4}
  \tkzDefPoint(\ny,\nx){z5}
  \tkzDefPoint(\my,\nx){z6}
  \tkzDefPoint(\my,\mx){z7}
  \tkzDefPoint(\ny,\mx){z8}
  \tkzDrawCircle[orthogonal through=z1 and z2](O,A)
  \tkzDrawCircle[orthogonal through=z3 and z4](O,A)
  \tkzDrawCircle[orthogonal through=z1 and z4](O,A)
  \tkzDrawCircle[orthogonal through=z2 and z3](O,A)
  \tkzDrawCircle[orthogonal through=z5 and z6](O,A)
  \tkzDrawCircle[orthogonal through=z7 and z8](O,A)
  \tkzDrawCircle[orthogonal through=z5 and z8](O,A)
  \tkzDrawCircle[orthogonal through=z6 and z7](O,A)
}
\end{tikzpicture}
\end{document}

Alguém sabe se posso chegar ao resultado certo ajustando as funções ou valores? Eu não saberia como fazer isso projetando as linhas temporais de um parabolóide como explicado no post mencionado acima ...

Obrigado por qualquer ajuda/sugestão

Responder1

Problema resolvido !

Entrei em contato com o autor da foto mencionada e ele gentilmente me enviou o código utilizado. Era uma lista muito longa de pontos de coordenadas gerados por computador, então ajustei-a para reduzi-la o máximo possível usando tikz-euclide e simetrias. O resultado é perfeito. Aqui está o código para os interessados:

\documentclass[border=5pt]{standalone}
\usepackage{tkz-euclide}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{fp}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{10pt}%

\begin{document}

\begin{tikzpicture}
\pgfsetlinewidth{0.4pt}
\useasboundingbox (0in,0in) rectangle (6in,6in);
%circle
\def\rad{3in}
\node (O) at (3in,3in) []{};
\draw (O) circle (\rad);
\node (A) at (6in,3in) []{};
\pgfsetlinewidth{0.8pt}
%arcs
\draw (3in,0)--(3in,6in); %vertical
\draw (0,3in)--(6in,3in); %horizontal
\foreach \x/\y in {
2.27947/0.210234,
1.67325/0.431525,
1.22212/0.705443,
0.906042/0.973135,
0.687819/1.20952,
0.53563/1.40973,
0.427272/1.57697,
0.34825/1.71661,
0.289239/1.83382,
0.244185/1.93299,
0.209092/2.01764,
0.181261/2.09053,
0.158834/2.15381,
0.140503/2.20918,
0.125327/2.25798}{
  \tkzClipCircle(O,A)
\pgfmathsetmacro\ny{6-\y}
  \node (z1) at (\x in,\y in) []{};
  \node (z2) at (\x in,\ny in) []{};
  \node (z3) at (\y in,\x in) []{};
  \node (z4) at (\ny in,\x in) []{};
\pgfmathsetmacro\nx{6-\x} 
  \node (z5) at (\y in,\nx in) []{};
  \node (z6) at (\ny in,\nx in) []{};
  \node (z7) at (\nx in,\y in) []{};
  \node (z8) at (\nx in,\ny in) []{};
  \tkzDrawCircle[orthogonal through=z1 and z2](O,A)
  \tkzDrawCircle[orthogonal through=z3 and z4](O,A)
  \tkzDrawCircle[orthogonal through=z5 and z6](O,A)
  \tkzDrawCircle[orthogonal through=z7 and z8](O,A)
}
\end{tikzpicture}
\end{document}

O resultado : Disco de Poincaré

informação relacionada