- (let*
- ((e_x 1+0i)
- (e_y 0+1i)
- (distance (sqrt (+ (* (car destination) (car destination))
- (* (cdr destination) (cdr destination)))))
- (size (min max-size (/ distance 3)))
- (rotate (lambda (z ang)
- (* (make-polar 1 ang)
- z)))
- (complex-to-offset (lambda (z)
- (list (real-part z) (imag-part z))))
-
- (z-dest (+ (* e_x (car destination)) (* e_y (cdr destination))))
- (e_z (/ z-dest (magnitude z-dest)))
- (triangle-points (list
- (* size -1+0.25i)
- 0
- (* size -1-0.25i)))
- (p1s (map (lambda (z)
- (+ z-dest (rotate z (angle z-dest))))
- triangle-points))
- (p2s (map (lambda (z)
- (rotate z (angle (- z-dest))))
- triangle-points))
- (null (cons 0 0))
- (arrow-1
- (ly:make-stencil
- `(polygon (quote ,(concatenate (map complex-to-offset p1s)))
- 0.0
- #t) null null))
- (arrow-2
- (ly:make-stencil
- `(polygon (quote ,(concatenate (map complex-to-offset p2s)))
- 0.0
- #t) null null ) )
- (thickness (min (/ distance 12) 0.1))
- (shorten-line (min (/ distance 3) 0.5))
- (start (complex-to-offset (/ (* e_z shorten-line) 2)))
- (end (complex-to-offset (- z-dest (/ (* e_z shorten-line) 2))))
-
- (line (ly:make-stencil
- `(draw-line ,thickness
- ,(car start) ,(cadr start)
- ,(car end) ,(cadr end)
- )
- (cons (min 0 (car destination))
- (min 0 (cdr destination)))
- (cons (max 0 (car destination))
- (max 0 (cdr destination)))))
-
- (result
- (ly:stencil-add
+ (let*
+ ((e_x 1+0i)
+ (e_y 0+1i)
+ (distance (sqrt (+ (* (car destination) (car destination))
+ (* (cdr destination) (cdr destination)))))
+ (size (min max-size (/ distance 3)))
+ (rotate (lambda (z ang)
+ (* (make-polar 1 ang)
+ z)))
+ (complex-to-offset (lambda (z)
+ (list (real-part z) (imag-part z))))
+
+ (z-dest (+ (* e_x (car destination)) (* e_y (cdr destination))))
+ (e_z (/ z-dest (magnitude z-dest)))
+ (triangle-points (list
+ (* size -1+0.25i)
+ 0
+ (* size -1-0.25i)))
+ (p1s (map (lambda (z)
+ (+ z-dest (rotate z (angle z-dest))))
+ triangle-points))
+ (p2s (map (lambda (z)
+ (rotate z (angle (- z-dest))))
+ triangle-points))
+ (null (cons 0 0))
+ (arrow-1
+ (ly:make-stencil
+ `(polygon (quote ,(append-map complex-to-offset p1s))
+ 0.0
+ #t) null null))
+ (arrow-2
+ (ly:make-stencil
+ `(polygon (quote ,(append-map complex-to-offset p2s))
+ 0.0
+ #t) null null ) )
+ (thickness (min (/ distance 12) 0.1))
+ (shorten-line (min (/ distance 3) 0.5))
+ (start (complex-to-offset (/ (* e_z shorten-line) 2)))
+ (end (complex-to-offset (- z-dest (/ (* e_z shorten-line) 2))))
+
+ (line (ly:make-stencil
+ `(draw-line ,thickness
+ ,(car start) ,(cadr start)
+ ,(car end) ,(cadr end)
+ )
+ (cons (min 0 (car destination))
+ (min 0 (cdr destination)))
+ (cons (max 0 (car destination))
+ (max 0 (cdr destination)))))
+
+ (result
+ (ly:stencil-add