Forum:Lisp
Thema:Gruppencode 42 ?
Möchten Sie sich registrieren?
Wer darf antworten? Registrierte Benutzer können Beiträge verfassen.
Hinweise zur Registrierung Sie müssen registriert sein, um Beiträge oder Antworten auf Beiträge schreiben zu können.
Ihr Benutzername:
Ihr Kennwort:   Kennwort vergessen?
Anhang:    Datei(en) anhängen  <?>   Anhänge verwalten  <?>
Grafik für den Beitrag:                                                
                                                       
Ihre Antwort:

Fachbegriff
URL
Email
Fett
Kursiv
Durchgestr.
Liste
*
Bild
Zitat
Code

*HTML ist AUS
*UBB-Code ist AN
Smilies Legende
Netiquette

10 20 40

Optionen Smilies in diesem Beitrag deaktivieren.
Signatur anfügen: die Sie bei den Voreinstellungen angegeben haben.

Wenn Sie bereits registriert sind, aber Ihr Kennwort vergessen haben, klicken Sie bitte hier.

Bitte drücken Sie nicht mehrfach auf "Antwort speichern".

*Ist HTML- und/oder UBB-Code aktiviert, dann können Sie HTML und/oder UBB Code in Ihrem Beitrag verwenden.

T H E M A     A N S E H E N
CADmium

Beiträge: 13458 / 249

.

am besten (auch mit ein paar Bildchen) ist es IMHO bei www.afralisp.net  beschrieben.

Ich schenk dir mal ne Funktion die aus den Beiden Bogenendpunkten und dem Bulgefaktor alles weitere Berechnet:
Parameter     : P1   -[List(3x Real)] - Anfangspunkt 
                P2   -[List(3x Real)] - Endpunkt des Bogensegments
                BULGE-[REAL]          - Bogenfaktor
Rückgabe      : INFO  [LIST] - R [Real]          .. Radius                    
                             - M [List(3x Real)] .. Mittelpunkt               
                             - W [REAL]          .. eingeschlossener Winkel   
                             - W1[REAL]          .. Startwinkel               
                             - W2[REAL]          .. Endwinkel                 

(defun DT:PL-BULGE-INFO(P1 BULGE P2 / W C S R M W1 W2)
  (if(and(numberp BULGE)(not(zerop BULGE))        
         (not(vl-remove-if
               '(lambda(x) (and(=(type X)'LIST)
                               (=(length X)3)
                               (not(vl-remove-if'(lambda(y)(numberp y))X))
                           )
                )
                (list P1 P2)
              )
         )
     )
    (progn
      (setq W (* 4.0 (atan (abs BULGE))))           ;_ eingeschlossenen Winkel ermitteln
      (setq C (distance P1 P2))               ;_ Abstand der Bogenendpunkte(Sehnenlänge)
      (setq S (*(/ C 2.0)(abs BULGE)))                 ;_ Bogenhöhe über der Sehne P1-P2
                                                 ;_ Bogenradius mit Pythagoras ermitteln
                                   ;_ Radius über trigonometrische Beziehungen ermitteln
      (setq R  (/ (/ C 2.0) (sin (/ W 2.0))))     
      (setq M (polar     ;_ Bogenmittelpunkt über trigonometrische Beziehungen ermitteln
                 P1
                (if (>= BULGE 0)
                  (+ (angle P1 P2) (/ (- pi W) 2.0))
                  (- (angle P1 P2) (/ (- pi W) 2.0))
                )
                R
              )
      )
      (setq W1 (angle M P1))                                              ;_ Startwinkel
      (setq W2 (angle M P2))                                                ;_ Endwinkel
      (if (< W2 W1) (setq W2(+ W2 (* Pi 2.0))))
      (list R M W W1 W2)
    )
  ) 
)

Daraus dann die Umkehrfunktion zu bauen sollte nicht das Problem sein ??!
------------------
      - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."