下面這段程式,是我在練習課本中的範例。
程式的實際繪圖沒有什麼問題,但是過程中有一些小錯誤和我的副程式的疑問
1.程式中有一個變數(hh=圓的直徑),我用pirnc把它顯示出來,但不知道什麼原因,程式算出來的數直,都不等於圖面中原的直徑
2.我在這程式中有使用一小段副程式來計算長度,這段副程式是之前在練習別的題目寫的。這段副程式中有計算兩個數值,一個是"直線中點座標",另一個是直線的長度。
我的疑問是,當我使用這一段副程式的時候,我要怎麼控制回傳值是"中點座標"還是"直線長度"。雖這次的例題剛好傳回了長度,但是如果我需要的是中點座標呢? 那這段程式就錯誤了。
以上這兩個問題,還請各位為我說明一下,小弟感激不盡!!
[code]
[/c (defun C:202() (setq cenpt(getpoint"選擇中心點")) (setq hh(getdist cenpt"選擇高度")) (setq sc(getreal "指定高、寬比例。寬=1")) ;=======定義點======; (setq ww (* hh sc)) (setq pm(polar cenpt 0 (* ww 0.5))) (setq p1(polar pm (* pi 0.5) (* hh 0.5))) (setq p2(polar p1 pi ww)) (setq p3(polar p2 (* pi 1.5) hh)) (setq p4(polar p3 0 ww)) ;;==;; (setq mid1(polar p1 pi (* ww 0.5))) (setq mid2(polar p4 pi (* ww 0.5))) (setq d1(mid p1 p3)) (setq d2(/ (- d1 hh) 2)) ;;======;; (setq aa(polar mid1 (* pi 0.5) d2)) (setq bb(polar mid2 (* pi 1.5) d2)) (command "rectang" p1 p3) (command "circle" cenpt p1) (command "line" p1 p3 "") (command "line" p2 p4 "") (command "circle" "2P" mid1 aa) (command "circle" "2P" mid2 bb) (prin1) )
(defun mid(a b) (setq p1x(car p1)) (setq p1y(cadr p1)) (setq p2x(car p2)) (setq p2y(cadr p2)) (setq px(/ (+ p1x p2x) 2)) (setq py(/ (+ p1y p2y) 2)) (setq mpt(list px py));中點 (setq linelen (expt (+ (expt (- p1x p2x) 2) (expt (- p1y p2y) 2))0.5));長度 (princ"\n兩點間的長度= ") (princ linelen) ode] |