Tutorial 3: Aliasing og Kanonisk Form i 2D Polære Koordinater¶
Et centralt koncept ved polære koordinater er aliasing, hvilket betyder, at det samme punkt i rummet kan beskrives ved uendeligt mange forskellige polære koordinatpar. Dette er en væsentlig forskel fra det kartesiske system, hvor hver punkt har præcis ét unikt \((x, y)\)-koordinatpar.
Årsager til aliasing:¶
Flere faktorer bidrager til aliasing i polære koordinater:
-
Periodicitet af vinkler: At tilføje et helt antal omdrejninger (\(360^\circ\) eller \(2\pi\) radianer) til vinklen \(\theta\) fører til den samme retning. Derfor beskriver \((r, \theta)\) og \((r, \theta + k \cdot 360^\circ)\) (hvor \(k\) er et heltal) det samme punkt.
-
Negativ radius: En negativ radius \(-r\) betyder, at man bevæger sig i den modsatte retning af vinklen \(\theta\). Dette er ækvivalent med at bruge den positive radius \(r\) og vinklen \(\theta + 180^\circ\) (eller \(\theta + \pi\) radianer). Derfor er \((r, \theta)\) og \((-r, \theta + 180^\circ)\) ækvivalente.
-
Ambivalens ved specielle punkter:
- For punkter direkte "vest" for origo (negativ x-akse, y=0) kan vinklen opfattes som \(+180^\circ\) eller \(-180^\circ\).
- For selve origo (\(r = 0\)) er vinkelværdien \(\theta\) irrelevant, da man ikke bevæger sig nogen afstand væk.
Generelt gælder det for et punkt med polære koordinater \((r, \theta)\) (undtagen origo), at alle ækvivalente koordinatpar (aliaser) kan udtrykkes som:
hvor \(k\) er et hvilket som helst heltal.
Kanonisk form:¶
Selvom der er uendeligt mange måder at repræsentere et punkt på i polære koordinater, er det ofte praktisk at have en standardiseret eller foretrukken måde at gøre det på. Dette kaldes den kanoniske form. For 2D polære koordinater \((r, \theta)\) defineres den kanoniske form ved følgende betingelser:
- \(r \geq 0\) (Radius er ikke-negativ).
- \(-180^\circ < \theta \leq 180^\circ\) (Vinklen ligger i intervallet fra eksklusivt \(-180^\circ\) til og med \(+180^\circ\). For punkter direkte "vest" for origo bruges \(\theta = +180^\circ\)).
- Hvis \(r = 0\) (ved origo), så sættes \(\theta = 0\).
Aliasering er illustreret i følgende animation:
Algoritme til konvertering til kanonisk form (r, θ):¶
- Hvis \(r = 0\), sæt \(\theta = 0\).
- Hvis \(r < 0\), negér \(r\) (gør den positiv) og læg \(180^\circ\) til \(\theta\).
- Hvis \(\theta \leq -180^\circ\), læg \(360^\circ\) til \(\theta\) indtil \(\theta > -180^\circ\).
- Hvis \(\theta > 180^\circ\), træk \(360^\circ\) fra \(\theta\) indtil \(\theta \leq 180^\circ\).
💻 Konvertering til kanonisk form i Python¶
Her er et eksempel på, hvordan du kan konvertere polære koordinater til kanonisk form i Python:
import math
def to_canonical_form(r, theta, output_degrees=False):
"""Konverterer polære koordinater til kanonisk form.
Args:
r (float): Afstanden fra origo.
theta (float): Vinklen (i radianer).
output_degrees (bool, optional): Hvis sandt, konverteres theta til grader.
Standard er False, hvilket betyder at theta returneres i radianer.
Returns:
tuple: En tuple (r, theta) hvor theta enten er i radianer eller grader.
"""
# Hvis vi er ved nulpunktet
if r == 0:
return 0, 0
# Håndter negative afstande
if r < 0:
r = -r
theta += math.pi # 180 grader
# Wrap theta til intervallet (-pi, pi]
theta = (theta + math.pi) % (2 * math.pi) - math.pi
# Konverter theta til grader hvis ønsket
if output_degrees:
theta = math.degrees(theta)
return r, theta
Forståelsen af aliasing er vigtig, når man arbejder med polære koordinater. Den kanoniske form giver en entydig repræsentation for hvert punkt i 2D-rummet, hvilket forenkler mange beregninger og sammenligninger. Konvertering til kanonisk form sikrer, at man har en standard måde at udtrykke polære koordinater på.