Autor Beitrag
mardem80
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 14.07.10 18:51 
Hallo Forum,

folgendes Problem:
Ich berechne mit dem nachfolgenden Codeteil die kartesischen Koordinaten eines Polygonprofil's für die X und Y Achse einer CNC-Fräsmaschine.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
   i:=0;
    
    while i < 360 do
      begin

          Boglen := Pi() * i / 180;     //Bogenmaß      

  Korv[i].X := ((Rm - Data.e * cos(Data.n * Boglen)) *   // X-Koordinate
                 cos(Boglen) - Data.n * Data.e * sin(Data.n * Boglen) *
                 sin(Boglen));

  Korv[i].Y :=  ((Rm - Data.e * cos(Data.n * Boglen)) *  //Y-Koordinate
                  sin(Boglen) + Data.n * Data.e * sin(Data.n * Boglen) *  
                  cos(Boglen));

        inc(i); //Ein Grad weiter

   end;

Beispiel-Profil einer kommerziellen Software:

www.gopion.com/epion...in_body/1/wn6_1e.gif

Mein Problem liegt nun darin, daß das Profil immer die gleiche Ausgangslage besitzt. Eine Ecke liegt links und die anderen beide sind rechts oben bzw. rechts unten. Durch vertauschen der trigonometrischen Funktionen ist es mir möglich das Profil um 180° zu drehen, was mir alledings nicht ausreicht.

Hat jemand eine Idee wie man die Formel anpassen müsste um das Profil z.B in 90°-Schritten zu drehen?


Grüsse

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Durch rumprobieren herausgefunden:
Durch vertauschen aller Winkelfunktionen (cos <-> sin) + vertauschen der Achsen lässt sich die Kontur in 90° Schritten drehen.

Problem gelöst!


Zuletzt bearbeitet von mardem80 am Mi 14.07.10 21:04, insgesamt 1-mal bearbeitet
hlohning
Hält's aus hier
Beiträge: 2
Erhaltene Danke: 1


D6 Prof, D7 Studio, D8
BeitragVerfasst: Mi 14.07.10 22:16 
Eine allgemeine Lösung geht ganz einfach zu programmieren: man nehme eine Rotationsmatrix, setze die passenden Werte für den gesuchten Rotationswinkel und multipliere jede Koordinate mit dieser Matrix. Ich habe das mal vor einiger Zeit auf folgender Seite zusammengefasst:

www.statistics4u.inf..._matrix_multgeo.html

Grüße,

Hans