Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
;; (find-angg "elisp/rpn.el")
;; (find-angg "elisp/geometria.el")
;; (find-angg "elisp/graficos.el")
;; (load "./rpn.el")
;; (load "./geometria.el")
;; (load "./graficos.el")
;; (start-process "plot" nil "wish" "./plot.tcl")

(defun op1->1 (f)
  (poe (apply f (tira) args-extras)))
(defun op2->1 (f)
  (let ((arg2_ (tira)) (arg1_ (tira)))
    (poe (apply f arg1_ arg2_ args-extras))))
(defun op3->1 (f)
  (let ((arg3_ (tira)) (arg2_ (tira)) (arg1_ (tira)))
    (poe (apply f arg1_ arg2_ arg3_ args-extras))))
(defun op4->1 (f)
  (let ((arg4_ (tira)) (arg3_ (tira)) (arg2_ (tira)) (arg1_ (tira)))
    (poe (apply f arg1_ arg2_ arg3_ arg4_ args-extras))))

(defun op1->0 (f)
  (apply f (tira) args-extras))
(defun op2->0 (f)
  (let ((arg2_ (tira)) (arg1_ (tira)))
    (apply f arg1_ arg2_ args-extras)))
(defun op3->0 (f)
  (let ((arg3_ (tira)) (arg2_ (tira)) (arg1_ (tira)))
    (apply f arg1_ arg2_ arg3_ args-extras)))
(defun op4->0 (f)
  (let ((arg4_ (tira)) (arg3_ (tira)) (arg2_ (tira)) (arg1_ (tira)))
    (apply f arg1_ arg2_ arg3_ arg4_ args-extras)))

(defun p_plot (p) (nn_plotponto (@x p) (@y p)))
(defun pp_plot   (p1 p2) (nnnn_plotsegmento (@x p1) (@y p1) (@x p2) (@y p2)))
(defun pp_plot-> (p1 p2) (nnnn_plotseta     (@x p1) (@y p1) (@x p2) (@y p2)))
(defun s_plot   (s) (nnnn_plotsegmento (@x1 s) (@y1 s) (@x2 s) (@y2 s)))
(defun s_plot-> (s) (nnnn_plotseta     (@x1 s) (@y1 s) (@x2 s) (@y2 s)))

(setq operacoes
      '((+ . (poe (+ (tira) (tira))))
	(* . (poe (* (tira) (tira))))
	(- . (let ((arg2 (tira)) (arg1 (tira))) (poe (- arg1 arg2))))
	(/ . (let ((arg2 (tira)) (arg1 (tira))) (poe (/ arg1 arg2))))
	(sqrt . (poe (sqrt (tira))))
	(-> . (set (car args-extras) (tira)))
	(drop . (tira))
	(dump . (plotstr "# %S\n" (tira)))
	(mostra . (plotstr "# %S\n" (eval (car args-extras))))
	(nn_ponto      . (op2->1 'nn_ponto))
	(nn_vetor      . (op2->1 'nn_vetor))
	(vv_+          . (op2->1 'vv_+))
	(pv_+          . (op2->1 'pv_+))
	(vn_*          . (op2->1 'vn_*))
	(pp_segmento   . (op2->1 'pp_segmento))
	(s_vetor       . (op1->1 's_vetor))
	(pp_->         . (op2->1 'pp_->))
	(v_comprimento . (op1->1 'v_comprimento))
	(pp_distancia  . (op2->1 'pp_distancia))
	(v_versor      . (op1->1 'v_versor))
	(s_reta        . (op1->1 's_reta))
	(pp_reta       . (op2->1 'pp_reta))
	(rr_cruzamento . (op2->1 'rr_cruzamento))
	(p_plot        . (op1->0 'p_plot))
	(pp_plot       . (op2->0 'pp_plot))
	(pp_plot->     . (op2->0 'pp_plot->))
	(s_plot        . (op1->0 's_plot))
	(s_plot->      . (op1->0 's_plot->))
	(nnnn_eixos    . (op4->0 'eixos))
	;;
	(ppp_mediana   . (op3->1 'ppp_mediana))
	(ppp_bissetriz . (op3->1 'ppp_bissetriz))
	(ppp_plot-triangulo . (op3->0 'ppp_plot-triangulo))
	(ppp_cruzamentomedianas . (op3->1 'ppp_cruzamentomedianas))
	))

(defun ppp_bissetriz (A B C &optional nomesegmento plot)
  (let (AA1> AA2> AA3> A1 A2 A3)
    (calcula '(A B pp_-> (v_versor AA1>) drop
               A C pp_-> (v_versor AA2>) drop
               AA1> AA2> (vv_+ AA3>) drop
	       A AA1> (pv_+ A1) drop
	       A AA2> (pv_+ A2) drop
	       A AA3> (pv_+ A3) drop
	       ))
    (if plot
	(calcula '(A1 p_plot
		   A2 p_plot
		   A3 p_plot
		   A A1 pp_plot->
		   A A2 pp_plot->
		   A1 A3 pp_plot->
		   A2 A3 pp_plot->
		   A A3 pp_plot->
		   )))
    (pp_segmento A A3 nomesegmento)))

(defun ppp_mediana (A B C &optional nomesegmento plot123 plot4)
  (let (A4)
    (calcula `(A B C (ppp_bissetriz nil ,plot123) s_reta
	       B C pp_segmento s_reta
               (rr_cruzamento A4) drop
	       ))
    (if plot4 (calcula '(A4 p_plot
			 A A4 pp_plot
			 )))
    (pp_segmento A A4 nomesegmento)))

(defun ppp_cruzamentomedianas (A B C &optional nomecruzamento
		     plotA123 plotB123 plotC123
		     plot4)
  (let (AA4 BB4 CC4)
    (calcula `(A B C (ppp_mediana AA4 ,plotA123 ,plot4) drop
               B A C (ppp_mediana BB4 ,plotB123 ,plot4) drop
               C A B (ppp_mediana CC4 ,plotC123 ,plot4) drop
	       ))
    (rr_cruzamento (s_reta AA4) (s_reta BB4) nomecruzamento)))

(defun ppp_plot-triangulo (A B C)
  (calcula '(A p_plot B p_plot C p_plot
	     A B pp_plot  A C pp_plot  B C pp_plot)))

;; Teste (2004jul04)
;; (find-fline "/tmp/1.tcl")

(progn
  (setq pilha ())
  (setq tclstring "")
  (setq escala 20)
  (calcula '(-1.5 -1.5 4.5 3.5 nnnn_eixos
	     0 3 (nn_ponto D) drop
	     4 3 (nn_ponto E) drop
	     4 0 (nn_ponto F) drop
             D E F ppp_plot-triangulo
	     ;; D E F (ppp_bissetriz plot)
	        D E F (ppp_mediana DD4 plot plot)
	     ;; E D F (ppp_mediana EE4 nil plot)
	     (mostra pilha)
	     ;; D E F (ppp_cruzamentomedianas nil nil nil nil plot) p_plot
	     ))
  (write-region tclstring nil "/tmp/1.tcl")
  pilha)

(progn
  (setq pilha ())
  (setq tclstring "")
  (setq escala 20)
  (calcula '(;; -1 -1 6 6 nnnn_eixos
	     0 1 (nn_ponto A) p_plot drop
	     4 0 (nn_ponto B) p_plot drop
	     5 4 (nn_ponto C) p_plot drop
	     1 5 (nn_ponto D) p_plot drop
             A B pp_plot B C pp_plot C D pp_plot D A pp_plot
	     ))
  (plotstr ".c create text %s -anchor n -text \"(0,1)\"\n" (tkxy (@x A) (@y A)))
  (plotstr ".c create text %s -anchor n -text \"(4,0)\"\n" (tkxy (@x B) (@y B)))
  (write-region tclstring nil "/tmp/1.tcl")
  pilha)

;; (find-fline "/tmp/1.tcl")
;; (eev "cp /tmp/1.eps /home/edrx/eev-0.94/bissetriz.eps")
;; (eev "cd /tmp/; gv 1.eps")

;; (eqreduzida (pp_reta '(ponto 0 0) '(ponto 2 3)))