-
Notifications
You must be signed in to change notification settings - Fork 27
Kuvaympäristö
Esimerkiksi kuvaajat ja lukusuorat voidaan piirtää kuva-ympäristön avulla. Ympäristön sisään kirjoitetaan Python-koodi joka generoi kuvan. Yksinkertaisin tapa lisätä kuva on
\begin{kuva}
KOODI
\end{kuva}
Kuva-ympäristöä ei voida laittaa joidenkin ympäristöjen sisään, jolloin täytyy ensin määritellä kuva päätasolla
\begin{luoKuva}{NIMI}
KOODI
\end{luoKuva}
ja sitten näyttää kuva lisäämällä koodi
\naytaKuva{NIMI}
kuvan sijoituskohtaan. Kuvan nimiä voi käyttää uudelleen, luoKuva aina ylikirjoittaa vanhan.
Tavallisesti kuvissa tarvittava Python-koodi on sarja funktiokutsuja, jokainen omalla rivillään. Funktiokutsu on muotoa FUNKTIO(PARAMETRIT), missä PARAMETRIT on pilkulla erotettu lista funktion parametrien arvoja. Osalla funktion parametreista voi olla oletusarvoja, jolloin niitä ei tarvitse erikseen ilmoittaa. Esimerkiksi jos funktiolla f on parametrit a, b ja c joista b:llä on oletusarvo 1 ja c:llä oletusarvo 2, niin funktiokutsu f(100, c = 300) tarkoittaa parametrien arvoja a = 100, b = 1, c = 300.
Jos Python-koodissa on virhe, käännössä tulee yleensä virhe
! LaTeX Error: File `kuva-tmp-output.txt' not found.
Tällöin Python-virheilmoitus on heti tämän yläpuolella.
Pythonissa merkkijonot kirjoitetaan lainausmerkkien "" sisään. Kenoviivoilla on merkkijonojen sisällä erikoismerkitys, joten jos tarvitset kenoviivoja merkkijonon sisällä, täytyy kirjoittaa pieni r lainausmerkkejä ennen, jolloin Python pitää merkkijonoa "raakana". Siis esimerkiksi r"$\pi$"
.
Kuvissa voi tietenkin käyttää Pythonia muutenkin, mutta kannattaa tehdä sellaista että toimii sekä Python 2:lla että Python 3:
- funktio piste: Piirtää pisteen haluttuun kohtaan. Toimii myös kuvaajapohjassa.
- parametri P: Pisteen sijainti.
- parametri nimi: Pisteen viereen merkittävä nimi. (oletusarvo "")
- parametri suunta: Nimen merkitsemissuunta asteina. (oletusarvo 0)
ESIM: Pisteen piirtäminen kohtaan (5, 3):
\begin{kuva}
piste((5, 3))
\end{kuva}
ESIM: Pisteen piirtäminen kohtaan (3, 1), nimellä "A" joka merkitään vasemmalle alas
\begin{kuva}
piste((3, 1), "A", -135)
\end{kuva}
- funktio kuvaaja.pohja: Luo kuvaajapohjan ja muuttaa piirtotilan piirtämään sen sisään.
- parametrit minX, maxX, minY, maxY: X- ja Y-akselien ala- ja ylärajat. Täytyy päteä minX <= 0 <= maxX ja minY <= 0 <= maxY
- parametrit leveys, korkeus: Kuvaajapohjan leveys ja korkeus. Mikäli molemmat jätetään tyhjäksi, kokona käytetään (maxX - minX) x (maxY - minY). Mikäli vain toinen jätetään tyhjäksi, se päätellään toisesta niin että kuvaajasta tulee isometrinen.
- parametrit nimiX, nimiY: X- ja Y-akselien nimet LaTeX-koodina. (oletusarvot "")
- parametri ruudukko: Piirretäänkö kuvaajapohjaan ruudukko. (oletusarvo: True)
Kuvaajapohja yrittää tehdä jotenkin järkevän näköisen ruudukon taustalle, mutta se voi yhä joissain tapauksissa näyttää huonolta, yritetään parantaa...
- funktio kuvaaja.piirra: Piirtää annetun funktion (y = f(x)) kuvaajan. Ei vaadi välttämättä kuvaajapohjaa.
- parametri f: Piirrettävä x:n funktio, esim "x**2" tai "cos(x)" (Python-koodia merkkijonossa).
- parametrit a ja b: X-koordinaattien väli [a, b]. Jos jompikumpi otetaan pois, käytetään nykyisiä X-rajoja, jotka alustetaan esimerkiksi kuvaaja.pohjassa automaattisesti.
- parametri nimi: Funktion yhteyteen merkittävä nimi LaTeX-koodina. (oletusarvo: "")
- parametri kohta: Funktion kohta johon nimi merkitään. Jos jätetään tyhjäksi, nimi merkitään funktion viimeiseen piirrettyyn kohtaan. Jos luku x, nimi merkitään kohtaan (x, f(x)). Jos pari (X, Y), nimi merkitään kohtaan (X, Y).
- parametri suunta: Mihin suuntaan nimi laitetaan asteina. (oletusarvo: 0)
- funktio kuvaaja.piirraParametri: Piirtää parametrikäyrän. Ei vaadi välttämättä kuvaajapohjaa.
- parametrit x ja y: Piirrettävät t:n X- ja Y-koordinaattifunktiot (Python-koodia merkkijonossa).
- parametrit a ja b: Parametri kulkee välin [a, b], eli siis piirrettävä käyrä on (x(t), y(t)) kun t käy läpi välin [a, b]. (oletusarvot: 0 ja 1)
- parametri nimi: Funktion yhteyteen merkittävä nimi LaTeX-koodina. (oletusarvo: "")
- parametri kohta: Funktion kohta johon nimi merkitään. Jos jätetään tyhjäksi, nimi merkitään funktion viimeiseen piirrettyyn kohtaan. Jos luku t, nimi merkitään kohtaan (x(t), y(t)). Jos pari (X, Y), nimi merkitään kohtaan (X, Y).
- parametri suunta: Mihin suuntaan nimi laitetaan asteina. (oletusarvo: 0)
ESIM: kuvaajapohja alueelle [-1, 4] x [-2, 3] johon piirretään nimetty funktion x^2-2 kuvaaja.
\begin{kuva}
kuvaaja.pohja(-1, 4, -2, 3)
kuvaaja.piirra("x**2-2", nimi = "$x^2 - 2$")
\end{kuva}
ESIM: isometrinen kuvaajapohja alueelle [-1, 1] x [-1, 1] ilman ruudukkoa jossa x:ksi ja y:ksi nimetyt akselit, ja sen päälle kuvaajat x^3-1/2:sta välillä [0.2, 0.95] johon nimi kohtaan 0.6 ylävasemmalle ja sen päälle normaalisti nimetty funktion x kuvaaja
\begin{kuva}
kuvaaja.pohja(-1, 1, -1, 1, korkeus = 8, nimiX = "$x$", nimiY = "$y$", ruudukko = False)
kuvaaja.piirra("x**3-0.5", a = 0.2, b = 0.95, nimi = "$x^3-1/2$", kohta = 0.6, suunta = 135)
kuvaaja.piirra("x", nimi = "$x$")
\end{kuva}
Lukusuora-moduulin avulla voi piirtää yhden tai useamman lukusuoran joihin voi merkitä pisteitä ja välejä, hahmotella kuvaajia ja joiden välille voi vetää nuolia.
- funktio lukusuora.pohja: Piirtää lukusuorapohjan, eli annetun määrän lukusuoria.
- parametrit a ja b: Lukusuoran näytettävän osan alku- ja loppupiste.
- parametri leveys: Lukusuoran leveys (cm). (oletusarvo: b - a)
- parametri nimi: Jokaiselle akselille annettava nimi. (oletusarvo: "")
- parametri n: Lukusuorien lukumäärä. (oletusarvo: 1)
- parametri varaa_tila: Varataanko lukusuoralle kaikki käytettävissä oleva tila (True) vai vaan niin paljon kun tarvitaan (False). (oletusarvo: True)
- funktio lukusuora.piste / lukusuora.kohta / lukusuora.nimio: Piirtää pisteen (pisteenä/pystyviivana/pelkkänä tekstinä) lukusuoralle.
- parametri X: Kohta lukusuoralla johon merkki laitetaan.
- parametri nimi: Merkki yläpuolelle merkittävä nimi. (oletusarvo: "")
- parametri i: Monenteenko lukusuoraan merkki laitetaan. Jos 0, merkitään kaikkiin lukusuoriin. (oletusarvo: 0)
- parametri nimi_ylos: Jos True, nimi laitetaan lukusuoran yläpuolelle, muuten alapuolelle (oletusarvo: True)
- funktio lukusuora.vali: Piirtää lukusuoralle välin.
- parametrit a ja b: Välin alku- ja loppupisteet. Arvo None tarkoittaa, että väli on rajoittamaton. (oletusarvot: None)
- parametrit a_kuuluu ja b_kuuluu: Kuuluvatko alku- tai loppupisteet väliin. (oletusarvot: False, siis avoin väli)
- parametrit a_nimi ja b_nimi: Alku- ja loppupisteiden päälle merkittävät nimet. (oletusarvot: "")
- parametri i: Lukusuora, jolle väli piirretään. (oletusarvo: 1)
- funktio lukusuora.nuoli: Piirtää lukusuorien välille nuolen.
- parametrit a ja b: Nuolen alku- ja loppu-X-koordinaatit.
- parametrit a_i ja b_i: Mille lukusuorille nuolen alku ja loppu menevät. (oletusarvot: 1)
- funktio lukusuora.piirraKuvaaja: Piirtää kuvaajan lukusuoran ympärille. Funktiosta näytetään arvot, jotka ovat välillä [-1, 1].
- parametri f: Piirrettävä x:n funktio Python-koodina merkkijonossa, kuten funktiossa kuvaaja.piirra.
- parametri i: Lukusuora, johon kuvaaja piirretään. (oletusarvo: 1)
ESIM: Piirretään 8cm leveälle lukusuoralle välistä [0, 10] avoin väli [a, b[ missä a piirretään kohtaan 2 ja b kohtaan 10.
\begin{kuva}
lukusuora.pohja(0, 10, 8)
lukusuora.vali(2, 8, True, False, "$a$", "$b$")
\end{kuva}
ESIM: Piirretään havainnollistava kuva, jossa on kaksi lukusuoraa. Alemmalla lukusuoralla kaikki nimet laitetaan viivan alapuolelle. Molempiin lukusuoriin merkitään pystyviivalla kohta 0. Kuvassa näytetään nuolin miten väli [1, 2[ kuvautuu väliksi [1, 4[ toiseen korotuksessa ja erityisesti miten 3/2 kuvautuu pisteeseen (3/2)^2.
\begin{kuva}
lukusuora.pohja(0, 5, 9, n = 2)
lukusuora.kohta(0, "$0$", 1)
lukusuora.kohta(0, "$0$", 2, nimi_ylos = False)
with vari("red"):
lukusuora.nuoli(1, 1, 1, 2)
lukusuora.nuoli(1.5, 1.5**2, 1, 2)
lukusuora.nuoli(2, 4, 1, 2)
lukusuora.vali(1, 2, True, False, "$1$", "$2$", 1)
lukusuora.vali(1, 4, True, False, "$1^2$", "$2^2$", 2, nimi_ylos = False)
lukusuora.piste(1.5, "$3/2$", 1)
lukusuora.piste(1.5**2, "$(3/2)^2$", 2, nimi_ylos = False)
\end{kuva}
ESIM: piirretään funktion x merkkikaavio.
\begin{kuva}
lukusuora.pohja(-2, 2, 4)
lukusuora.piirraKuvaaja("x")
lukusuora.nimio(-1, "$-$", nimi_ylos = False)
lukusuora.nimio(1, "$+$")
\end{kuva}
Geometrian piirtämiseen tarkoitetut funktiot löytyvät geom-paketista. Suurin osa funktioista ottaa parametriksi lähtötietoja, piirtää niiden määräämän geometrisen kuvion ja palauttaa kyseistä geometrista kuviota kuvaavan olion jota voi käyttää muiden funktioiden parametrina. Piirtofunktioissa on piirra-parametri jonka asettamalla Falseksi voi estää kuvion piirtämisen, jos halutaan käyttää kuviota vain konstruktioon.
- funktio geom.piste: Piirtää pisteen.
- parametrit x ja y: Pisteen x- ja y-koordinaatit.
- parametri nimi: Pisteen viereen kirjoitettava nimi. (oletusarvo: "")
- parametri suunta: Nimen suunta asteina. (oletusarvo: 0)
- parametri piirra: Piirretäänkö piste kuvaan. (oletusarvo: True)
- funktio geom.leikkauspiste: Piirtää pisteen kahden kuvion leikkauspisteenä.
- parametrit X ja Y: Kuviot joiden leikkauspiste lasketaan.
- parametrit nimi, suunta: ks. geom.piste.
- parametri valinta: Kokonaisluku 0, 1, ..., joka määrää mikä piste valitaan, jos leikkauspiste ei ole yksikäsitteinen. (oletusarvo: 0)
- parametri piirra: Piirretäänkö piste kuvaan. (oletusarvo: True)
- funktio geom.jana / geom.puolisuora / geom.suora: Piirtää janan/puolisuoran/suoran kahden pisteen määräämänä.
- parametrit A ja B: Alku- ja loppupisteet.
- parametri nimi: Viivan viereen kirjoitettava nimi. (oletusarvo: "")
- parametri kohta: Mihin kohtaan viivaa nimi merkitään. A = 0, B = 1. (oletusarvo: 0.5)
- parametri puoli: True jos nimi merkittävä viivan oikealle puolelle, False jos vasemmalle. (oletusarvo: True)
- parametri piirra: Piirretäänkö viiva kuvaan. (oletusarvo: True)
Suoraa tai puolisuoraa ei voi piirtää jos piirtoaluetta ei ole ennalta rajattu jotenkin niin ettei viiva jatku äärettömyyteen. Piirtoalueen voi rajata rajaa-funktiolla.
- funktio geom.puolisuoraSuuntaan / geom.suoraSuuntaan: Piirtää puolisuoran/suoran annetusta pisteestä annettuun suuntaan.
- parametri A: Puolisuoran/suoran piste.
- parametrit u ja v: (u, v) on puolisuoran/suoran suuntavektori.
- parametrit nimi, kohta, puoli, piirra: ks. geom.puolisuora / geom.jana.
- funktio geom.ympyra: Piirtää ympyrän.
- parametri keskipiste: Ympyrän keskipiste.
- parametri sade: Ympyrän säde.
- parametri nimi: Ympyrän viereen kirjoitettava nimi. (oletusarvo: "")
- parametri kohta: Kohta johon nimi kirjoitetaan asteina. (oletusarvo: 0)
- parametri puoli: True jos nimi merkittävä ympyrän ulkopuolelle, False jos sisäpuolelle. (oletusarvo: True)
- parametri piirra: Piirretäänkö ympyrä kuvaan. (oletusarvo: True)
- funktio geom.ymparipiirrettyYmpyra: Piirtää ympyrän kolmen pisteen ympäripiirrettynä ympyränä.
- parametrit A, B ja C: Kolme ympyrän kehäpistettä.
- parametrit nimi, kohta, puoli ja piirra: ks. geom.ympyra.
- funktio geom.ympyranKeskipiste: Piirtää ympyrän keskipisteen.
- parametri w: Ympyrä, jonka keskipiste piirretään.
- parametrit nimi, suunta ja piirra: ks. geom.piste.
- funktio geom.ympyranKehapiste: Piirtää ympyrän kehäpisteen.
- parametri w: Ympyrä, jonka keskipiste piirretään.
- parametri kohta: Pisteen kohta asteina ympyrän kehällä.
- parametrit nimi, suunta ja piirra: ks. geom.piste.
- funktio geom.kulma: Piirtää kulman.
- parametrit A, B ja C: Kulman määräävät pisteet. Piirrettävä kulma on ABC, siis BA on sen oikea kylki ja BC vasen kylki.
- parametri nimi: Kulmaan kirjoitettava nimi. (oletusarvo: "")
- parametri monista: Kuinka monta kulmakaarta merkitään. (oletusarvo: 1)
- parametri piirra: Piirretäänkö kulma kuvaan. (oletusarvo: True)
- funktio geom.etaisyys: Laskee kahden pisteen välisen etäisyyden.
- parametrit A ja B: Pisteet joiden välinen etäisyys lasketaan.
ESIM: Piirretään kolmio ABC, ja sen ympäripiirretty ympyrä w. Kirjoitaan pisteiden A, B ja C nimet sellaisiin suuntiin etteivät ne mene viivojen päälle. Merkitään ympyrän w nimi ympyrän ulkopuolelle suuntaan -40°. Piirretään ympyrän keskipiste O ja piirretään CO:n toinen leikkauspiste ympyrän w kanssa, kuitenkaan piirtämättä suoraa CO.
\begin{kuva}
A = geom.piste(0, 0, "$A$", suunta = -130)
B = geom.piste(5, 2, "$B$")
C = geom.piste(3, 4, "$C$", suunta = 80)
geom.jana(A, B)
geom.jana(B, C)
geom.jana(C, A)
w = geom.ymparipiirrettyYmpyra(A, B, C, r"$\omega$", kohta = -40)
O = geom.ympyranKeskipiste(w, "$O$")
CO = geom.suora(C, O, piirra = False)
geom.leikkauspiste(CO, w)
\end{kuva}
- funktio vari: Asettaa piirrossa käytettävän värin. Väriä käytetään esim. pisteisiin, kuvaajiin ja niiden nimiin.
- parametri uusivari: Uusi käytettävä väri TiKZin ymmärtämässä muodossa. xcolor-värit ovat hyviä, esimerkiksi "red", "blue", "black!10!white" (sekoitus mustasta ja valkoisesta, 10% mustaa).
- funktio paksuus: Asettaa kuvaajien ja muiden viivojen piirrossa käyttettävän viivanpaksuuden.
- parametri kerroin: Uuden paksuuden kerroin suhteessa nykyiseen paksuuteen.
- funktio rajaa: Asettaa piirrossa käytettäviä X- ja Y-koordinaattien ala- ja ylärajoja.
- parametri minX ja maxX: X- koordinaatin ala- ja ylärajat, jos None niin säilytetään ennallaan. (oletusarvot: None)
- parametri minY ja maxY: Y- koordinaatin ala- ja ylärajat, jos None niin säilytetään ennallaan. (oletusarvot: None)
ESIM: Piirretään ensin tavallinen funktion x kuvaaja ja sitten punainen paksu funktion -y kuvaaja samaan pohjaan.
\begin{kuva}
kuvaaja.pohja(-1, 1, -1, 1)
kuvaaja.piirra("x")
vari("red")
paksuus(2)
kuvaaja.piirra("-x")
\end{kuva}
Piirtoasetukset muuttavat asetuksia nykyisen kuvan loppuun asti. Jos halutaan käyttää asetuksia vain tilapäisesti, täytyy koodi laittaa with palautin():
-blokkiin, joka sisennetyn koodin loputtua palauttaa asetukset.
ESIM: Piirretään ensin tavallinen piste P, sitten piste Q sinisellä, sitten taas tavallinen piste R.
\begin{kuva}
piste((0, 0), "P")
with palautin():
vari("blue")
piste((2, 0), "Q")
piste((1, 1.5), "R")
\end{kuva}
Kaikissa piirtoasetusfunktioissa on myös palautin-ominaisuus valmiina, joten saman voi kirjoittaa lyhemmin:
\begin{kuva}
piste((0, 0), "P")
with vari("blue"):
piste((2, 0), "Q")
piste((1, 1.5), "R")
\end{kuva}
tai jopa
\begin{kuva}
piste((0, 0), "P")
with vari("blue"): piste((2, 0), "Q")
piste((1, 1.5), "R")
\end{kuva}