lead009 发表于 2010-11-25 15:22:00

求助-程式中定點無法定位到第四象限

本帖最后由 作者 于 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)
)

Andyhon 发表于 2010-11-25 15:56:00

<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana"><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">((and (&lt;= ang 0) (&gt; ang (* pi 1.5)))</font></font></p>
<p>==&gt;</p>
<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">((and (&lt;= ang (* pi 2)) (&gt; ang (* pi 1.5)))</font></p>
<p>&nbsp;</p>
<p>==================</p>
<p>&nbsp;</p>
<p>(* Pi x) ==&gt; 建議在迴圈外定義,免致重覆運算...</p>

lead009 发表于 2010-11-25 16:23:00

<p>謝謝你的建議。</p>
<p>&nbsp;</p>
<p>我有個疑問</p>
<p><font color="#800080">ang 0</font>&nbsp;&nbsp;&nbsp; <font color="#ff6600">ang (* pi 2)</font></p>
<p>&nbsp;</p>
<p><font color="#000000">這兩個意思不是相同的嗎?怎麼會產生不同的結果呢??</font></p>
<p><font color="#000000"></font>&nbsp;</p>

Andyhon 发表于 2010-11-25 16:41:00

<p><font style="BACKGROUND-COLOR: #ffffff" face="Verdana">(* Pi 2)</font>&nbsp;--&gt;&nbsp; <font style="BACKGROUND-COLOR: #ffffff" face="Verdana">6.2831853</font>+</p>
<p>&nbsp;</p>
<p>&nbsp;<font style="BACKGROUND-COLOR: #ffffff" face="Verdana"><font color="#ff6600">(* pi 2)</font> &lt; ang</font> &lt; (* Pi 1.5)</p>
<p>&nbsp;</p>
<p><font color="#800080">0 &lt; ang &lt; (* Pi 1.5) 則出錯</font></p>

lead009 发表于 2010-11-25 20:19:00

<p>恩,這樣我懂了</p>
<p>雖然角度是一樣的,但是轉換成弳度一個是0,一是6.28。</p>
<p>謝謝你的解釋</p>
页: [1]
查看完整版本: 求助-程式中定點無法定位到第四象限