求助-程式中定點無法定位到第四象限
本帖最后由 作者 于 2010-11-25 15:51:16 编辑http://img830.imageshack.us/img830/4601/99001200.jpg
Uploaded with ImageShack.us
這一段程式在繪製"方形序號球",程式運作起來都正常,唯獨在當角度為第四象限時
數字的定位會出錯,會定位到第三象限,導致數字在方框外。
小弟檢查了好久,仍無法找出錯誤在哪
還請各位指點迷津
(defun C:224()
;;使用者輸入
(setvar "cmdecho" 0)
(setq num(getint"\n輸入起始值<1> "))
(if(null num) (setq num 1))
(setq d1(getdist"\n輸入正方形邊長<10>"))
(if(null d1) (setq d1 10))
;;while
(while num
(setq ps(getpoint "\n輸入起點"))
(setq pe(getpoint "\n輸入終點" ps))
(setq dd(distance ps pe))
(setq ang(angle ps pe))
(setq pol1 pe)
;;定義畫矩形用的點
(cond ((and(<= ang (* pi 0.5)) (> ang 0)) (setq pol2(polar pe 0 d1)))
((and(<= ang pi) (> ang (* pi 0.5))) (setq pol2(polar pe (* 0.5 pi) d1)))
((and(<= ang (* pi 1.5)) (> ang pi)) (setq pol2(polar pe pi d1)))
((and(<= ang (* pi 2)) (> ang (* pi 1.5))) (setq pol2(polar pe (* pi 1.5) d1)))
)
;;定義"填數字"角度
(cond ((and(<= ang (* pi 0.5)) (> ang 0)) (setq ang1 (* pi 0.25)))
((and(<= ang pi) (> ang (* pi 0.5))) (setq ang1 (* pi 0.75)))
((and(<= ang (* pi 1.5)) (> ang pi)) (setq ang1 (* pi 1.25)))
((and(<= ang 0 ) (> ang (* pi 1.5))) (setq ang1 (* pi 1.75)))
)
(command"donut" 0 (/ d1 10) ps "");;畫小圓點
(command"POLYGON" "4" "e" pol1 pol2 );;矩形
(command"line" ps pe "");;直線
(command "text" "m" (polar pe ang1 (* d1 0.7)) (* d1 0.4) 0 (itoa num));;填數字
(setq num(+ num 1))
)
;;while
(prin1)
)
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana"><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">((and (<= ang 0) (> ang (* pi 1.5)))</font></font></p>
<p>==></p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">((and (<= ang (* pi 2)) (> ang (* pi 1.5)))</font></p>
<p> </p>
<p>==================</p>
<p> </p>
<p>(* Pi x) ==> 建議在迴圈外定義,免致重覆運算...</p> <p>謝謝你的建議。</p>
<p> </p>
<p>我有個疑問</p>
<p><font color="#800080">ang 0</font> <font color="#ff6600">ang (* pi 2)</font></p>
<p> </p>
<p><font color="#000000">這兩個意思不是相同的嗎?怎麼會產生不同的結果呢??</font></p>
<p><font color="#000000"></font> </p> <p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">(* Pi 2)</font> --> <font style="BACKGROUND-COLOR: #ffffff" face="Verdana">6.2831853</font>+</p>
<p> </p>
<p> <font style="BACKGROUND-COLOR: #ffffff" face="Verdana"><font color="#ff6600">(* pi 2)</font> < ang</font> < (* Pi 1.5)</p>
<p> </p>
<p><font color="#800080">0 < ang < (* Pi 1.5) 則出錯</font></p> <p>恩,這樣我懂了</p>
<p>雖然角度是一樣的,但是轉換成弳度一個是0,一是6.28。</p>
<p>謝謝你的解釋</p>
页:
[1]