|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 woaishuijia 于 2012-3-22 06:54 编辑
2 _1 R+ K2 T/ V$ w8 I# b. o+ G8 i, F
+ D% A. h5 m( z1 a( B我想绘制一个沿着圆周移动的多边形,自己写了个lsp,但是运行就是没有出现效果.5 `3 T8 c' b' g( b5 L# l; V( q
我写的lsp代码如下,运行结果如图所示,请问哪里出问题了?5 z5 P% p$ T8 @ E, N
- ;绘制沿圆周移动的多边形
3 r& Q9 }* Z7 ?- M9 t) T6 t, \ - ;basepoint 基准圆心6 R0 B7 Y; r W3 ~" k, D
- ;baseradius 基准圆半径
! J5 u' R! Y# U. R& o, p) t9 ] - ;cenpoint 多边形内切圆圆心# I' _; N: Y& l4 Q: ~0 D
- ;pointx 多边形内切圆圆心x坐标
: Q, n ~+ |# Q* V, C9 u5 ^/ t: J - ;pointy 多边形内切圆圆心y坐标
" o8 Q L3 S: b2 ^6 `* E& ] - ;plgnum 多边形边数: P$ ~+ L3 L3 x2 ?* z4 e
- ;plgradius 多边形内切圆半径+ w3 \/ u+ i6 ?- e, L! M1 P
- (defun c:movetocircle (/ basepoint baseradius cenpoint pointx pointy plgnum plgradius)
2 o3 d5 j8 w, f% o- m Z4 Z; f4 K - (setq plgnum (getint "请输入绘制的正多边形边数:"))
+ b4 Y' e- h7 c [$ J; ` - (setq plgradius (getint "请输入绘制的正多边形内切圆半径:"))- |4 r: @& r- P0 b
- (setq basepoint (list 0 0)); X' T2 z5 A3 q5 D$ A
- (setq baseradius 4)
7 b" z4 ^! V- Y - (command "circle" basepoint baseradius). D. [7 y: B) d1 K7 c
- (setq pointx -4.0 step 0.2)
' F% v' E8 y( R) \ - (while (< pointx 4.0)
" U# X) U% t4 a7 D - (setq pointy (sqrt (- (* baseradius baseradius) (* pointx pointx))))
( u# ?, N+ W: X- [' \% L* g( w - (setq cenpoint (list pointx pointy))7 ]! |5 V8 X5 P7 o
- (command "polygon" plgnum cenpoint "i" plgradius). H' C W0 |5 x. [4 J; T: f% Z
- (setq pointx (+ pointx step)) y2 S7 M$ I& k& }6 T
- )9 T4 U/ X2 }) @5 [+ U* l: O
- (prompt "draw polygon over!")
* _9 }* e1 @% }) e - )& d' L, S! D7 M# N
复制代码 & k: k& L9 L( Y. D. R& R' ^
运行输入多边形边数:5
+ J+ h7 Z$ G( ]1 b( L运行输入多边形内切圆半径:29 U. N3 s5 e+ l. ], v
9 P* h, h) o* D, u) L效果图如下:. t! S3 S( s5 U( A e% ~. s# m
( H) D* X6 L0 }1 s7 |$ d: ] w
/ b) Y. Y: A9 g6 D6 @$ u我希望的效果是沿着外面的圆周绘出N个五边形,这个圆周就是这N个五边形内切圆的圆心的轨迹。请各位达人予以指点。 |
|