; x_l, y_l = liste mit x-y koordinaten ; anzahl = anzahl der punkte ; breite = versatzabstand ; ; (setq i 0) ; ; initialisierung nur fuer ersten punkt p1 nächster punkt, winkel p1 - p2 ; (setq p1 (list (nth 1 x_l) (nth 1 y_l))) (setq p2 (list (nth i x_l) (nth i y_l))) (setq alpha1 (angle p1 p2)) (setq beta1 (- alpha1 (/ pi 2))) (setq pv2 (polar p2 beta1 breite)) (setq p3 p1) (setq alpha2 alpha1) (setq beta2 beta1) (setq i (1+ i)) ; ; jetzt geht die schleife los, p2 aktueller Punkt, p1 vorhergehender, p3 nächster ; (setq i (1+ i)) (while (< i (1+ anzahl)) (setq p1 p2) (setq p2 p3) (setq pv1 pv2) (setq alpha1 alpha2) (setq beta1 beta2) (setq p3 (list (nth i x_l) (nth i y_l))) (setq alpha2 (angle p3 p2)) (setq beta2 (- alpha2 (/ pi 2))) (setq gamma (- (+ alpha1 (/ (- alpha2 alpha1) 2)) (/ pi 2.))) ; Winkelhalbierende (setq zz_breite (/ breite (cos (- gamma beta1)))) ; abstand in Ri. Winkelhalb. (setq pv2 (polar p2 gamma zz_breite)) ; neuer versetzter Punkt (setq i (1+ i)) ; )