abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

Wir schätzen Ihren Input!
Bitte nehmen Sie an der Umfrage zu Archicad 28 Startbildschirm und Lerninhalte/Schnell-Tutorials teil

Programmierung
Alles über Programmierung in GDL und Python

Liege in die richtige Position drehen

Anonymous
Nicht anwendbar
Hallo Forum,

ich hab mir eine Liege programmiert, die im Prinzip ganz einfach aus drei Segmenten aufgebaut ist. Beim Objekt kann man die Längen der drei Segmente eingeben und den Winkel, mit denen sie zueinander stehen. Das Problem ist nun, die Liege so zu drehen, dass der zweite Winkel ("winkeloben") genau am Boden zu liegen kommt.

Das klingt jetzt sehr abstrakt, aber ich hoffe, es mit den beigefügten Zeichnungen erklären zu können. Ich dachte eigentlich, dass ich geometrisch die Sache soweit durchschaut und den richtigen Lösungsansatz gefunden hätte, aber leider dreht die Liege sich nie in die richtige Richtung (Ausnahme: "segmentunten" und "segmentmitte" sind gleich lang).

Ich hoffe, mein Skript ist soweit lesbar und jemand findet den Fehler.

Vielen Dank schon mal!


By seppi1976 at 2012-07-10


By seppi1976 at 2012-07-10

! Liegestuhl

! breite = 0.8
! rundung = 0.2
! rad = 0.02
! segmentunten = 0.5
! segmentmitte = 1
! segmentoben = 1.25
! winkelanfang = 60
! winkelunten = 80
! winkelmitte = 70


GOSUB 200 ! Berechnung, wie die Liege gedreht werden muss


ROTY winkelanfang ! Liege wird in die richtige Lage gebracht
GOSUB 100 ! Liege schematisch zeichnen


END


100: ! zeichnen einer Liegenhälfte

BLOCK 0.05, breite, segmentunten
ADDZ segmentunten
ROTY winkelunten
BLOCK 0.05, breite, segmentmitte
ADDZ segmentmitte
ROTY (winkelmitte * (-1))
BLOCK 0.05, breite, segmentoben

DEL 4


RETURN ! Ende Subroutine zum zeichnen der Liegenhälfte






200: ! Berchnung, wie die Liege gedreht werden muss
! BIS JETZT FUNKTIONIERT ES NUR, WENN
! DIE UNTEREN BEIDEN SEGMENTE GLEICH LANG SIND

IF winkelunten = 90 THEN ! muss noch genauer definiert werden
winkelanfang = -45
RETURN
ENDIF

! Die folgende Routine funktioniert nur für spitze Winkel.
!
! beta (=winkelunten) sei der Winkel zwischen segmentunten und segmentmitte
! gamma ist der Restwinkel zu beta. gamma bildet mit delta und einem rechten
! Winkel ein rechtwinkliges Dreieck mit der Hypothenuse segmentmitte

IF winkelunten > 90 THEN

gamma = 180 - winkelunten ! Restwinkel vom ersten Knick
delta = 90 - gamma ! zweiter Winkel des neuen
! rechtwinkligen Dreiecks
neueseitelang = sin (gamma) * segmentmitte ! Berechnung neue Dreiecksseiten
neueseitekurz = sin (delta) * segmentmitte
tanvomneuenwinkel = neueseitelang / (neueseitekurz + segmentunten)

! Tadaaa, jetzt kommt das Ergebnis

winkelanfang = ATN (tanvomneuenwinkel) - 90


RETURN

ENDIF

! winkelunten ist offenbar kleiner als 90°

delta = 90 - winkelunten
neueseitekurz = sin (delta) * segmentmitte
neueseitelang = cos (delta) * segmentmitte
tanvomneuenwinkel = neueseitelang / (segmentunten - neueseitekurz)
winkelanfang = ATN (tanvomneuenwinkel)

RETURN
4 ANTWORTEN 4
Anonymous
Nicht anwendbar
Ohne deine Ausführung genauer gelesen zu haben. Für Dreiecksbestimmungen gibt es Grundsätze: z.B. 2 Winkel+1 Länge oder 1 Winkel+2 Längen. Gibst du mehr Konstanten, ist das System überbestimmt und dann evt. nicht mehr eindeutig.

IMHO bestimmen 3 Seitenlängen bereits die Innenwinkel. Die Angabe eines zusätzlichen Winkels ist damit nicht erlaubt.

Andersrum. Gibst du 2 Längen und 1 Winkel, ist die Angabe der dritten Länge nicht erlaubt, da diese eindeutig aus den ersten 3 Angaben bestimmt ist.
Anonymous
Nicht anwendbar
Das Objekt ist nicht überbestimmt. Abstrakt beschrieben geht es mir um folgendes:

Ich habe ein Dreieck (ein beliebiges, nicht rechtwinkliges). Von diesem Dreieck kenne ich zwei Seitenlängen und den dazwischenliegenden Winkel. Wie kann ich da am einfachsten die beiden anderen Winkel ausrechnen?

Es sind die Seiten, die in der Zeichnung mit "segmentmitte" und "segmentunten" gekennzeichnet sind, sowie der Winkel beta="winkelunten" gegeben. Ich möchte den Winkel "winkelanfang" (der ganz rechts) berechnen.
Meine Herangehensweise ist so, dass ich eine Seite ("segmentunten") verlängerbzw. verkürze (je nachdem, ob beta spitz oder stumpf ist), um ein rechtwinkliges Dreieck zu erhalten. Aber irgendwie funktioniert das nicht so, wie's soll.
Anonymous
Nicht anwendbar
Beim Objekt kann man die Längen der drei Segmente eingeben und den Winkel

klingt anders als
Ich habe ein Dreieck (ein beliebiges, nicht rechtwinkliges). Von diesem Dreieck kenne ich zwei Seitenlängen und den dazwischenliegenden Winkel.


Siehe auch Dreieck

Es handelt sich bei dir wohl um den SWS-Fall. Vielleicht hilft dir das bei der Suche. Habe leider keine Lösung aus der Hüfte.
Anonymous
Nicht anwendbar
Danke für den Tipp. Da glaube ich, finde ich die Lösung.