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."
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP