Käyrien Monikulmiollinen Approksimaatio
Pyyhkäise näyttääksesi valikon
Pythonin geometrisessa mallinnuksessa kohdataan usein sileitä käyriä, kuten ympyröitä tai ellipsiä, joita ei voi suoraan esittää pelkillä suorilla viivoilla. Tietokoneet kuitenkin käsittelevät suoria reunoja ja kärkipisteitä huomattavasti helpommin kuin aitoja matemaattisia käyriä. Tämän vuoksi käyriä lähestytään usein monikulmioilla, jotka muodostuvat suorista viivasegmenteistä.
Käyrän approksimointi monikulmiolla tarkoittaa, että käyrä esitetään sarjana toisiinsa liitettyjä suoria viivoja. Mitä enemmän monikulmiolla on sivuja, sitä tarkemmin se muistuttaa alkuperäistä käyrää. Esimerkiksi kolmio on hyvin karkea ympyrän approksimaatio, kun taas 100-sivuinen monikulmio näyttää ihmisen silmään lähes aidolta ympyrältä. Tätä tekniikkaa käytetään tietokonegrafiikassa, digitaalisen mallinnuksen yhteydessä sekä valmistusprosesseissa, joissa koneiden on seurattava reittejä, jotka voidaan määritellä vain suorina segmentteinä.
Käytännön esimerkki on ympyrän piirtäminen tietokoneruudulle. Koska näyttö koostuu pikseleistä ja suorista viivoista, ympyrä piirretään todellisuudessa monisivuisena monikulmiona. Tämä lähestymistapa mahdollistaa kompromissin tarkkuuden ja laskennallisen monimutkaisuuden välillä: enemmän sivuja tarkoittaa suurempaa tarkkuutta, mutta myös enemmän pisteitä ja laskutoimituksia.
Visualisointiin käytetään matplotlib-kirjastoa ja monikulmion kärkipisteiden koordinaatit lasketaan perustrigonometrian avulla.
123456789101112131415161718192021222324import matplotlib.pyplot as plt import numpy as np # Parameters for the circle center_x, center_y = 0, 0 radius = 1 num_sides = 12 # Try changing this value to 30 or 100 for a smoother circle # Calculate the vertices of the polygon angles = np.linspace(0, 2 * np.pi, num_sides, endpoint=False) x_points = center_x + radius * np.cos(angles) y_points = center_y + radius * np.sin(angles) # Close the polygon by repeating the first point at the end x_points = np.append(x_points, x_points[0]) y_points = np.append(y_points, y_points[0]) # Plot the polygonal approximation plt.figure(figsize=(5,5)) plt.plot(x_points, y_points, marker='o', label=f"{num_sides}-sided polygon") plt.gca().set_aspect('equal') plt.title("Polygonal Approximation of a Circle") plt.legend() plt.show()
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme