Durchführung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
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)                                         % Wenn die Distanz zwischen naechsten Punkt und  
     while d <  30  && zahl < (L-1) % Wenn die Distanz zwischen nächsten Punkt und  
                                                                            % aktueller Punkt kleiner als den Schwertwert ist,
                                  % aktueller Punkt kleiner als den Schwertwert ist,
     zahl=zahl+1;                                                           % zahl inkrementiert
     zahl=zahl+1; % zahl inkrementiert
      
      
     end
     end


     Linkspunkt = [x(zahl),y(zahl)];                                       % Nach aller Punkt durchgelaufen werden, ist der aktueller Punkt Linkspunkt
     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                             % pruefen, ob es rechtwinklig ist
     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