Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Muunnosten Yhdistäminen | Geometriset muunnokset
Geometrinen Mallinnus Pythonilla

Muunnosten Yhdistäminen

Pyyhkäise näyttääksesi valikon

Työskenneltäessä geometristen muotojen kanssa on usein tarpeen soveltaa useampaa kuin yhtä muunnosta muotoon. Tätä prosessia kutsutaan muunnosten yhdistämiseksi. Sillä, missä järjestyksessä muunnokset—kuten siirto, kierto ja skaalaus—tehdään, on suuri merkitys, koska jokainen muunnos muuttaa muodon sijaintia, kokoa tai suuntaa tavalla, joka vaikuttaa seuraavaan operaatioon.

Oletetaan, että aloitat monikulmiolla ja haluat ensin siirtää sitä, sitten kiertää ja lopuksi skaalata. Jos vaihdat järjestystä—esimerkiksi skaalaat ensin, sitten kierrät ja lopuksi siirrät—lopputulos voi olla hyvin erilainen. Tämä johtuu siitä, että muunnokset eivät ole kommutatiivisia: A ja sen jälkeen B ei yleensä anna samaa tulosta kuin B ja sen jälkeen A.

Muunnosten yhdistämiseksi kukin muunnos sovelletaan muotoon peräkkäin. Jokainen vaihe käyttää edellisen vaiheen tulosta lähtökohtanaan. Tällä tavalla voidaan rakentaa monimutkaisia muokkauksia yksinkertaisista operaatioista, mutta järjestys on aina pidettävä mielessä.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
import numpy as np import matplotlib.pyplot as plt # Define a simple triangle polygon polygon = np.array([ [0, 0], [1, 0], [0.5, 1], [0, 0] ]) # Translation: move by (2, 1) def translate(points, tx, ty): return points + np.array([tx, ty]) # Rotation: rotate by theta degrees around origin def rotate(points, theta_deg): theta = np.radians(theta_deg) rotation_matrix = np.array([ [np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)] ]) return points @ rotation_matrix.T # Scaling: scale by (sx, sy) def scale(points, sx, sy): scaling_matrix = np.array([ [sx, 0], [0, sy] ]) return points @ scaling_matrix.T # Apply transformations translated = translate(polygon, 2, 1) rotated = rotate(translated, 45) scaled = scale(rotated, 1.5, 0.5) # Plotting plt.figure(figsize=(6, 6)) plt.plot(polygon[:, 0], polygon[:, 1], 'bo-', label='Original') plt.plot(translated[:, 0], translated[:, 1], 'go-', label='Translated') plt.plot(rotated[:, 0], rotated[:, 1], 'ro-', label='Rotated') plt.plot(scaled[:, 0], scaled[:, 1], 'mo-', label='Scaled') plt.legend() plt.axis('equal') plt.title('Combining Translation, Rotation, and Scaling') plt.show()
question mark

Mikä väittämä kuvaa parhaiten, miksi muunnosten järjestyksellä on merkitystä niitä yhdistettäessä?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 7

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 2. Luku 7
some-alt