matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Schulmathe
  Status Primarstufe
  Status Mathe Klassen 5-7
  Status Mathe Klassen 8-10
  Status Oberstufenmathe
    Status Schul-Analysis
    Status Lin. Algebra/Vektor
    Status Stochastik
    Status Abivorbereitung
  Status Mathe-Wettbewerbe
    Status Bundeswettb. Mathe
    Status Deutsche MO
    Status Internationale MO
    Status MO andere Länder
    Status Känguru
  Status Sonstiges

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenTechnische InformatikAufteilung Kreis in Segmente
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Deutsch • Englisch • Französisch • Latein • Spanisch • Russisch • Griechisch
Forum "Technische Informatik" - Aufteilung Kreis in Segmente
Aufteilung Kreis in Segmente < Technische Inform. < Praktische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Technische Informatik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Aufteilung Kreis in Segmente: X-Y Achse errechnen
Status: (Frage) beantwortet Status 
Datum: 17:14 Mi 26.10.2005
Autor: popcorn5

Hallo,

ich hoffe ich schreibe diesen Beitrag ins richtige Forum, wenn nicht verzeiht mir.

Ich erkläre kurz worum es geht: Ich möchte ein Programm in Perl* schreiben dass mir einen Kreis in einzelne Segmente aufteil und mir die Schnittpunkte in einem Koordinatensystem einfügt (X- und Y-Achse).

*Perl=Programmiersprache (Practical Extraction and Reporting Language).

Grund: Es handelt sich hierbei um Teil einer Computergestützten Steuerung eines CNC-Plasmaschneiders mit dem 2D Blechteile in allen möglichen Formen ausgeschnitten werden. Es sollen Zwei verschiedene CAD-Programme für die Eingabe der Schneidbilder verwendet werden.
Eines davon ist ziemlich alt (20 Jahre ca.) und verfügt über die funktion einen Kreis in Form eines fertigen Befehls an die Maschine zu übergeben die ich leider auch nicht abschalten kann. Nun soll auf einen neueren Maschinentyp umgestellt werden. Die neue Maschine kennt aber keine Befehle um Kreise zu schneiden sondern kann nur gerade Strecken abfahren.

Ich möchte nun diesen Kreis in ein Vieleck verwandeln (sodass dieser Optisch wieder rund aussieht).

Ich habe dazu einmal eine Zeichnung angefertig: []Klick

Mir sind immer der Radius und der Winkel bekannt. Der Winkel entscheidet sich durch die grösse des Teils, je grösser desto kleiner die Unterteilung.
Ich hab hier jetzt mal 45° als Beispiel gemacht. Und der Radius könnte 200mm betragen. Start ist immer ganz oben (12Uhr).

Um das ganze umzusetzen brauche ich a(X-Achse), b(Y-Achse) und c(länge des Abschnitts). Ich habe schon unzählige Stunden über Formelbüchern und im Internet verbracht aber nichts annäherndes gefunden und wäre sehr dankbar wenn mir jemand eine Lösung bzw. Lösungsansatz gibt.

Ich hoffe ich habe alles verständlich erklärt.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

Danke schon mal vorab.

Mfg Matthias

        
Bezug
Aufteilung Kreis in Segmente: Vorschlag
Status: (Antwort) fertig Status 
Datum: 20:18 Mi 26.10.2005
Autor: Karl_Pech

Hallo Matthias,


Leider weiß ich nicht, welche Zeichenmöglichkeiten deine Maschine hat (kann sie z.B. auch schräge Linien zeichnen, oder kennt sie nur die Richtungen "links"-"rechts"-"oben"-"unten"?).


Generell läßt sich ein Ursprungskreis durch [mm] $x^2 [/mm] + [mm] y^2 [/mm] = [mm] r^2$ [/mm] in einem kartesischen [mm] $x,y\texttt{-Koordinatensystem}$ [/mm] beschreiben, denn alle Punkte, die auf der Kreislinie liegen, sind gleichweit (um [mm] $r\!$) [/mm] vom Ursprung entfernt. Durch den Pythagoras-Satz kann man dies formal (s.o.) ausdrücken.


Aus der obigen Gleichung, erhält man, wenn man nach [mm] $y\!$ [/mm] umformt, zwei Gleichungen:


$y = [mm] \sqrt{r^2-x^2}$ [/mm]


und


$y = [mm] -\sqrt{r^2-x^2}$ [/mm]


Als Funktionen interpretiert beschreibt die erste Funktion einen Halbkreis, der sich von [mm] $x_0 [/mm] = -r$ bis [mm] $x_1 [/mm] = r$ vom Iten bis zum IIten Quadranten erstreckt (erstelle eine Wertetabelle und siehe selbst).

Die zweite Funktion beschreibt analog den unteren Halbkreis.


Wie wäre es also, wenn Du ein Programm schreibst, daß folgendermaßen vorgeht:


1. Gehe [mm] $r\!$ [/mm] Einheiten in beliebige Richtung vom Startpunkt. Wenn angekommen: Markiere Startpunkt (wurde vorher abgespeichert) als Ursprung (0,0); Setze Koordinatensystem so, daß die neue Position die Koordinaten (1,0) erhält.

2. Sei [mm] $d\!$ [/mm] eine Schrittweite für die Strecke der Länge 2 Einheiten (von (1,0) bis (-1,0) ). (Also z.B. $d = [mm] 0.001\!$.) [/mm] Setze $K := [mm] 1\!$. [/mm] Setze den Stift auf die zu bearbeitende Fläche.

3. Solange [mm] $K\!$ [/mm] nicht -1:
3.1 Erniedrige [mm] $K\!$ [/mm] um [mm] $d\!$; [/mm] Setze [mm] $K\!$ [/mm] in erste Funktion [mm] $f_1$ [/mm] ein; Gehe zu neuer Position [mm] $\left(K|f_1(K)\right)$. [/mm]
3.2 Gehe zu 3.

4. Analog zu 3. aber diesmal gehst Du zurück zu 1 und benutzt die zweite Funktion als "Lieferant von Koordinaten".

5. Aktuelle Position = Position bei Schritt 1. [mm] $\Rightarrow$ [/mm] Stift hochheben; Gehe exakt den gleichen Weg zurück, den Du bei Schritt 1. gegangen bist.

6. STOP.


Ich denke außerdem, daß Du noch die Funktionen [mm] $f_1$ [/mm] und [mm] $f_2$ [/mm] geeignet approximieren müßtest, um den Fehler so gering wie möglich zu halten. Dies ist aber sehr stark von den Eigenheiten deiner Maschine abhängig.



Viele Grüße
Karl

[P.S. Benutze den Algorithmus auf eigene Gefahr! ;-)]



Bezug
                
Bezug
Aufteilung Kreis in Segmente: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:55 Do 27.10.2005
Autor: popcorn5

@Karl Pech: Danke für die rasche Antowort.

Zur Maschine: Es ist ein CNC-Plasmaschneider, sowas ähnliches wie ein Laser aber schneller, genauer und kann dickeres Material schneiden. http://www.sterlingfabrication.com/cncplasma.jpg ist eine solche maschine.

Ich kann damit sehrwohl auch diagonalen fahren. ich muss dafür nur eine relative bewegung in X und Y an die Maschine senden und schon fahre ich diagonalen. Der Befehl auf Deutsch würde lauten Fahre X 100 rechts und X 250 unten ergibt eine Diagonale mit ca 270mm länge. Sonst wäre das was ich vorhabe auch gar nicht möglich.

Dein Lösungsansatz geht zwar komplett in die andere richtig die ich bislang verfolgt habe aber offenbar kann ich damit was anfangen.

Ich werde mich die nächsten Stunden erstmal genauer damit befassen, dann kann ich mehr dazu sagen.

danke erstmal ;)

Bezug
        
Bezug
Aufteilung Kreis in Segmente: Antwort
Status: (Antwort) fertig Status 
Datum: 16:20 Do 03.11.2005
Autor: Siddharte

Ich kenne mich in Perl zwar nicht aus, aber ich schätze mal sie wird dich nicht so wesentlich von anderen Programmiersprachen unterscheiden.

Also mein Vorschlag wäre des Kreis mithilfe von Trigonomettrischen Funktionen auszudrücken.
Start soll 12 Uhr sein

dann ist
x=R*sin( [mm] \alpha) [/mm]
[mm] y=R*cos(\alpha) [/mm]

nun kannst du mit einer Zählschleife sehr kleine Winkelstücke von 0 bis 360 Grad oder wahlweise im Bogenmaß durchlaufen.
und aus 2 Ermittelten Wertepaaren kannst du dann eine winzige Teilstrecken konstruieren. Je mehr Teilstücke du nimmst, desto genauer wird dein Kreis.
Davon mal abgesehen ist der Zusammenhang schön einfach. In der Physik werden Kreisbewegungen auch meist mit den Trigonometrischen Funktionen beschrieben und es Rechnet sich damit einfach einfacher.

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Technische Informatik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.schulmatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]