Durchführung: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „Bei der Durchführung der Objektbildung wird die erste aus der Segmentierung eingelesene Messdaten als Rechtpunkt“) |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
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: | |||
<pre> | |||
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 naechsten 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 % pruefen, 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 | |||
</pre> |
Version vom 11. Februar 2021, 19:30 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 naechsten 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 % pruefen, 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