Polygonal Tilnærmelse af Kurver
Stryg for at vise menuen
Ved arbejde med geometrisk modellering i Python støder du ofte på glatte kurver, såsom cirkler eller ellipser, som ikke kan repræsenteres direkte ved kun at bruge rette linjer. Computere er dog langt bedre til at håndtere rette kanter og hjørner end egentlige matematiske kurver. Derfor benytter man ofte polygoner til at approksimere kurver; polygoner er figurer, der består af rette linjestykker.
At approksimere en kurve med en polygon betyder, at kurven repræsenteres som en række forbundne rette linjer. Jo flere sider polygonen har, desto tættere ligner den den oprindelige kurve. For eksempel er en trekant en meget grov tilnærmelse af en cirkel, mens en polygon med 100 sider næsten er umulig at skelne fra en ægte cirkel for det menneskelige øje. Denne teknik anvendes i computer-grafik, digital modellering og endda i produktionsprocesser, hvor maskiner skal følge baner, der kun kan defineres af rette segmenter.
Et praktisk eksempel er at tegne en cirkel på en computerskærm. Da skærmen består af pixels og rette linjer, bliver cirklen faktisk gengivet som en polygon med mange sider. Denne tilgang gør det muligt at styre balancen mellem nøjagtighed og beregningskompleksitet: flere sider giver større nøjagtighed, men også flere punkter og beregninger.
Du vil bruge matplotlib til at visualisere resultatet og grundlæggende trigonometri til at beregne koordinaterne for polygonens hjørner.
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()
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat