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")
;; (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)))
```