Αυτήν την εβδομάδα είχαμε πολύ περισσότερα πράγματα να δούμε από ότι την προηγούμενη. Για την ακρίβεια, ήρθε επιτέλους ( ; ) η ώρα να μιλήσουμε για βιβλιοθήκες του tikz
. Αλλά, ας τα πάρουμε ένα-ένα…
Αν θέλετε να θυμηθείτε τι έχουμε δει τις προηγούμενες εβδομάδες, δείτε εδώ.
Απλό και καλό…
Το πρώτο μας σχήμα είναι αυτό:

Ο αντίστοιχος κώδικας είναι ο εξής:
\documentclass[tikz, margin=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[thick, ->] (-1,0) -- (7,0)node[pos=1,below]{$x$};
\draw[thick, ->] (0,-2) -- (0,2)node[pos=1,left]{$y$};
\draw[dashed] (-.99,-1.99) grid (6.99,1.99);
\draw[thick, blue, samples=100, domain={0}:{pi}] plot (\x,{cos(\x r)});
\draw[thick, red, samples=100, domain={pi}:{2*pi}] plot (\x,{cos(\x r)})node[right,yshift=8pt,black]{$y=\cos x$};
\node[circle, draw=black, fill=black, inner sep=1.5pt, label={below,xshift=8pt}:{$\scriptstyle(\pi,-1)$}](a) at (pi,-1){};
\end{tikzpicture}
\end{document}
Εδώ δεν έχουμε να σχολιάσουμε πλέον σχεδόν τίποτα – διότι, αν μη τι άλλο, έχουμε γίνει τσακάλια στη χάραξη γραφικών παραστάσεων. Βασικά, ψέματα, έχουμε να παρατηρήσουμε κάτι. Όταν σχεδιάζουμε τριγωνομετρικές συναρτήσεις – και γενικότερα, όταν τις χρησιμοποιούμε σε υπολογισμούς μας – είναι σημαντικό να προσέχουμε τις μονάδες μέτρησης. Εκ προοιμίου, το tikz
χρησιμοποιεί μοίρες για να υπολογίζει γωνίες εντός των διάφορων τριγωνομετρικών συναρτήσεων. Αυτό σημαίνει ότι η έκφραση sin(1)
υποδηλώνει το ημίτονο γωνίας μίας μοίρας και όχι ενός ακτινίου. Αν θέλουμε – όπως και παραπάνω – να χρησιμοποιήσουμε ακτίνια αντί για μοίρες, τότε πρέπει να το δηλώσουμε ρητά, χρησιμοποιώντας το γράμμα r
στο τέλος του ορίσματος της τριγωνομετρικής συνάρτησής μας. Έτσι, αν θέλουμε να μιλήσουμε για το ημίτονο γωνίας ενός ακτινίου, γράφουμε sin(1 r)
. Εντάξει, όχι δα και κάτι τρελό, είναι η αλήθεια.
Η πρώτη μας βιβλιοθήκη…
… δεν είναι αυτή της Αλεξάνδρειας αλλά αυτή που φορτώνουμε στο παρακάτω σχήμα:

Ο αντίστοιχος κώδικας είναι ο εξής:
\documentclass[tikz, margin=5mm]{standalone}
\usepackage{xfrac}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw[thick,->] (-1,0) -- (5,0)node[pos=1,below]{$x$};
\draw[thick,->] (0,-3) -- (0,5)node[pos=1,left]{$y$};
\draw[thick,domain={0}:{4},samples=100] plot (\x,{(\x-1)*(\x-4)});
\node[circle, inner sep=1.5pt, draw=black, fill=black, label={left}:{4}](a) at (0,4){};
\node[circle, inner sep=1.5pt, draw=black, fill=black, label={above}:{1}](b) at (1,0){};
\node[circle, inner sep=1.5pt, draw=black, fill=black, label={above}:{4}](d) at (4,0){};
\node[circle, inner sep=1.5pt, draw=black, fill=black](c) at (2.5,-2.25){};
\node[above](e) at ($(0,0)!(c)!(4,0)$){$\sfrac{5}{2}$};
\node[left](f) at ($(0,0)!(c)!(0,-3)$){$-\sfrac{9}{4}$};
\draw[dashed] (0,0) rectangle (c);
\end{tikzpicture}
\end{document}
Το σχήμα και τα συναφή είναι αρκετά απλά – στο κάτω-κάτω της γραφής, μία παραβολή σχεδιάσαμε. Αυτό που εδώ παρουσιάζει ενδιαφέρον είναι η χρήση της βιβλιοθήκης calc
. Η εν λόγω βιβλιοθήκη είναι αρκετά μεγάλη είναι η αλήθεια, όπου το μέγεθος το μετράμε με βάση τις δυνατότητες που μας παρέχει. Όπως προδίδει και το όνομά της – μάλλον – μας βοηθά σε υπολογισμούς στο tikz
μέσα στους οποίους συμπεριλαμβάνονται και γεωμετρικοί υπολογισμοί – λογικό, αφού με το tikz
ζωγραφίζουμε πράγματα. Στο παραπάνω σχήμα φορτώσαμε την calc
για να σχεδιάσουμε αυτές τις διακεκομμένες που φαίνονται. Ομολογουμένως, θα μπορούσαμε να τις είχαμε σχεδιάσει απλώς σχεδιάζοντας ένα ορθογώνιο από το μέχρι το αντίστοιχο σημείο, όπως έχουμε κάνει στο παρελθόν, αλλά για κάποιον λόγο που δε θυμάμαι τώρα, έχουν σχεδιαστεί με την
calc
.
Τέλος πάντων, όπως και να έχει το παραπάνω σχήμα μας δίνει μία πολύ ωραία ευκαιρία να δούμε πώς μπορούμε εύκολα – πολύ εύκολα – να κάνουμε προβολές με τη βοήθεια της calc
. Το βασικό συντακτικό για να προβάλλουμε έναν κόμβο x
σε μία ευθεία που διέρχεται από δύο άλλους κόμβους a
, b
είναι το εξής:
(a)!(x)!(b)
Τόσο απλά! Με αυτόν τον τρόπο, η calc
κάνει όλη τη δουλειά να υπολογίσει τις συντεταγμένες της προβολής του x
στην ευθεία που καθορίζεται από τα a
και b
και να τις αντικαταστήσει εκεί που πρέπει, δημιουργώντας έναν νέο όμορφο κόμβο. Προσέξτε ότι πρέπει την έκφραση της προβολής που γράψαμε παραπάνω να τη βάλουμε μέσα σε δολλάρια, γράφοντας:
$(a)!(x)!(b)$
για να καταλάβει το tikz
ότι πρέπει να κάνει πράξεις και να καλέσει την calc
εκεί που χρειάζεται.
Το ανάποδο…
Το επόμενο σχήμα είναι το εξής:

Ο αντίστοιχος κώδικας είναι ο εξής:
\documentclass[tikz, margin=5mm]{standalone}
\usepackage{xfrac}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw[thick,->] (-1,0) -- (6,0)node[pos=1,below]{$x$};
\draw[thick,->] (0,-6) -- (0,2)node[pos=1,left]{$y$};
\draw[thick, domain={0}:{5}, samples=50] plot (\x,{-.5*(\x-2)*(\x-5)});
\node[circle, inner sep=1.5pt, draw=black, fill=black, label={below}:{5}](a) at (5,0){};
\node[circle, inner sep=1.5pt, draw=black, fill=black, label={below}:{2}](b) at (2,0){};
\node[circle, inner sep=1.5pt, draw=black, fill=black, label={left}:{-5}](c) at (0,-5){};
\node[circle, inner sep=1.5pt, draw=black, fill=black](d) at (3.5,1.125){};
\draw[dashed] (0,0) rectangle (d);
\node[below] at ($(-1,0)!(d)!(6,0)$){$\sfrac{7}{2}$};
\node[left] at ($(0,-5)!(d)!(0,1)$){$\sfrac{9}{8}$};
\end{tikzpicture}
\end{document}
Εδώ τα πράγματα είναι αρκετά παρόμοια με το προηγούμενο σχήμα – τόσο που θα μπορούσαμε να μη σχολιάσουμε τίποτα. Αλλά, επειδή δεν κρατιόμαστε, θα σχολιάσουμε κάτι – σιγά, που θα χάναμε την ευκαιρία για κουτσομπολιό. Λοιπόν, όταν θέλουμε να γράψουμε έναν δεκαδικό αριθμό στο tikz
τότε χρησιμοποιούμε το σύμβολο της τελείας αντί για την ελληνική υποδιαστολή. Ωστόσο, αυτό που επίσης μπορούμε να κάνουμε, αν πρόκειται για αριθμό που είναι κατ’ απόλυτη τιμή μικρότερος του 1, είναι να παραλείψουμε το αρχικό μηδενικό αριστερά της τελείας. Έτσι, αντί για 0.56
μπορούμε να γράψουμε σκέτο .56
χωρίς να έχει κάποια διαφορά – πέρα από το ένα λιγότερο πλήκτρο που πατάμε.
Κι ένα χωρίο…
Το επόμενο σχήμα μας έχει και λίγο χρώμα:

Ο αντίστοιχος κώδικας είναι ο εξής:
\documentclass[tikz, margin=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[thick,->] (-1,0) -- (7,0)node[pos=1,below]{$x$};
\draw[thick,->] (0,-3) -- (0,5)node[pos=1,left]{$y$};
\begin{scope}
\clip (-1,-3) rectangle (7,5);
\draw[thick, domain={exp(-3)}:{7},samples=200] plot (\x,{ln(\x)});
\draw[thick, domain={-1}:{7}] plot (\x,{\x-1});
\draw[thick, domain={-1}:{7}] plot (\x,{\x/6+ln(6)-1});
\draw[draw=blue, fill=blue, fill opacity=0.1, smooth, samples=100,domain=1:6] plot(\x,{ln(\x)}) -- (6,{ln(6)}) -- ({(6*ln(6))/5},{(6*ln(6))/5-1}) -- (1,0) -- cycle;
\draw[dashed] (0,0) rectangle (6,{ln(6)});
\node[below] at (6,0){$\lambda$};
\node[above,xshift=-.7cm] at ({(6*ln(6))/5},{(6*ln(6))/5-1}){$A(x_0,y_0)$};
\node[left] at (0,{ln(6)}){$\ln\lambda$};
\node[below] at (1,0){1};
\end{scope}
\end{tikzpicture}
\end{document}
Έχουμε ξαναδεί στο παρελθόν παρόμοιο σχήμα. Όπως είχαμε επισημάνει και τότε, αν και υπάρχει η εντολή \fill
για να χρωματίζουμε χωρία, μπορούμε να χρησιμοποιούμε την εντολή \draw
κάνοντας την κατάλληλη παραμετροποίηση. Έτσι, μπορούμε να καθορίσουμε το πόσο διάφανο θα είναι το χρώμα του γεμίσματος μέσω της \draw
απλώς προσθέτοντας την παράμετρο fill opacity
στη λίστα παραμέτρων – αναλόγως, θα δούμε στο μέλλον, μπορούμε να κάνουμε και με τις περισσότερες παραμέτρους της \fill
εντός της \draw
.
Να παρατηρήσουμε επίσης πως όταν το πεδίο ορισμού μίας καμπύλης δεν περιλαμβάνει περίπλοκους αριθμούς – δηλαδή, δεν χρειάζονται πράξεις για να τους γράψουμε – τότε μπορούμε να παραλείψουμε τα άγκιστρα στην παράμετρο domain
και να γράψουμε αντί για domain={a}:{b}
απλώς domain=a:b
.
Άλλο ένα χωρίο…
Το επόμενο σχήμα μας είναι το εξής:

Ο αντίστοιχος κώδικας είναι ο εξής:
\documentclass[tikz, margin=5mm]{standalone}
\usepackage{xfrac}
\begin{document}
\begin{tikzpicture}
\draw[thick,->] (-1,0) -- (4,0)node[pos=1,below]{$x$};
\draw[thick,->] (0,-2) -- (0,5)node[pos=1,left]{$y$};
\draw[dashed] (0,0) rectangle (2,4);
\begin{scope}
\clip (-1,-2) rectangle (4,5);
\draw[thick, domain={-1}:{4},samples=200] plot (\x,{\x*\x});
\draw[thick, domain={1.1}:{4},samples=200] plot (\x,{4+4*ln(\x-1)});
\draw[draw=none, fill=blue,fill opacity=0.1, smooth,samples=100,domain=0:2] plot(\x,{\x*\x}) -- (2,4) -- (1,0) -- (0,0) -- cycle;
\draw[draw=none, fill=blue,fill opacity=0.1, smooth,samples=100,domain={1+exp(-1)}:2] plot(\x,{4+4*ln(\x-1)}) -- (2,4) -- (1,0) -- ({1+exp(-1)},0) -- cycle;
\draw[thick,blue,domain={0}:{2},samples=200] plot(\x,{\x*\x});
\draw[thick,blue,domain={(1+exp(-1))}:{2},samples=200] plot(\x,{4+4*ln(\x-1)});
\draw[thick,blue] (0,0) -- ({1+exp(-1)},0);
\node[below] at (2,0){2};
\node[left] at (0,4){4};
\node[below,xshift=-.7cm] at ({1+exp(-1)},0){$1+\sfrac{1}{e}$};
\end{scope}
\end{tikzpicture}
\end{document}
Εδώ, είναι η αλήθεια, δεν έχουμε κάτι καινούργιο με μια πρώτη ματιά, καθώς η φιλοσοφία είναι η ίδια με αυτήν του προηγούμενου σχήματος. Και το clip
μας χρησιμοποιήσαμε, και το χωρίο μας το χρωματίσαμε και όλα καλά. Παρατηρήστε μόνο προς το τέλος ότι, αν και γενικά δεν το συνηθίζουμε, δώσαμε στην παράμετρο yshift
απόσταση μετρημένη σε εκατοστά. Γενικά, στις περισσότερες παραμέτρους που αφορούν αποστάσεις μπορούμε να δίνουμε απόσταση σε όποια μονάδα μας εξυπηρετεί, αρκεί αυτή να είναι μία από τις μονάδες μέτρησης του tikz
– αν θέλετε να θυμηθείτε αυτές τις μονάδες, μπορείτε να δείτε τον ακόλουθο πίνακα που είχαμε ξαναδεί εδώ:

Ένα δέντρο…
Το τελευταίο μας σχήμα είναι το ακόλουθο:

Ο αντίστοιχος κώδικας είναι ο εξής:
\documentclass[tikz, margin=5mm]{standalone}
\usepackage{xfrac} % You know, only for the fancy inline fractions.
\begin{document}
\begin{tikzpicture}
\node[circle, minimum size=.9cm, draw=black](1) at (0,0){1};
\node[circle, minimum size=.9cm, draw=black](2) at (2,0){2};
\node[circle, minimum size=.9cm, draw=black](4) at (4,0){4};
\node[circle, minimum size=.9cm, draw=black](8) at (6,0){8};
\node[circle, minimum size=.9cm, draw=black](16) at (8,0){16};
\node[circle, minimum size=.9cm, draw=black](32) at (10,0){32};
\node[circle, minimum size=.9cm, draw=black](5) at (10,2){5};
\node[circle, minimum size=.9cm, draw=black](10) at (12,2){10};
\node[circle, minimum size=.9cm, draw=black](20) at (14,2){20};
\node[circle, minimum size=.9cm, draw=black](3) at (14,4){3};
\node[circle, minimum size=.9cm, draw=black](64) at (12,0){64};
\node[circle, minimum size=.9cm, draw=black](128) at (14,0){128};
\node[circle, minimum size=.9cm, draw=black](21) at (14,-2){21};
\draw[thick, ->] (1) -- (2);
\draw[thick, ->] (2) -- (4);
\draw[thick, ->] (4) -- (8);
\draw[thick, ->] (8) -- (16);
\draw[thick, ->] (16) -- (32);
\draw[thick, ->] (32) -- (64);
\draw[thick, ->] (64) -- (128);
\draw[thick, ->] (64) -- (21);
\draw[thick, ->] (5) -- (10);
\draw[thick, ->] (10) -- (20);
\draw[thick, ->] (10) -- (3);
\draw[thick, ->] (16) -- (5);
\end{tikzpicture}
\end{document}
Η αλήθεια είναι ότι σε ό,τι έχει να κάνει με τη δομή του παραπάνω σχήματος τα πράγματα είναι σχετικά απλά. Σχεδιάσαμε κάποιους κόμβους και τους ενώσαμε με βελάκια. Ωστόσο, έχουμε μία νέα παράμετρο που δεν έχουμε δει έως τώρα και η οποία σχετίζεται με το μέγεθος των κόμβων. Αν παρατηρήσετε τους κόμβους που έχουμε σχεδιάσει, θα δείτε ότι σε όλους έχουμε γράψει το εξής:
minimum size=.9cm
Η παραπάνω παράμετρος, όταν δοθεί στη λίστα παραμέτρων ενός κόμβου, καθορίζει τις ελάχιστες διαστάσεις του – ανάλογα με το σχήμα του, πάντα. Έτσι, εδώ εμείς απαιτούμε κάθε κόμβος να έχει διάμετρο τουλάχιστον 0.9 εκατοστά. Αν δεν το κάναμε αυτό, τότε οι κόμβοι στο παραπάνω σχήμα θα είχαν διαφορετική ακτίνα, ανάλογα με το περιεχόμενό τους – αυτό συμβαίνει αυτόματα. Επομένως, με αυτόν τον τρόπο πετύχαμε να έχουμε όλους τους κόμβους ίδιους μεταξύ τους – σαφώς, το 0.9 το βρήκαμε με το μάτι.
Αυτά ήταν τα υπέροχα σχήματα αυτής της εβδομάδας – μετριοπάθεια πάνω απ’ όλα. Μέχρι την επόμενη Τρίτη, καλή συνέχεια!
Για τις υπόλοιπες αναρτήσεις της σειράς, δείτε εδώ.
Η κεντρική εικόνα είναι ο πίνακας Η συγκομιδή των σταχυών του Camille Pissarro.
Διαβάστε επίσης: Τι λέει το Θεώρημα του Bolzano;
Ακολουθήστε το aftermathsgr στα social media:
[…] παρουσιάσαμε την πρώτη μας βιβλιοθήκη του tikz δείτε εδώ, ενώ όλες τις αναρτήσεις της σειράς μπορείτε να τις […]
Μου αρέσει!Μου αρέσει!