Claudio,
ovvio che il numero di interazioni si può drasticamente ridurre gestendo in maniera più intelligente il valore di incremento dell’angolo di tentativo.
Questa volta il nuovo angolo viene incrementato sulla base del valore della pendenza della retta tangente alla curva che vale:
\begin{equation}
\frac{1}{\cos{\alpha}^2}
\end{equation}
Tuttavia c’è un antipatico problema sul comando con gli \hbox ed i \vbox. Ogni volta che viene chiamato il comando \draftonpage viene inserito un capoverso.
Alla prossima puntata… (allego il codice completo)
R.
`% !TEX program = pdflatex
% !TEX encoding = UTF-8 Unicode
\documentclass[a4paper]{article}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{kantlipsum}
\usepackage{tikz}
\ExplSyntaxOn
\fp_new:N \l_alpha
\fp_set:Nn \l_alpha { 1 }
\fp_new:N \l_x
\fp_new:N \l_y
\fp_set_from_dim:Nn \l_x { \textwidth }
\fp_set_from_dim:Nn \l_y { \textheight }
\fp_new:N \l_ratio
\fp_set:Nn \l_ratio { \l_y / \l_x}
\int_new:N \l_iter
\fp_while_do:nn
{ abs(tan(\l_alpha) – \l_ratio) > 0.000000001 }
{ \int_incr:N \l_iter
\fp_add:Nn \l_alpha
{ (\l_ratio – tan(\l_alpha))*cos(\l_alpha)^{2} }
}
\fp_set:Nn \l_alpha { \l_alpha * 180 / pi}
\NewDocumentCommand { \scbx } { O{ Draft } } {
\scalebox{8}{
\rotatebox{\fp_use:N \l_alpha}{\textcolor{gray!58}{ #1 }}
}
}
\ExplSyntaxOff
\def\draftonpage#1{%
\hbox to 0pt{%
\vbox to 0pt{%
\vbox to \textheight{%
\vfil
\hbox to \textwidth{\hfil#1\hfil}%
\vfil}\vss}\hss}%
}
\begin{document}
\draftonpage{\scbx}
\draftonpage{\tikz\draw (0.4pt,0.4pt) — (\textwidth,\textheight);}
\ExplSyntaxOn \fp_use:N \l_x , \fp_use:N \l_y \ExplSyntaxOff
L'angolo calcolato della diagonale vale $\alpha = \ExplSyntaxOn \fp_use:N \l_alpha \ExplSyntaxOff$. Numero interazioni: $n = \ExplSyntaxOn \int_use:N \l_iter \ExplSyntaxOff$
\kant
\end{document}`