|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 woaishuijia 于 2012-3-22 06:54 编辑
8 M& L6 B& b3 Y" s) |( N% _% h) l, l8 \" Q; W1 s% O
我想绘制一个沿着圆周移动的多边形,自己写了个lsp,但是运行就是没有出现效果.
+ A; x, i. z& E& L; ~我写的lsp代码如下,运行结果如图所示,请问哪里出问题了?% B$ N9 t" y; Z: @+ S4 ^) [0 ]
- ;绘制沿圆周移动的多边形; O& f: @" X7 k* g: f: ^, Y
- ;basepoint 基准圆心
5 @. r' i2 }2 t" U2 m - ;baseradius 基准圆半径4 ?0 T" b: F- u& f4 @6 s2 o9 `
- ;cenpoint 多边形内切圆圆心
, x; C6 T! r- `6 I - ;pointx 多边形内切圆圆心x坐标
: }" U9 |6 |8 j4 q6 }, E! T; m, h - ;pointy 多边形内切圆圆心y坐标
) x- k7 c% q1 K/ R& I, l - ;plgnum 多边形边数
: a; l3 E5 C I, a( q0 D8 {# N0 i - ;plgradius 多边形内切圆半径
2 n: c& d [) p1 `0 Y R6 x3 l - (defun c:movetocircle (/ basepoint baseradius cenpoint pointx pointy plgnum plgradius). }: d" N3 g+ [4 d* N; s1 S
- (setq plgnum (getint "请输入绘制的正多边形边数:"))
6 ~9 ]% O+ h' V0 p - (setq plgradius (getint "请输入绘制的正多边形内切圆半径:"))* Q# H1 D% M+ H+ y# g
- (setq basepoint (list 0 0))9 H. y5 Q, @" W
- (setq baseradius 4)4 }% ^- a# \% z$ |. a
- (command "circle" basepoint baseradius)
5 C- C O2 @( x - (setq pointx -4.0 step 0.2)
0 o" q6 ?% j% H! V: L2 X - (while (< pointx 4.0)2 s/ v Z, x2 [# ~0 X8 c/ s
- (setq pointy (sqrt (- (* baseradius baseradius) (* pointx pointx))))0 N% i: m x, G8 I) _$ a
- (setq cenpoint (list pointx pointy))
0 L2 H/ @7 a5 k, s, _. H, w$ t - (command "polygon" plgnum cenpoint "i" plgradius)# e4 y0 T3 O' M2 m/ O. z
- (setq pointx (+ pointx step))
1 `. \: l S2 a2 s+ X! m# l - )" C4 |6 v8 k% s1 |$ a
- (prompt "draw polygon over!")3 i" h7 Q& T# r
- )
& Z$ J) J9 n' G* b: l
复制代码
y2 K% G; h7 |- t9 T. Z) Q运行输入多边形边数:53 M G8 L9 W2 d
运行输入多边形内切圆半径:2$ R" a# a% v7 ~* z
( {- Z* |9 o. d+ j7 K* Q. V' \
效果图如下:- ?7 e/ z: g K2 w- `
- }! ~' {3 \* d, F$ r! }
+ s8 k4 r; S" _+ u; {我希望的效果是沿着外面的圆周绘出N个五边形,这个圆周就是这N个五边形内切圆的圆心的轨迹。请各位达人予以指点。 |
|