明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1923|回复: 4

[求助]如何用这个复杂函数画图像???

[复制链接]
发表于 2004-8-13 01:45:00 | 显示全部楼层 |阅读模式
要求用此公式绘制一条曲线。
其中:
C=1/R 当输入一下数值(参数)时,能自动绘图。
R=
K=
A2=
A4=
A6=
A8=
A10=
例如:
R=17.26
K=-1
A2=0.00092
A4=0.00001238
A6=0
A8=0
A10=0

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-8-13 09:41:00 | 显示全部楼层
用eval这个函数应该可以实现。
发表于 2004-8-13 10:12:00 | 显示全部楼层
程序如下: (DEFUN C:CURVE ()
(SETQ R (GETREAL "\nR = ")
K (+ (GETREAL "\nK = ") 1)
A2 (GETREAL "\nA2 = ")
A4 (GETREAL "\nA4 = ")
A6 (GETREAL "\nA6 = ")
A8 (GETREAL "\nA8 = ")
A10 (GETREAL "\nA10 = ")
C (/ 1 R)
STEP (GETREAL "\nCurve Precision is 曲线精度(步长) : ")
N (GETINT "\nPoint of Curve 曲线点数 :"))
(IF (> STEP 0) (PROGN
(SETQ Y 0)
(COMMAND "PLINE" "0,0")
(REPEAT N
(SETQ Y (+ Y STEP))
(SETQ Y2 (* Y Y) Y4 (* Y2 Y2) Y6 (* Y2 Y2 Y2) Y8 (* Y4 Y4) Y10 (* Y4 Y4 Y2))
(SETQ X (/ (* C Y2) (+ (SQRT (- 1 (* K C C Y2))) 1)))
(IF (/= A2 0) (SETQ X (+ X (* A2 Y2))))
(IF (/= A4 0) (SETQ X (+ X (* A4 Y4))))
(IF (/= A6 0) (SETQ X (+ X (* A6 Y6))))
(IF (/= A8 0) (SETQ X (+ X (* A8 Y8))))
(IF (/= A10 0) (SETQ X (+ X (* A10 Y10))))
(COMMAND (LIST X Y))
)
(COMMAND "")
))
(PRINC)
)
 楼主| 发表于 2004-8-13 15:58:00 | 显示全部楼层
实在是太谢谢“ZZXXQQ”兄弟的程序了! 不过,还有一点点的问题,就是,画出的图怎么只用上部分(Y>0)的曲线,能不能把下部(Y<0)的的也划出来?
发表于 2004-8-13 17:06:00 | 显示全部楼层
改过的程序: (DEFUN C:CURVE ()
(SETQ R (GETREAL "\nR = ")
K (+ (GETREAL "\nK = ") 1)
A2 (GETREAL "\nA2 = ")
A4 (GETREAL "\nA4 = ")
A6 (GETREAL "\nA6 = ")
A8 (GETREAL "\nA8 = ")
A10 (GETREAL "\nA10 = ")
C (/ 1 R)
Y (GETREAL "\nStart Y coordinate Y起始点 : ")
STEP (GETREAL "\nCurve Precision is 曲线精度(步长) : ")
N (GETINT "\nPoint of Curve 曲线点数 :"))
(IF (> STEP 0) (PROGN
(SETQ Y2 (* Y Y) Y4 (* Y2 Y2) Y6 (* Y2 Y2 Y2) Y8 (* Y4 Y4) Y10 (* Y4 Y4 Y2))
(SETQ X (/ (* C Y2) (+ (SQRT (- 1 (* K C C Y2))) 1)))
(IF (/= A2 0) (SETQ X (+ X (* A2 Y2))))
(IF (/= A4 0) (SETQ X (+ X (* A4 Y4))))
(IF (/= A6 0) (SETQ X (+ X (* A6 Y6))))
(IF (/= A8 0) (SETQ X (+ X (* A8 Y8))))
(IF (/= A10 0) (SETQ X (+ X (* A10 Y10))))
(COMMAND "PLINE" (LIST X Y))
(REPEAT N
(SETQ Y (+ Y STEP))
(SETQ Y2 (* Y Y) Y4 (* Y2 Y2) Y6 (* Y2 Y2 Y2) Y8 (* Y4 Y4) Y10 (* Y4 Y4 Y2))
(SETQ X (/ (* C Y2) (+ (SQRT (- 1 (* K C C Y2))) 1)))
(IF (/= A2 0) (SETQ X (+ X (* A2 Y2))))
(IF (/= A4 0) (SETQ X (+ X (* A4 Y4))))
(IF (/= A6 0) (SETQ X (+ X (* A6 Y6))))
(IF (/= A8 0) (SETQ X (+ X (* A8 Y8))))
(IF (/= A10 0) (SETQ X (+ X (* A10 Y10))))
(COMMAND (LIST X Y))
)
(COMMAND "")
))
(PRINC)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-30 20:26 , Processed in 0.148906 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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