Muotojen Skaalaus
Pyyhkäise näyttääksesi valikon
Skaalaus on perustavanlaatuinen geometrinen muunnos, joka muuttaa muodon kokoa säilyttäen sen rakenteen. Kun skaalaat geometrisen kuvion, jokainen piste siirtyy lähemmäs tai kauemmas kiinteästä pisteestä, yleensä origosta, tietyn kertoimen mukaan. Tämä prosessi voi olla yhtenäinen, jolloin kaikki ulottuvuudet skaalataan samalla kertoimella, tai epäyhtenäinen, jolloin eri ulottuvuudet skaalataan eri kertoimilla.
Yhtenäisessä skaalaamisessa jokainen pisteen koordinaatti kerrotaan samalla arvolla. Tämä säilyttää muodon mittasuhteet, joten neliö pysyy neliönä ja ympyrä ympyränä—vain suurempana tai pienempänä. Epäyhtenäisessä skaalaamisessa jokaisella koordinaattiakselilla voi olla eri skaalauskerroin. Esimerkiksi suorakulmiota voidaan venyttää vaakasuunnassa pitäen korkeus samana, jolloin siitä tulee leveämpi suorakulmio.
Skaalausmuunnoksia käytetään yleisesti tietokonegrafiikassa, mallinnuksessa ja suunnittelussa objektien koon muuttamiseen tai mittasuhteiden säätämiseen. Kun skaalaat muotoa, sen pinta-ala ja piiri muuttuvat ennustettavalla tavalla: yhtenäisessä skaalaamisessa kertoimella k piiri kerrotaan k:lla ja pinta-ala k:n neliöllä (k^2). Epäyhtenäinen skaalaus voi kuitenkin vääristää muotoa, muuttaen kulmia ja sivujen suhteellisia pituuksia.
12345678910111213141516171819202122232425262728import numpy as np import matplotlib.pyplot as plt def scale_polygon(vertices, scale_x, scale_y): scale_matrix = np.array([[scale_x, 0], [0, scale_y]]) return vertices @ scale_matrix.T # Define a triangle triangle = np.array([[1, 1], [3, 1], [2, 3], [1, 1]]) # Uniform scaling by factor 2 scaled_uniform = scale_polygon(triangle, 2, 2) # Non-uniform scaling: x by 2, y by 0.5 scaled_nonuniform = scale_polygon(triangle, 2, 0.5) # Plot original and scaled triangles plt.figure(figsize=(6, 6)) plt.plot(triangle[:,0], triangle[:,1], 'o-', label='Original') plt.plot(scaled_uniform[:,0], scaled_uniform[:,1], 'o-', label='Uniform scale (2x)') plt.plot(scaled_nonuniform[:,0], scaled_nonuniform[:,1], 'o-', label='Non-uniform scale (2x, 0.5y)') plt.legend() plt.axis('equal') plt.title('Scaling Transformations of a Triangle') plt.xlabel('X') plt.ylabel('Y') plt.show()
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme