Durchführung: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 10: | Zeile 10: | ||
d=(sqrt((x(zahl+1)-x(zahl))^2+(y(zahl+1)-y(zahl))^2));% euklidisches Distanz | d=(sqrt((x(zahl+1)-x(zahl))^2+(y(zahl+1)-y(zahl))^2));% euklidisches Distanz | ||
while d < 30 && zahl < (L-1) | while d < 30 && zahl < (L-1) % Wenn die Distanz zwischen nächsten Punkt und | ||
% aktueller Punkt kleiner als den Schwertwert ist, | |||
zahl=zahl+1; | zahl=zahl+1; % zahl inkrementiert | ||
end | end | ||
Linkspunkt = [x(zahl),y(zahl)]; | Linkspunkt = [x(zahl),y(zahl)]; % Nach aller Punkt durchgelaufen werden, ist der aktueller Punkt Linkspunkt | ||
Eckepunkt=[x(floor(zahl/2)+1),y(floor(zahl/2)+1)]; | Eckepunkt=[x(floor(zahl/2)+1),y(floor(zahl/2)+1)]; | ||
Zeile 24: | Zeile 24: | ||
d3=sqrt((Linkspunkt(1)-Eckepunkt(1))^2+(Linkspunkt(2)-Eckepunkt(2))^2);% Distanz zwischen Linkspunkt und Eckespunkt | d3=sqrt((Linkspunkt(1)-Eckepunkt(1))^2+(Linkspunkt(2)-Eckepunkt(2))^2);% Distanz zwischen Linkspunkt und Eckespunkt | ||
if (sin(d2/d1))>0.5 || (sin(d3/d1))>0.5 | if (sin(d2/d1))>0.5 || (sin(d3/d1))>0.5 % prüfen, ob es rechtwinklig ist | ||
Eckepunkt=[x(floor(zahl/2)),y(floor(zahl/2))]; | Eckepunkt=[x(floor(zahl/2)),y(floor(zahl/2))]; | ||
end | end |
Version vom 11. Februar 2021, 19:31 Uhr
Die Eingaben sind die segmentierte Messdaten, wird der Rechtspunkt in jeder Zyklen zuerst ermittelt. Danach wird die Distanz zwischen nächste Punkt und dem aktuellen Punkt berechnet, wenn diese Distanz kleiner als ein Schwellwert ist, wird die Zyklen inkrementiert. Wenn alle Punkte durchlaufen werden, ist der letzte Punkt der Linkspunkt. Um den Eckepunkt zu bestimmen, wird die Distanz zwischen Linkspunkt und Rechtspunkt(d1), Eckepunkt und Rechtspunkt(d2), Linkspunkt und Eckepunkt(d3) berechnet, damit den Winkel durch "sin" prüft, ob er rechtwinkelig ist. Dann der Mittelpunkt(auf der vorne Seite des Kartons) kann durch den Eckepunkt und Rechtspunkt berechnet. Abschließend wird den Winkel berechnet, der zwischen dem Mittelpunkt und Koordinatensystem ist.
Der Funktionsprototyp sieht folgendermaßen aus:
for zahl=1:(L-1) Rechtspunkt = [x(zahl),y(zahl)]; d=(sqrt((x(zahl+1)-x(zahl))^2+(y(zahl+1)-y(zahl))^2));% euklidisches Distanz while d < 30 && zahl < (L-1) % Wenn die Distanz zwischen nächsten Punkt und % aktueller Punkt kleiner als den Schwertwert ist, zahl=zahl+1; % zahl inkrementiert end Linkspunkt = [x(zahl),y(zahl)]; % Nach aller Punkt durchgelaufen werden, ist der aktueller Punkt Linkspunkt Eckepunkt=[x(floor(zahl/2)+1),y(floor(zahl/2)+1)]; d1=sqrt((Linkspunkt(1)-Rechtspunkt(1))^2+(Linkspunkt(2)-Rechtspunkt(2))^2);% Distanz zwischen Linkspunkt und Rechtspunkt d2=sqrt((Eckepunkt(1)-Rechtspunkt(1))^2+(Eckepunkt(2)-Rechtspunkt(2))^2);% Distanz zwischen Eckepunkt und Rechtspunkt d3=sqrt((Linkspunkt(1)-Eckepunkt(1))^2+(Linkspunkt(2)-Eckepunkt(2))^2);% Distanz zwischen Linkspunkt und Eckespunkt if (sin(d2/d1))>0.5 || (sin(d3/d1))>0.5 % prüfen, ob es rechtwinklig ist Eckepunkt=[x(floor(zahl/2)),y(floor(zahl/2))]; end center=[(Rechtspunkt(1)+ Eckepunkt(1))/2,(Rechtspunkt(2)+ Eckepunkt(2))/2]; % Mittelpunkt auf der vorner Seite des Kartons Mittel=[(Rechtspunkt(1)+Linkspunkt(1))/2,(Rechtspunkt(2)+Linkspunkt(2))/2]; % Mittelpunkt zwischen Rechtspunkt und Linkspunkt winkelMP = acosd(center(1)/norm(center)); % Winkel zwischen center und Koordinatensystem (...) end