Τα σχήματα της εβδομάδας (2)

Άλλη μία εβδομάδα πέρασε, άλλο ένα σετ με σχήματα που κάπου έχουμε ξανασυναντήσει στο aftermaths θα συζητηθεί εκτενώς. Τα σχήματα αυτής της εβδομάδας κυμαίνονται από σχετικά απλά έως και πολύ απαιτητικά – τουλάχιστον σε σχέση με τα όσα έχουμε δει ως τώρα. Αλλά, επειδή άρχισαν ήδη οι φλυαρίες και δεν έχουμε φτάσει ούτε τις δύο προτάσεις καλά-καλά, ας περάσουμε στο διά ταύτα – πολύ τη χρησιμοποιώ αυτήν την έκφραση τελευταία.

Ένα λιτό πολυώνυμο…

Το πρώτο σχήμα της περασμένης εβδομάδας ήταν αυτό:

Ένα απλό πολυώνυμο…

Ο αντίστοιχος κώδικας είναι ο εξής:

\documentclass[tikz, margin=5mm]{standalone}
\usepackage{xfrac} % You know, only for the fancy inline fractions.
 
\begin{document}
    \begin{tikzpicture}
    \draw[thick,->] (-.5,0) -- (7,0)node[pos=1,below]{$x$};
    \draw[thick,->] (0,-1.5) -- (0,5)node[pos=1,left]{$y$};
    \draw[thick, domain={0}:{6}, samples=100] plot (\x,{(3/75)*(\x^2-1)*(\x-3)*(\x-5)*(\x-5)});
    \draw[dashed] (-.49,-1.49) grid (6.99,4.99);
    \node[circle, inner sep=1.5pt, draw=black, fill=white, label={left,yshift=10pt}:{$A(0,3)$}](a) at (0,3){};
    \node[circle, inner sep=1.5pt, draw=black, fill=white, label={right}:{$B(6,\sfrac{17}{4})$}](a) at (6,4.25){};
    \end{tikzpicture}
\end{document}

Εντάξει, εδώ δεν είχαμε και κάτι τρομακτικό, όλα έμοιαζαν με τα σχήματα της προηγούμενης εβδομάδας: άξονες, πλέγμα, μία γραφική παράσταση και δύο κόμβοι. Αυτό που ίσως έχει αξία να παρατηρήσουμε είναι και πάλι το πώς αποφεύγουμε την ύψωση σε δύναμη αρνητικών αριθμών και προτιμούμε να τη γράψουμε σαν απλό γινόμενο. Επίσης, ίσως όχι τόσο σχετικό με το tikz αλλά περισσότερο με το πώς βρίσκουμε ένα πολυώνυμο που να μοιάζει «τυχαίο», παρατηρήστε λίγο τον τύπο του πολυωνύμου που χρησιμοποιήσαμε. Για ευκολία, είναι το ακόλουθο:

p(x)=\dfrac{3}{75}(x^2-1)(x-3)(x-5)^2=\dfrac{3}{75}(x-1)(x+1)(x-3)(x-5)^2.

Στην ουσία, γνωρίζουμε από τα σχολικά μας χρόνια ότι αν ένα πολυώνυμο έχει σε ένα σημείο μία απλή ρίζα τότε, εκεί κοντά θυμίζει «ευθεία» – τέμνει δηλαδή «υπό γωνία» τον οριζόντιο άξονα. Αντίστοιχα, αν η ρίζα είναι διπλή ή, εν γένει, άρτιας πολλαπλότητας, τότε εκεί κοντά στη ρίζα η γραφική παράσταση του πολυωνύμου μοιάζει με «μπωλ» που είτε κρατάει είτε «πετάει» το φαγητό. Τέλος, αν η ρίζα είναι περιττής πολλαπλότητας και μεγαλύτερη της μονάδας – δηλαδή, 3, 5, 7 κ.λπ. – τότε η γραφική παράσταση εκεί κοντά στη ρίζα παρουσιάζει καμπή – τέμνει και εφάπτεται ταυτόχρονα στον οριζόντιο άξονα.

Με όλα τα παραπάνω κατά νου, και παίζοντας λίγο με τον συντελεστή του μεγιστοβάθμιου όρου, μπορούμε αρκετά εύκολα να σχεδιάσουμε απλές «τυχαίες» γραφικές παραστάσεις που να έχουν τα ποιοτικά χαρακτηριστικά που θέλουμε κάθε φορά.

Λίγα παραπάνω…

Το επόμενο σχήμα της εβδομάδας ήταν αυτό:

Πόσα πολυώνυμα, πχια;

Ο αντίστοιχος κώδικας είναι αυτός:

\documentclass[tikz, margin=5mm]{standalone}
 
\begin{document}
    \begin{tikzpicture}
    \draw[dashed] (-5.99,-4.99) grid (5.99,4.99);
    \draw[thick, ->] (-6,0) -- (6,0)node[pos=1,below]{$x$};
    \draw[thick, ->] (0,-5) -- (0,5)node[pos=1,left]{$y$};
    \draw[thick, domain={-5}:{5}, samples=100] plot (\x,{0.025*(\x-1)*(\x+5)*(\x+2.5)*(\x-4.6)});
    \node[circle, draw=black, inner sep=1.5pt, fill=white](a) at (-5,0){};
    \node[circle, draw=black, inner sep=1.5pt, fill=white, label={right,yshift=8pt}:{$(5,3)$}](b) at (5,3){};
    \draw[thick, domain={-1.7}:{1.7}, samples=100] plot (\x,{\x*\x*\x})node[above]{$y=x^3$};
    \end{tikzpicture}
\end{document}

Κι εδώ, όχι κάτι τρελό, είναι η αλήθεια. Άξονες, πλέγμα, plot και κόμβοι. Να σχολιάσουμε, εκ νέου, την παράμετρο samples που δίνουμε στην εντολή \draw. Η συγκεκριμένη παράμετρος καθορίζει το πόσα σημεία θα χρησιμοποιήσει το tikz όταν σχεδιάζει την γραφική παράσταση. Όπως και πολλά άλλα πράγματα στη ζωή τα οποία δεν είναι ευθείες, το tikz προσεγγίζει τις καμπύλες ως τεθλασμένες γραμμές που απαρτίζονται από πολύ μικρά ευθύγραμμα τμήματα. Έτσι, με δεδομένο τον τύπο της εκάστοτε συνάρτησης/καμπύλης που θέλουμε να σχεδιάσουμε, το tikz επιλέγει ένα δεδομένο πλήθος ισαπέχοντων σημείων στο επίπεδο και μετά τα ενώνει με ευθείες γραμμές. Αν αυτά τα σημεία είναι αρκετά λίγα, τότε θα είναι πολύ αραιά τοποθετημένα στο επίπεδο, με αποτέλεσμα στο ανθρώπινο μάτι να είναι εμφανές ότι πρόκειται για τεθλασμένη γραμμή – καθώς θα αποτυπώνονται με ευκολία οι αλλαγές στον ρυθμό μεταβολής της καμπύλης. Για να πειστείτε, δοκιμάστε στον παραπάνω κώδικα να βάλετε samples=10 για να δείτε πόσο άσχημο είναι το αποτέλεσμα.

Τι κάνουμε, λοιπόν, για να το λύσουμε αυτό; Σαφώς, βάζουμε περισσότερα σημεία στο επίπεδο. Και γιατί βάλαμε 100 και δε βάλαμε 200 ή 1000; Ε, η αλήθεια είναι ότι αυτό το βρίσκουμε είτε εμπειρικά είτε με το μάτι – ότι φαίνεται αρκετά ευχάριστο. Ωστόσο, το κριτήριό μας δεν είναι μόνο αισθητικό, αλλά και υπολογιστικό. Όσο περισσότερα σημεία τοποθετούμε, τόσο περισσότερες πράξεις κάνει το tikz. Τώρα, επειδή το αγαπητό tikz δεν τα πάει και πολύ καλά με τις πράξεις, τόσο σε επίπεδο χρόνου όσο και σε επίπεδο ακρίβειας, καλό είναι να μην του ζητάμε να κάνει συχνά πράξεις. Αντιθέτως, όσο το λιγότερες, τόσο το καλύτερο. Συνεπώς, επιλέγουμε έναν αριθμό που να είναι ικανοποιητικός στο μάτι μας αλλά και για τον υπολογιστή μας.

Μία τσαχπινιά…

Το επόμενο γαργαλιστικό σχήμα μας είναι το εξής:

Πού πήγε το πλέγμα;

Ο αντίστοιχος κώδικας είναι ο εξής:

\documentclass[tikz, margin=5mm]{standalone}
 
\begin{document}
    \begin{tikzpicture}
    \draw[thick, ->] (-6,0) -- (6,0)node[pos=1,below]{$x$};
    \draw[thick, ->] (0,-5) -- (0,5)node[pos=1,left]{$y$};
    \draw[thick, domain={-5}:{-2.5}, samples=100] plot (\x,{0.025*(\x-1)*(\x+5)*(\x+2.5)*(\x-4.6)});
    \draw[thick, domain={1}:{5}, samples=100] plot (\x,{0.025*(\x-1)*(\x+5)*(\x+2.5)*(\x-4.6)});
    \draw[thick, dashed, domain={-2.5}:{1}, samples=100] plot (\x,{0.025*(\x-1)*(\x+5)*(\x+2.5)*(\x-4.6)});
    \node[circle, draw=black, inner sep=1.5pt, fill=white](a) at (-5,0){};
    \node[circle, draw=black, inner sep=1.5pt, fill=white, label={right,yshift=8pt}:{$(5,3)$}](b) at (5,3){};
    \draw[thick, domain={-2.5}:{2.5}, samples=100] plot (\x,{2*\x})node[above]{$y=ax$};
    \end{tikzpicture}
\end{document}

Εδώ στην ουσία έχουμε σχεδόν το ίδιο σχήμα με το προηγούμενο, με τη διαφορά ότι αντί για ένα κυβικό πολυώνυμο βάλαμε μία ευθεία και ότι εξαφανίσαμε το πλέγμα. Η αλήθεια είναι ότι, αν και φαν των πλεγμάτων, στην προκειμένη επιλέξαμε να μην έχουμε κάποιο πλέγμα, κυρίως γιατί θέλαμε να χρησιμοποιήσουμε και αλλού διακεκομμένες γραμμές, γεγονός που θα περιέπλεκε κάπως την κατάσταση – και, αν θυμάμαι καλά, ήθελα να αποφύγω και τα χρώματα στο εν λόγω σχήμα για κάποιον λόγο που δε θυμάμαι καλά.

Τώρα, το τσαχπίνικο στοιχείο του παραπάνω σχήματος είναι, σαφώς, αυτό το διακεκομμένο τμήμα της καμπύλης. Η αλήθεια είναι ότι, αν και φαίνεται ιδιαίτερα fancy, όπως βλέπετε, η υλοποίησή του είναι αρκετά απλή. Σχεδιάζουμε απλώς τρεις φορές το αγαπημένο μας πολυώνυμο, αλλά με διαφορετικά πεδία ορισμού και φ΄ροντίζουμε σε κάθε πεδίο ορισμού να επιλέξουμε το στυλ που μας αρέσει. Με αυτόν τον τρόπο θα μπορούσαμε να είχαμε αλλάξει, για παράδειγμα, και το χρώμα σε κάποιο διάστημα και, γενικά, ό,τι άλλο θέλουμε.

Μία μεγαλύτερη τσαχπινιά

Το επόμενο σχήμα μας είναι το εξής:

Εδώ μπήκε και χρώμα…

Ο αντίστοιχος κώδικας είναι ο εξής:

\documentclass[tikz, margin=5mm]{standalone}
 
\begin{document}
    \begin{tikzpicture}
    \fill[red!10] (-6,-2) rectangle (6,-5);
    \fill[red!10] (-6,1) rectangle (6,5);
    \draw[dashed] (-5.99,-4.99) grid (5.99,4.99);
    \draw[thick, ->] (-6,0) -- (6,0)node[pos=1,below]{$x$};
    \draw[thick, ->] (0,-5) -- (0,5)node[pos=1,left]{$y$};
    \begin{scope}
    \clip (-6,1) rectangle (6,5);
    \draw[thick, red, domain={-5}:{5}, samples=100] plot (\x,{0.025*(\x-1)*(\x+5)*(\x+2.5)*(\x-4.6)});
    \end{scope}
    \begin{scope}
    \clip (-6,-2) rectangle (6,-5);
    \draw[thick, red, domain={-5}:{5}, samples=100] plot (\x,{0.025*(\x-1)*(\x+5)*(\x+2.5)*(\x-4.6)});
    \end{scope}
    \begin{scope}
    \clip (-6,-2) rectangle (6,1);
    \draw[thick, dashed, blue, domain={-5}:{5}, samples=100] plot (\x,{0.025*(\x-1)*(\x+5)*(\x+2.5)*(\x-4.6)});
    \end{scope}
    \node[circle, draw=black, inner sep=1.5pt, fill=white](a) at (-5,0){};
    \node[circle, draw=black, inner sep=1.5pt, fill=white, label={right,yshift=8pt}:{$(5,3)$}](b) at (5,3){};
    \draw[thick] (-6,1) -- (6,1)node[pos=1,right]{$y=1$};
    \draw[thick] (-6,-2) -- (6,-2)node[pos=1,right]{$y=-2$};
    \draw[densely dotted] (-1.8,0) rectangle (.4,1);
    \draw[densely dotted] (4.2,-2) -- (4.2,0);
    \draw[densely dotted] (4.75,1) -- (4.75,0);
    \draw[thick, red] (-1.8,0) -- (.4,0);
    \draw[thick, red] (2,0) -- (4.2,0);
    \draw[thick, red] (4.75,0) -- (5,0);
    \end{tikzpicture}
\end{document}

Εδώ έχουμε αρκετό ζουμί είναι η αλήθεια. Εντάξει, όπως και παραπάνω, άξονες, πλέγματα, ευθείες γραμμές και λίγες γραφικές παραστάσεις, απλά το ζήτημα εδώ είναι το διαφορετικό στυλ και οι αλλαγές στα χρώματα. Σε αντίθεση με το προηγούμενο σχήμα, δεν έχουμε αλλαγές οι οποίες καθορίζονται αποκλειστικά από το πεδίο ορισμού, αλλά κυρίως από της τιμές που παίρνει η συνάρτησή μας – δηλαδή, από το σύνολο τιμών της. Εφόσον, λοιπόν, χάνουμε αυτό το μονοσήμαντο που μας δίνει ο ορισμός της συνάρτησης, πρέπει να σκεφτούμε κάπως διαφορετικά.

Βασικά, πρέπει να σκεφτούμε πιο απλά. Το μέρος της γραφικής παράστασης της συνάρτησής μας που θέλουμε να είναι μπλε και διακοπτόμενο βρίσκεται σε μία οριζόντια λωρίδα που είναι σαφώς οριοθετημένη από τα εξής σημεία:

(-6,-2)\rightarrow(6,-2)\rightarrow(6,1)\rightarrow(-6,1)\rightarrow(-6,-2).

Συνεπώς, θα θέλαμε έναν τρόπο να σχεδιάσουμε τη γραφική παράσταση του πολυωνύμου μας μόνο που να είναι περιορισμένη στο παραπάνω ορθογώνιο. Ε, αυτό ακριβώς μπορούμε να κάνουμε χρησιμοποιώντας την εντολή \clip. Βασικά, δεν είναι τόσο απλό, αλλά δεν είναι, δα, και κάτι δύσκολο. Αρχικά, θα χρειαστούμε το περιβάλλον \scope το οποίο μας επιτρέπει να περιορίσουμε την εμβέλεια των όσων γράφουμε εντός αυτού όπου εμείς θέλουμε. Ο συνηθέστερος τρόπος για να περιορίσουμε την εμβέλεια είναι χρησιμοποιώντας την εντολή \clip η οποία δέχεται κανονικά εντολές σχεδίασης όπως και η \draw και απλά «αποκόπτει» ότι δε βρίσκεται μέσα σε αυτήν την περιοχή που της δίνουμε. Έτσι, για παράδειγμα, χρησιμοποιώντας τις ακόλουθες γραμμές κώδικα:

\begin{scope}
    \clip (-6,1) rectangle (6,5);
    % crazy stuff
\end{scope}

μπορούμε να κρατήσουμε από το σχήμα μας μόνο όσα φαίνονται μέσα στο ορθογώνιο με κάτω αριστερή γωνία το σημείο (-6,1) και πάνω δεξιά γωνία το σημείο (6,5) – να σημειώσουμε εδώ ότι η εντολή rectangle καθορίζει ορθογώνιο πάντοτε με αυτόν τον τρόπο, δηλαδή δίνοντας τα δύο άκρα της κύριας διαγωνίου του ορθογωνίου, με προσανατολισμό παράλληλο στους δύο (νοητούς) άξονες.

Τώρα, με το παραπάνω τέχνασμα δεν έχουμε παρά να σχεδιάσουμε τρεις φορές την καμπύλη μας, μία για το μεσαίο ορθογώνιο, μία για το πάνω και μία για το κάτω. Τέλος, για τις προβολές στον οριζόντιο άξονα, αν και υπάρχει βιβλιοθήκη του tikz που μπορεί να μας βοηθήσει να τις υπολογίσουμε ακριβώς – και είναι σε αρκετές περιπτώσεις ο καλύτερος τρόπους – εδώ ήταν σχετικά εύκολο να τις βρούμε «με το μάτι» – θα μιλήσουμε γι’ αυτά στο άμεσο μέλλον.

Μία λοξή τσαχπινιά…

Το επόμενο σχήμα μας είναι ακόμα πιο τσαχπίνικο:

Κάτι στράβωσε εδώ…

Ο αντίστοιχος κώδικας φαίνεται παρακάτω:

\documentclass[tikz, margin=5mm]{standalone}
 
\begin{document}
    \begin{tikzpicture}
    \fill[red!10] (-5,5) -- (6,5) -- (6,-5) -- (5,-5) -- cycle;
    \draw[dashed] (-5.99,-4.99) grid (5.99,4.99);
    \draw[thick, ->] (-6,0) -- (6,0)node[pos=1,below]{$x$};
    \draw[thick, ->] (0,-5) -- (0,5)node[pos=1,left]{$y$};
    \draw[thick, domain={-5}:{5}, samples=100] plot (\x,{0.025*(\x-1)*(\x+5)*(\x+2.5)*(\x-4.6)});
    \begin{scope}
    \clip (-5,5) -- (6,5) -- (6,-5) -- (5,-5) -- cycle;
    \draw[thick, red, domain={-5}:{5}, samples=100] plot (\x,{0.025*(\x-1)*(\x+5)*(\x+2.5)*(\x-4.6)});
    \end{scope}
    \node[circle, draw=black, inner sep=1.5pt, fill=white](a) at (-5,0){};
    \node[circle, draw=black, inner sep=1.5pt, fill=white, label={right,yshift=8pt}:{$(5,3)$}](b) at (5,3){};
    \draw[thick, domain={-5}:{5}, samples=100] plot (\x,{-\x})node[below]{$y=-x$};
    \draw[densely dotted] (-1.42,0) -- (-1.42,1.42);
    \draw[densely dotted] (3.5,0) -- (3.5,-3.5);
    \draw[very thick, blue] (3.5,0) -- (5,0);
    \draw[very thick, blue] (-1.42,0) -- (2,0);
    \end{tikzpicture}
\end{document}

Εδώ έχουμε μία κατάσταση παρόμοια με την προηγούμενη. Άξονες, πλέγματα, καμπύλες και ευθείες όπως τις ξέρουμε. Απλά θέλουμε να βάψουμε ένα τρίγωνο ροζ και να αλλάξουμε εντός αυτού και το χρώμα της καμπύλης μας. Αλλά πριν πούμε αυτό, να πούμε κάτι που δεν αναφέραμε παραπάνω. Για να χρωματίσουμε μία περιοχή, ο πιο απλός τρόπος είναι χρησιμοποιώντας την εντολή \fill, η οποία είναι εξαδέλφη της \draw – αν και η δεύτερη μπορεί να κάνει ό,τι κάνει η πρώτη και κάποια ακόμα. Για την ακρίβεια, έχει ολόιδιο συντακτικό:

\fill[parameters] path;

Δηλαδή, μέσα σε αγκύλες δίνουμε τις παραμέτρους μας, όπως για παράδειγμα το χρώμα, και στη συνέχεια δίνουμε μία (κατά προτίμηση κλειστή) διαδρομή, το εσωτερικό της οποία θέλουμε να χρωματίσουμε. Επίσης, αντί για διαδρομή μπορούμε να δώσουμε και κάποιο σχήμα, όπως ένα ορθογώνιο, έναν κύκλο κ.λπ. Στην προκειμένη, αποφασίζουμε να περιγράψουμε αυτό το περίπου τρίγωνο που θέλουμε να γίνει ροζ χρησιμοποιώντας τις κορυφές του. Για την ακρίβεια, μέσα από την ακόλουθη γραμμή:

\fill[red!10] (-5,5) -- (6,5) -- (6,-5) -- (5,-5) -- cycle;

καθορίζουμε τα σημεία από τα οποία θα περάσει η τεθλασμένη γραμμή μας καθώς και το ότι αυτή είναι κλειστή – πράγμα που το καθορίζει η παράμετρος cycle που ενώνει το τελευταίο σημείο της διαδρομής με το πρώτο.

Επίσης, να επισημάνουμε εδώ ότι η έκφραση red!10 δε σημαίνει «ροζ», όπως λέμε τόσην ώρα, αλλά ότι το χρώμα που επιλέγουμε έχει μέσα 10% κόκκινο και το υπόλοιπο 90% είναι άσπρο – είναι το default χρώμα που συμπληρώνεται αυτόματα σε τέτοιες εκφράσεις. Τώρα, αν αυτό είναι όντως αυτό που λέμε ροζ, δε θα το συζητήσουμε εδώ.

Κατά τα άλλα, επειδή, όπως είπαμε και παραπάνω, η εντολή \clip έχει παρόμοιο συντακτικό με την \draw – και άρα και με την \fill -, μπορούμε χρησιμοποιώντας την παραπάνω μία γραμμή, απλώς αντικαθιστώντας το \fill[red!10] με \clip να αποκόψουμε και το κομμάτι του σχήματος που μας ενδιαφέρει – και στο οποίο η γραφική παράσταση της συνάρτησής μας θα είναι κόκκινη.

Και κάτι απλό…

Το επόμενο σχήμα της εβδομάδας είναι αυτό:

Ευκολάκι, έτσι;

Και ο αντίστοιχος κώδικας είναι αυτός:

\documentclass[tikz, margin=5mm]{standalone}
 
\begin{document}
    \begin{tikzpicture}
    \draw[dashed] (-3.99,-3.99) grid (3.99,3.99);
    \draw[thick,->] (-4,0) -- (4,0)node[pos=1,below]{$x$};
    \draw[thick,->] (0,-4) -- (0,4)node[pos=1,left]{$y$};
    \begin{scope}
    \clip (-4,-4) rectangle (4,4);
    \draw[thick, dashed, opacity=.8, purple, samples=50] plot (\x,{\x*\x*\x});
    \draw[thick, dashed, opacity=.8, orange, samples=50] plot (\x,{-\x*\x*\x});
    \draw[thick, blue, samples=200] plot (\x,{2-\x*\x*\x});
    \end{scope}
    \node[purple, opacity=.9, right] at (1.5,4){$x^3$};
    \node[orange, opacity=.9, right, yshift=-2pt] at (1.5,-4){$-x^3$};
    \node[blue, right] at (-1.3,4){$f$};
    \end{tikzpicture}
\end{document}

Εντάξει, εδώ όντως δεν έχουμε κάτι τρελό να παρατηρήσουμε, σχεδιάσαμε απλώς τρεις απλές και κομψές καμπύλες. Βασικά, ίσως και να έχουμε…

Παρατηρήστε τις τρεις γραμμές που σχεδιάζουν τις καμπύλες μας. Λείπει κάτι; Για ξανακοιτάξτε τις… Ναι, λείπει το πεδίο ορισμού. Και πώς ξέρει το tikz τι να κάνει; Εεεεμ, έχει τους τρόπους του. Για την ακρίβεια, όλες οι καμπύλες, αν τις παρατηρήσετε, ζουν μέσα σε ένα scope. Αυτό σημαίνει εκ προοιμίου ότι μπορούμε, αν φυσικά το θέλουμε και μας εξυπηρετεί, να μην καθορίσουμε το πεδίο ορισμού των καμπύλων που σχεδιάζουμε. Αντ’ αυτού, το tikz θα κάνει όλη τη δουλειά για εμάς και θα περιορίσει τις καμπύλες εντός του ορθογωνίου, εν προκειμένω, που κάναμε \clip.

Βέβαια, τίποτα στη ζωή δεν είναι δωρεάν. Για να αγοράσουμε αυτήν την ευκολία από το tikz πρέπει να πληρώσουμε το τίμημα του να χάσουμε εκείνον τον κομψό και σύντομο τρόπο που έχουμε να βάζουμε κόμβους στο τέλος διαφόρων γραμμών. Έτσι, η σύνταξη:

\draw[parameters] path node[parameters]{label};

πάει περίπατο, καθώς σε πολλές περιπτώσεις ο τελικός κόμβος εκτυπώνεται έξω από το scope που έχουμε καθορίσει – και άρα δεν φαίνεται στο σχήμα. Αντ’ αυτού, πρέπει να βάλουμε όποια σύμβολα θέλουμε στο τέλος των γραμμών με το χέρι, εισάγοντας τους κόμβους όπως παραπάνω.

Κι ένα fancy κλείσιμο…

Κλείνουμε αυτήν την αρκετά πολύπλοκη εβδομάδα με ένα σχετικά πολύπλοκο σχήμα:

Πωπω χαμός…

Ο αντίστοιχος κώδικας είναι αυτός εδώ:

\documentclass[tikz, margin=5mm]{standalone}
 
\begin{document}
    \begin{tikzpicture}
    \draw[dashed] (-3.99,-3.99) grid (3.99,3.99);
    \draw[thick,->] (-4,0) -- (4,0)node[pos=1,below]{$x$};
    \draw[thick,->] (0,-4) -- (0,4)node[pos=1,left]{$y$};
    \begin{scope}
    \clip (-4,-4) rectangle (4,4);
    \draw[thick, thick, blue, samples=200] plot (\x,{1+abs(1-exp(-\x))});
    \draw[thick, dashed, opacity=.8, purple, samples=50] plot (\x,{exp(\x)});
    \draw[thick, dashed, opacity=.8, orange, samples=50] plot (\x,{exp(-\x)});
    \draw[thick, dashed, opacity=.8, brown, samples=50] plot (\x,{-exp(-\x)});
    \draw[thick, dashed, opacity=.8, green!40!black, samples=50] plot (\x,{1-exp(-\x)});
    \draw[thick, densely dotted, opacity=.8, red, samples=50] plot (\x,{abs(1-exp(-\x))});
    \end{scope}
    \node[purple, opacity=.9, right] at (1.4,4){$e^x$};
    \node[orange, opacity=.9, above] at (-1.3,4){$e^{-x}$};
    \node[brown, opacity=.9, left, yshift=-4pt] at (-1.3,-4){$-e^{-x}$};
    \node[green!40!black, opacity=.9, right] at (4,1){$1-e^{-x}$};
    \node[red, opacity=.9, left] at (-1.5,4){$\left|1-e^{-x}\right|$};
    \node[blue, right] at (4,2){$f$};
    \end{tikzpicture}
\end{document}

Εντάξει, ομολογουμένως δεν έχει κάτι τρομακτικό το σχήμα. Για την ακρίβεια, άξονες, πλέγματα και καμπύλες είναι όλο. Το πιο hot ίσως στο παραπάνω είναι το πώς θα διαλέξουμε τα χρώματα έτσι ώστε να κάθονται καλά στο μάτι μαζί με το στυλ της κάθε καμπύλης. Σε επίπεδο tikz ένα στοιχείο που ίσως να έχουμε συναντήσει και παραπάνω και να μην έχουμε αναφέρει ως τώρα είναι η παράμετρος opacity. Όπως θα φαντάζεστε, η εν λόγω παράμετρος καθορίζει το πόσο διαφανές ή όχι είναι το σχήμα μας. Για την ακρίβεια, μία τιμή ίση με 1 σημαίνει ότι το σχήμα μας είναι αδιαφανές, ενώ μία τιμή ίση με το 0 σημαίνει ότι είναι πλήρως διαφανές – και άρα δεν έχει τόσο νόημα να το σχεδιάσουμε. Εν προκειμένω, επιλέξαμε να κατεβάσουμε λίγο το opacity των καμπύλων που θέλουμε να βρίσκονται στο παρασκήνιο για να μην τραβούν και πολύ την προσοχή από την κύρια καμπύλη που είναι η μπλε.

Και μιας και μιλήσαμε για παρασκήνιο, ας πούμε και δύο λόγια για το πώς τοποθετούνται τα αντικείμενα από το tikz. Όπως και στα περισσότερα πράγματα που σχετίζονται με γραφικά, όσο πιο αργά τοποθετούμε ένα αντικείμενο στο σχέδιό μας, τόσο πιο πάνω βρίσκεται – όπου το «πάνω» σημαίνει προς τα μάτια μας, ξεκινώντας από την οθόνη. Επομένως, ο πιο απλός τρόπος να επικαλύψουμε ένα σχήμα με ένα άλλο είναι να τα γράψουμε με τη σωστή σειρά. Βέβαια, όταν μπούμε και σε πιο προχωρημένα χωράφια θα δούμε ότι αυτό δεν είναι αρκετά και ότι χρειάζεται να καθορίσουμε, όπως λέμε, layers. Αλλά αυτά είναι για το μέλλον…

Αυτά για αυτήν την εβδομάδα, τα λέμε την επόμενη Τρίτη – μάλλον – με περισσότερα σχήματα – μάλλον 😉

Η κεντρική εικόνα είναι Οι δρόμοι για τις Βερσαλλίες του Camille Pissarro.

Διαβάστε επίσης: Τι λέει το Θεώρημα του Bolzano;

Ακολουθήστε το aftermathsgr στα social media:

One comment

Σχολιάστε

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση /  Αλλαγή )

Σύνδεση με %s