Function: artist-ellipse-generate-quadrant

artist-ellipse-generate-quadrant is a byte-compiled function defined in artist.el.gz.

Signature

(artist-ellipse-generate-quadrant X-RADIUS Y-RADIUS)

Documentation

Create a point-list for first quadrant.

Points go from (X-RADIUS, 0) to (0, Y-RADIUS). Quadrant is generated around origin.

Source Code

;; Defined in /usr/src/emacs/lisp/textmodes/artist.el.gz
;;
;; Circles and ellipses
;;
(defun artist-ellipse-generate-quadrant (x-radius y-radius)
  "Create a point-list for first quadrant.
Points go from (X-RADIUS, 0) to (0, Y-RADIUS).
Quadrant is generated around origin."
  (let* ((rx2 (* x-radius x-radius))
	 (ry2 (* y-radius y-radius))
	 (2rx2 (* 2 rx2))
	 (2ry2 (* 2 ry2))
	 (p)
	 (x 0)
	 (y y-radius)
	 (px 0)
	 (py (* 2rx2 y))
	 (point-list nil))
    (artist-put-pixel point-list x y)
    (setq p (round (+ ry2 (- (* rx2 y-radius)) (* 0.25 rx2))))
    (while (< px py)
      (setq x (1+ x)
	    px (+ px 2ry2))
      (if (< p 0)
	  (setq p (+ p ry2 px))
	(setq y (- y 1)
	      py (- py 2rx2)
	      p (+ p ry2 px (- py))))
      (artist-put-pixel point-list x y))
    (setq p (round (+ (* ry2 (+ x 0.5) (+ x 0.5))
		      (* rx2 (- y 1) (- y 1))
		      (- (* rx2 ry2)))))
    (while (> y 0)
      (setq y (- y 1)
	    py (- py 2rx2))
      (if (> p 0)
	  (setq p (+ p rx2 (- py)))
	(setq x (1+ x)
	      px (+ px 2ry2)
	      p (+ p rx2 (- py) px)))
      (artist-put-pixel point-list x y))
    point-list))