明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1387|回复: 4

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

[复制链接]
发表于 2010-11-25 15:22:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-11-25 15:51:16 编辑


Uploaded with ImageShack.us


這一段程式在繪製"方形序號球",程式運作起來都正常,唯獨在當角度為第四象限時
數字的定位會出錯,會定位到第三象限,導致數字在方框外。
小弟檢查了好久,仍無法找出錯誤在哪
還請各位指點迷津
  1. (defun C:224()
  2.   ;;使用者輸入
  3.   (setvar "cmdecho" 0)
  4.   (setq num(getint"\n輸入起始值<1> "))
  5.   (if(null num) (setq num 1))
  6.   (setq d1(getdist"\n輸入正方形邊長<10>"))
  7.   (if(null d1) (setq d1 10))
  8.   ;;while
  9.   (while num
  10.     (setq ps(getpoint "\n輸入起點"))
  11.     (setq pe(getpoint "\n輸入終點" ps))
  12.     (setq dd(distance ps pe))
  13.     (setq ang(angle ps pe))
  14.     (setq pol1 pe)
  15.     ;;定義畫矩形用的點
  16.     (cond ((and(<= ang (* pi 0.5)) (> ang 0)) (setq pol2(polar pe 0 d1)))
  17.    ((and(<= ang pi) (> ang (* pi 0.5))) (setq pol2(polar pe (* 0.5 pi) d1)))
  18.    ((and(<= ang (* pi 1.5)) (> ang pi)) (setq pol2(polar pe pi d1)))
  19.    ((and(<= ang (* pi 2)) (> ang (* pi 1.5))) (setq pol2(polar pe (* pi 1.5) d1)))   
  20.     )
  21.     ;;定義"填數字"角度
  22.     (cond ((and(<= ang (* pi 0.5)) (> ang 0)) (setq ang1 (* pi 0.25)))
  23.    ((and(<= ang pi) (> ang (* pi 0.5))) (setq ang1 (* pi 0.75)))
  24.    ((and(<= ang (* pi 1.5)) (> ang pi)) (setq ang1 (* pi 1.25)))
  25.    ((and(<= ang 0 ) (> ang (* pi 1.5))) (setq ang1 (* pi 1.75)))   
  26.     )
  27.    
  28.     (command"donut" 0 (/ d1 10) ps "");;畫小圓點
  29.     (command"POLYGON" "4" "e" pol1 pol2 );;矩形
  30.     (command"line" ps pe "");;直線
  31.     (command "text" "m" (polar pe ang1 (* d1 0.7)) (* d1 0.4) 0 (itoa num));;填數字
  32.     (setq num(+ num 1))
  33.   )
  34.   ;;while
  35. (prin1)
  36. )
发表于 2010-11-25 15:56:00 | 显示全部楼层

((and (<= ang 0) (> ang (* pi 1.5)))

==>

((and (<= ang (* pi 2)) (> ang (* pi 1.5)))

 

==================

 

(* Pi x) ==> 建議在迴圈外定義,免致重覆運算...

 楼主| 发表于 2010-11-25 16:23:00 | 显示全部楼层

謝謝你的建議。

 

我有個疑問

ang 0    ang (* pi 2)

 

這兩個意思不是相同的嗎?怎麼會產生不同的結果呢??

 

发表于 2010-11-25 16:41:00 | 显示全部楼层

(* Pi 2) -->  6.2831853+

 

 (* pi 2) < ang < (* Pi 1.5)

 

0 < ang < (* Pi 1.5) 則出錯

 楼主| 发表于 2010-11-25 20:19:00 | 显示全部楼层

恩,這樣我懂了

雖然角度是一樣的,但是轉換成弳度一個是0,一是6.28。

謝謝你的解釋

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-2 16:29 , Processed in 0.165690 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表