www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
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.vorhilfe.de