- Questo topic ha 13 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 11 anni, 5 mesi fa da
Andrea.
-
CreatoreTopic
-
21 Marzo 2015 alle 19:58 #100912::
Ciao,ho trovato in rete questa immagine
https://www.dropbox.com/s/3fpbzhgo7tuzzuh/goldsec%20-.jpg?dl=0
che mi piacerebbe riutilizzare, ma ci sono pixel dappertutto…
Ho trovato poi questo codice che non so se si possa adattare in qualche modo
`
\documentclass[tikz, border=0.125cm]{standalone}
\begin{document}\def\spiral#1{%
\pgfmathparse{int(#1)}%
\ifnum\pgfmathresult>0
\draw [help lines] (0,0) rectangle ++(1,1);
\begin{scope}[shift={(1,1)}, rotate=90, scale=1/1.6180339887]
\spiral{#1-1}
\end{scope}
\draw [red] (0,0) arc (270:360:1);
\fi
}\tikz[scale=2]{\spiral{12}}
\end{document}
`Se non è una cosa troppo complicata, qualcuno riuscirebbe a darmi qualche indicazione per ottenere la prima immagine?
Ammetto che sono completamente digiuno di tikz, più che altro perché al di là di queste righe non ne ho mai avuto bisogno…grazie mille,
Ciao
Andrea
-
CreatoreTopic
-
AutoreRisposte
-
-
21 Marzo 2015 alle 21:51 #100913::
Andrea, il titolo che hai dato al tuo quesito si riferisca a quella particolare spirale logaritmica nella quale il “fattore di crescita” è legato al numero aureo 1,618….Il disegno che hai linkato su dropbox appare anche su una moneta lituana,ma è un noto metodo per approssimare la spirale logaritmica; infatti ogni quarto di giro in quel disegno, come nel codice che hai allegato al tuo messaggio, è costituito da un arco di cerchio di 90°. Le tangenti agli archi di cerchio adiacenti sono congruenti (verticali o orizzontali) per cui la curva sembra continua. Noterai che la costruzione si basa sulla divisione di rettangoli aurei in un quadrato e in un rettangolo aureo più piccolo. gli alchi sono tracciati all’interno di ongi quadrato.
Quindi quel disegno non rappresenta una vera spirale logaritmica; la sua equazione esatta sarebbe espressa da`
\[
r = a \mathrm{e}^{\theta/b}
\]
`
dove [tt]\mathrm{e}[/tt] è la base dei logaritmi naturali. La spirale aurea si ha quando b ha un valore preciso`
\[
|b| = \frac{\ln \phi}{\pi/2} \approx 0.306 348 9
\]
`
dove [tt]\phi[/tt] è il numero aureo 1,618….Ti rendi conto che quando [tt]\theta[/tt] cresce dell’ammontare di [tt]\pi/2[/tt] radianti, il raggio vettore va crescendo e dopo “un quarto di giro” è diventato 1,618… di volte maggiore di quello che era; ma la curva è tutto fuorché un quarto di cerchio.
Una delle proprietà della spirale logaritmica è che l’angolo fra il raggio vettore e la tangente alla curva nel punto di intersezione fra il raggio vettore e la spirale è un angolo costante indipendente da [tt]\theta[/tt].
Il codice che hai inviato realizza l’approssimazione dei rettangoli aurei, non realizza una vera spirale logaritmica. È gradevole da vedere, ma non è una spirale definita da nessuna equazione, ma se vuoi rappresenta un sequenza di archi di Bézier (spline di Bézier) che si raccordano con tangenti congruenti.
Se vuoi realizzare un spirale logaritmica o una spirale aurea con tikz devi procedere in un modo completamante diverso, ma te lo può indicare il massimo nostro esperto @cfiandra 🙂
-
22 Marzo 2015 alle 6:41 #100914::
Ringrazio OldClaudio per la fiducia, ma in questo caso conoscendo il codice originale è l’autore il vero esperto… visto che si tratta di Mark Wibrow uno dei collaboratori più stretti di Till Tantau (per intenderci, è lui che ha implementato le decorazioni ed è responsabile del motore matematico di pgf con Christophe Jorssen).Il codice, per chiarezza è stato postato in Golden spiral in TiKZ: how do I get the right shape and background?. Quello che posso dire è che per ottenere il risultato simile all’immagine di partenza dell’OP bastano un paio di operazioni: `\documentclass[tikz, border=0.125cm]{standalone}
\begin{document}\def\spiral#1{%
\pgfmathparse{int(#1)}%
\ifnum\pgfmathresult>0
\draw [help lines] (0,0) rectangle ++(1,1);
\begin{scope}[shift={(1,1)}, rotate=90, scale=1/1.6180339887]
\spiral{#1-1}
\end{scope}
\draw [red] (0,0) arc (270:360:1);
\fi
}\tikz[scale=2,rotate=-90,xscale=-1]{\spiral{12}}
\end{document}` Aggiungo che per chi volesse fare qualcosa più corretto matematicamente, probabilmente la nuova libreria matematica (56 Math Library sul manuale) è una soluzione. Fra le altre cose, nuova non è più visto che ormai è in giro da un anno.
Ciao
Claudio
-
22 Marzo 2015 alle 8:27 #100915::
@cfiandra, vedi che con le tue citazioni sei davvero tu l’esperto di TikZ! 😉Ma io intendevo un’altra cosa, visto che quel disegno, ancorché predisposto da Mark Wibrow, non è una spirale aurea; esso é solo un disegno formato da archi di cerchio basati sulla proprietà del rettangolo aureo, per la quale se togli dal rettangolo aureo un quadrato, ti resta un rettangolo aureo (più piccolo) su cui puoi ripetere l’operazione “ad libitum”. Ottieni un disegno a spirale, che non è la spirale logaritmica in cui ogni arco , non solo quelli di 90° corrispondenti ai quadrati sezionati dai rettangoli aurei, è simile a qualunque altro arco della stessa ampiezza angolare preso in qualsivoglia punto della spirale logaritmica.
Quello che intendevo era questo: per ottenere una vera spirale logaritmica aurea, o anche una spirale logaritmica in generale,
1) è meglio servirsi di gnuplot che permette di salvare le coordinate dei punti della spirale in un file e poi chiedere a pgfplots di tracciare la linea fra quei punti, oppure
2) è conveniente servirsi della libreria matematica di TikZ per far fare tutto a TikZ; e in entrambi i casi
3) e opportuno servirsi della libreria di Hobby per tracciare le spline che formano al spirale in modo corretto ed efficiente?
-
22 Marzo 2015 alle 9:01 #100916::
ringrazio @Oldclaudio per la spiegazione e @Cfiandra per la risposta.Ho cambiato il titolo della discussione e ho pescato (sempre grazie alla generosità altrui…) questo che si avvicina di più all’immagine che cercavo (ecco la fonte : http://www.texample.net/tikz/examples/logarithmic-spiral/).
`
% Logarithmic spiral
% Author: Andrew Mertz
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{backgrounds,calc}%%%< \usepackage{verbatim} \usepackage[active,tightpage]{preview} \PreviewEnvironment{tikzpicture} \setlength\PreviewBorder{0pt}% %%%>
\begin{comment}
:Title: Logarithmic spiralA `logarithmic spiral`_.
.. _logarithmic spiral: http://en.wikipedia.org/wiki/Logarithmic_spiral
\end{comment}
\begin{document}
\begin{tikzpicture}[background rectangle/.style={fill=white},
show background rectangle, x=1pt, y=1pt]
% Compute the golden ratio
\pgfmathsetmacro{\goldenRatio}{(1+sqrt(5)) / 2}% Compute the angle between the tangent and radial line
\pgfmathsetmacro{\offset}{rad(atan(2*ln(\goldenRatio)/pi))};% Plot the spiral using the parametric form of a logarithmic spiral
% (a e^{b t} cos(t), a e^{b t} sin(t)). In this case a = 1 and b = 2
% ln((1+sqrt(5)) / 2) / pi. There can be a slight gap between the
% last line segment and the end of the plot. Having a large sample
% size reduces the gap.
\draw[very thick,black,domain=\offset:\offset+14*pi/2,
smooth,samples=600,variable=\t] plot
({pow(\goldenRatio, 2 * \t / pi) * cos(\t r)},
{pow(\goldenRatio, 2 * \t / pi) * sin(\t r)})
coordinate(end);% Remember the start of the spiral
\coordinate (0) at
({pow(\goldenRatio, 2 * \offset / pi) * cos(\offset r)},
{pow(\goldenRatio, 2 * \offset / pi) * sin(\offset r)});% This loop draws the line segments
\foreach \i in {1,…,14}
{
% Get the “name” of the last point on the spiral
\pgfmathsetmacro{\lastpoint}{\i-1}% Compute the start angle for this turn of the spiral
\pgfmathsetmacro{\angle}{\i * pi / 2 + \offset}\draw[very thick,black] (\lastpoint) —
({pow(\goldenRatio, 2 * \angle / pi) * cos(\angle r)},
{pow(\goldenRatio, 2 * \angle / pi) * sin(\angle r)})
coordinate (\i);
}% Add some text displaying the formula for the parametric form of the
% spiral
\node(eq) at ($(14) + 5*(\goldenRatio cm,1cm)$)
[black,text width=2cm,font=\fontsize{30}{30}\selectfont,
anchor=north west] {
\begin{displaymath}
\begin{array}{llll}
x&(\theta) = \phi^{\frac{2\theta}{\pi}}&\cos&(\theta)\\
y&(\theta) = \phi^{\frac{2\theta}{\pi}}&\sin&(\theta)\\
\end{array}
\end{displaymath}
};
\end{tikzpicture}
\end{document}
% LocalWords: tikzpicture TikZ sqrt ln atan eq llll`
Spero possa essere utile e che si possa “fondere” con i rettangoli aurei. Giusto così per 🙂 ho dato anche uno sguardo a chi poteva mai essere questo Andrew Mertz 😉
-
22 Marzo 2015 alle 14:36 #100917::
Così mi piace; questa è una vera spirale logaritmica aurea. Va bene, il disegno pò sembrare simile a quello della costruzione con gli archi di cerchi tracciati nei quadrati via via ritagliati dai rettangolo aurei, ma se li si sovrapponesse si scoprirebbe che virtualmente non ci sono punti di sovrapposizione. Gli archi di questo disegno NON sono archi di cerchio.
-
23 Marzo 2015 alle 20:06 #100918::
ciao,
ehm tra me e me, mi chiedevo se era il caso di chiedere piatto piatto a @Cfiandra se poteva regalarmi il codice tikz del disegno in questione.https://www.dropbox.com/s/3fpbzhgo7tuzzuh/goldsec%20-.jpg?dl=0
Ho esitato un po’, ma mi sono detto: provo a chiedere, al massimo risponde di no.
Giusto? 🙂grazie comunque,
ciao
Andrea
-
23 Marzo 2015 alle 21:46 #100919::
Andrea, non so per quale motivo vuoi il disegno che ha fatto Claudio (@cfiandra), che è fatto molto bene, ma che rappresenta la solita approssimazione della spirale aurea, quando tu stesso hai scovato la soluzione di Mertz che invece è un vera spirale aurea disegnata correttamente.Comunque i codici postati sul forum sono a disposizione di chiunque ma, usandoli, è corretto specificare di chi è il disegno e/o di chi è il codice.
Se nella versione di Mertz vuoi la spirale in rosso e disegnata con tratto più spesso, non ti resta che apportare le piccole modifiche che sono già presenti, comunque, negli altri disegni; se vuoi mettere in rilievo i quadrati estratti dai rettangoli aurei, non hai che da aggiungere le righe verticali o orizzontali che chiudono il quadrato di cui Mertz mostra le diagonali.
Io sono propenso al fatto che i grafici delle curve siano il più esatti possibile, e la spirale aurea approssimata è carina, ma non è una spirale aurea per costruzione; dove c’è scritto [tt]\draw [red] (0,0) arc (270:360:1);[/tt] è evidente che si tratta di archi di cerchio e non archi di spirale logaritmica.
-
24 Marzo 2015 alle 5:10 #100920::
In effetti il disegno mi servirebbe solo come logo (nel senso di decorazione, al pari di come compare sulla moneta lituana di cui mi parlavi), da usare in una lettera, quindi non avrei modo purtroppo di citare gli autori.
La spirale di Mertz ruotata di quanto necessario (al netto dei segmenti necessari per la costruzione) la terrei in grigio, e sotto in nero, i rettangoli aurei che risultavano dal primo disegno di Wibrow. In più le due diagonali. Proprio come nel disegno in dropbox.
Ho fatto qualche prova e ho capito come isolare i rettangoli nel primo disegno, ma non come cancellare i segmenti nel secondo e ruotare; inoltre mi resterebbe poi di capire come fondere i due pdf, ammesso che si possa fare.
Come vedi non è una questione essenziale, potrei sempre usare il piccolo .jpg; solo mi piaceva l’idea di un bel logo vettoriale pulito, perché ingrandendo il pdf si notano molto i pixel della spirale.Buona giornata!
Andrea
-
24 Marzo 2015 alle 7:35 #100921::
And” post=100662ciao,
ehm tra me e me, mi chiedevo se era il caso di chiedere piatto piatto a @Cfiandra se poteva regalarmi il codice tikz del disegno in questione.https://www.dropbox.com/s/3fpbzhgo7tuzzuh/goldsec%20-.jpg?dl=0
Ho esitato un po’, ma mi sono detto: provo a chiedere, al massimo risponde di no.
Giusto? 🙂grazie comunque,
ciao
AndreaVedrò cosa posso fare nei prossimi giorni..
Ciao
Claudio
-
24 Marzo 2015 alle 8:59 #100922::
And” post=100665In effetti il disegno mi servirebbe solo come logo (nel senso di decorazione, al pari di come compare sulla moneta lituana di cui mi parlavi), da usare in una lettera, quindi non avrei modo purtroppo di citare gli autori.
La spirale di Mertz ruotata di quanto necessario (al netto dei segmenti necessari per la costruzione) la terrei in grigio, e sotto in nero, i rettangoli aurei che risultavano dal primo disegno di Wibrow. In più le due diagonali. Proprio come nel disegno in dropbox.
Ho fatto qualche prova e ho capito come isolare i rettangoli nel primo disegno, ma non come cancellare i segmenti nel secondo e ruotare; inoltre mi resterebbe poi di capire come fondere i due pdf, ammesso che si possa fare.
Come vedi non è una questione essenziale, potrei sempre usare il piccolo .jpg; solo mi piaceva l’idea di un bel logo vettoriale pulito, perché ingrandendo il pdf si notano molto i pixel della spirale.Buona giornata!
Andrea
Non è male l’idea di un logo fatto con la spirale di @cfiandra; se commenti la riga [tt]\draw [help lines] (0,0) rectangle ++(1,1);[/tt] e cambi nella prima riga il border da 0.125cm in 0.1pt, hai un disegno pulito praticamente senza bordo e con il “frangente” rosso (che ovviamente puoi colorare diversamente) e senza diagonali. Simpatico, vettoriale, non sgrana, ma, oserei dire, un po’ grande, perché le sue dimensioni naturali dovrebbero essere di un 50mm in orizzontale, forse di più; quindi lo puoi includere nella lettera riducendolo a circa 20mm. Naturalmente ti conviene produrre un file pdf, senza bosrdo, così da immetterlo come logo nella tua intestazione con un semplice comando \includegraphics, ruotando il disegno, scalandolo, riflettendolo, e facendoci sipra le varie diavolerie che si possono fare con \includegraphics.
L’immagine jpg, dove dici che si vedono i pixel, ridotta alle giuste dimensioni di circa 20mm o anche qualcosina in meno, non dovrebbe mostrare i pixel.
D’altra parte se tu volessi disegnare questo logo su una carta da lettere non perfettamente bianca, è possibile che il disegno fatto con TikZ mostri lo sfondo bianco che stonerebbe su una carta anche giallo pallidissimo.
@cfiandra potrebbe insegnarti come rendere trasparente lo sfondo bianco.
-
24 Marzo 2015 alle 20:21 #100923::
D’altra parte se tu volessi disegnare questo logo su una carta da lettere non perfettamente bianca, è possibile che il disegno fatto con TikZ mostri lo sfondo bianco che stonerebbe su una carta anche giallo pallidissimo.
@cfiandra potrebbe insegnarti come rendere trasparente lo sfondo bianco.non ci avevo pensato…
grazie intanto per i numerosi consigli!
Ciao
Andrea
-
27 Marzo 2015 alle 10:16 #100924::
Ci ho lavorato un momento: `% Logarithmic spiral
% Original Author: Andrew Mertz
% http://www.texample.net/tikz/examples/logarithmic-spiral/
% Modifications: Claudio Fiandrino
\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{calc}\begin{document}
\pagecolor{orange!10}% just to prove no white background is there
\begin{tikzpicture}[x=1pt, y=1pt]
% Compute the golden ratio
\pgfmathsetmacro{\goldenRatio}{(1+sqrt(5)) / 2}% Compute the angle between the tangent and radial line
\pgfmathsetmacro{\offset}{-0.5525}
% CF: old version{rad(atan(2*ln(\goldenRatio)/pi))}; % no need for ; here% Plot the spiral using the parametric form of a logarithmic spiral
% (a e^{b t} cos(t), a e^{b t} sin(t)). In this case a = 1 and b = 2
% ln((1+sqrt(5)) / 2) / pi. There can be a slight gap between the
% last line segment and the end of the plot. Having a large sample
% size reduces the gap.
\draw[thick,darkgray,domain=\offset:\offset+14*pi/2,
smooth,samples=600,variable=\t] plot
({pow(\goldenRatio, 2 * \t / pi) * cos(\t r)},
{pow(\goldenRatio, 2 * \t / pi) * sin(\t r)})
coordinate(end);% Remember the start of the spiral
\coordinate (0) at
({pow(\goldenRatio, 2 * \offset / pi) * cos(\offset r)},
{pow(\goldenRatio, 2 * \offset / pi) * sin(\offset r)});% This loop draws the line segments
% (CF) and permits accessing each of the coordinates using
% as id the sequence number
\foreach \i in {1,…,14}
{
% Get the “name” of the last point on the spiral
\pgfmathsetmacro{\lastpoint}{\i-1}% Compute the start angle for this turn of the spiral
\pgfmathsetmacro{\angle}{\i * pi / 2 + \offset}
% CF: we need to have the coordinates with no visible
% lines, hence we just use the \path operation
\path (\lastpoint) —
({pow(\goldenRatio, 2 * \angle / pi) * cos(\angle r)},
{pow(\goldenRatio, 2 * \angle / pi) * sin(\angle r)})
coordinate (\i);
}% CF: black rectangles
\foreach \i[evaluate=\i as \nextp using int(\i-2)] in {14,13,…,2}
\draw[ultra thick](\i) rectangle(\nextp);% CF: diagonals
\foreach \i[evaluate=\i as \nextp using int(\i-2)] in {14,13}
\draw[very thick,darkgray](\i) –(\nextp);
\end{tikzpicture}
\end{document}` Ecco il risultato
[attachment=1296]ScreenShot2015-03-27at12.11.03PM.png[/attachment]Nel sorgente ci sono alcuni commenti in merito alle modifiche che ho fatto. In particolare, il nuovo offset potrebbe essere trovato in maniera rigorosa mentre al momento io sono andato a occhio. Seconda osservazione: avendo impostato x=1pt, y=1pt, la scala non mi piace molto (basti pensare che di default x=1cm, y=1cm) quindi attenzione. Terza osservazione: i rettangoli si sovrappongono; per fare un lavoro adeguato, bisognerebbe tracciare soltanto i segmenti necessari, ma è leggermente più complesso avere una soluzione scalabile. Con questa soluzione invece si può aumentare quasi a piacere il numero di samples senza alterare nulla o quasi (come idea, forse sarebbe più opportuno definire una variabile [tt]\numsamples[/tt] impostata inizialmente a 14 cosi come è ora).
Ciao
Claudio
Attachments:
You must be logged in to view attached files. -
27 Marzo 2015 alle 18:18 #100925
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.