Ich bekomme noch die Krise. Irgendwas haut bei meinen Berechnungen nicht hin und ich komme einfach nicht drauf, wo der Fehler liegt. Die Formeln sind vorgegeben und ich habe sie einfach in Python übersetzt, aber ich sehe nicht, wo der Fehler in dieser Übersetzung sein könnte
Für Leute, die an meinem Leid teilhaben wollen: Ich versuche gerade, die Orientierung einer Region durch ihre Momente zu errechnen. Das ist an sich auch nicht sooo schwer, aber irgendwo hakts. Hier mal was Spezifischeres dazu.
Hier mein derzeitiges Ergebnis:
Wie man sieht, sind die errechneten Orientierungsvektoren falsch, da die eigentlich entlang der Hauptachse sein müssten (man ignoriere das geteilte Rechteck in der linken Ecke).
Opa braucht einen Rollstuhl, also bestelle ich einen Rollstuhl inklusive Lieferung direkt zu ihnen nach Hause.
Heute hat der Hausmeister den Abholschein bei den Mülltonnen gefunden und ihnen gebracht. Großeltern sind 24/7 daheim, es kann nicht sein dass keiner daheim war.
Rufe DPD mit dem Abholpin an, der scheint ihnen nicht auf, ob ich die Liefernummer hab. Nein wurde mir nicht mitgeteilt dann soll ich warten ob er nicht doch noch geliefert wird oder halt abholen…
Rufe Amazon an, frage dort ob sie die Liefernummer haben und bekomme als Auskunft dass der Händler die nicht angegeben haben. Amazon hat dem Händler jetzt eine Mail geschickt und dieser hat 2 Werktage zeit das zu lösen. Ich bin gespannt…
Edit:
Laut Abholschein wäre es über 30 Minuten entfernt.
Helfe diese Woche beim Aufbau eines Funkmastes, heute morgen hatte es noch für die ganzen Tag Regen angezeigt, darauf hatte ich mich eingestellt, leider kam dann ab ca 12 Uhr die Sonne raus, welche direkt mega geknallt hat und jetzt habe ich Sonnenbrand -.-
Hatte mir am Samstag extra für die Woche noch ein Sonnenschutzspray gekauft aber wegen des Wetterberichts natürlich nicht dabei gehabt.
Man man man, die schlechte Laune zieht sich echt durch heute. Drei Kreuze, wenn Donnerstag is und ich zumindest mal für zwei Tage raus komme und liebe Menschen treffe und den Familienneuzugang meiner besten Freundin kennenlerne
Mal ganz banal: Schon alle Indizes überprüft? Matlab fängt ja bei 1 an zu zählen und nicht bei 0, wie die meisten anderen Sprachen^^
Falls du nicht dahinter kommst, dürfte ich einen Blick drauf werfen? Gern auch per PN.
Python, nicht Matlab ^^. Denke du kommst wegen des Diagramms auf Matlab? Wurde mit Matplotlib erstellt, was stark an Matlab angelehnt ist, wenn ich mich richtig erinnere.
Wenn’s dich interessiert, kannst du gern drüberschauen. Area ist eine einfache Punktliste, enthalt also Tuple die jeweils die Y und die X Koordinate enthalten
@njit(cache=True)
def get_center(area: Iterable[Tuple[int, int]]) -> Tuple[int, int]:
"""
Method to get the center of the given area
:param area: The area to calculate the center of
:return: The center als tuple
"""
xc = 0
yc = 0
num = len(area)
for p in area:
xc += p[1]
yc += p[0]
return yc / num, xc / num
@njit(cache=True)
def get_orientation(area: Iterable[Tuple[int, int]]) -> Tuple[float, float]:
"""
Function to get the orientation vector of this area
:param area: The area to get the orientation from
:return: The orientation vector as tuple
"""
m11 = get_central_moment(area, 1, 1)
m20 = get_central_moment(area, 2, 0)
m02 = get_central_moment(area, 0, 2)
a = 2 * m11
b = m20 - m02
if a == b:
return (0.0 , 0.0), 0
else:
fak = b / math.sqrt(a * a + b * b)
x = (0.5 + 0.5 * fak) ** 0.5
y = (0.5 - 0.5 * fak) ** 0.5
if a >= 0 and y > 0:
y *= -1
return (y, x) , 0.5 * math.atan2(m20 - m02, 2 * m11)
@njit(cache=True)
def get_central_moment(area: Iterable[Tuple[int, int]], p: int, q: int) -> float:
"""
Function to calculate the central moment of the given area
:param area: The area to calculate the moment from
:param p: The exponent of the x coordinate
:param q: The exponent of the y coordinate
:return: The central moment of this area
"""
mom = 0.0
# Calculate area -> equivalent to get_moment(area, 0, 0)
m00 = len(area)
# Get center of mass -> equivalent to get_moment(area, 1, 0) and get_moment(area, 0, 1)
m01, m10 = get_center(area)
for point in area:
mom += ((point[1] - m10) ** p) * ((point[0] - m01) ** q)
return mom