QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2615|回复: 4
收起左侧

[讨论] 简单的画图问题(改进的正弦函数)

[复制链接]
发表于 2008-1-27 01:10:37 | 显示全部楼层 |阅读模式 来自: 中国江苏无锡

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
估计大家都能用Autocad画出正弦函数,我现在的要求是用VBA画出正弦函数,幅值为1,区间为【0,2Pi】,图形起始点为(0,0)。
+ Z2 q$ \5 k! F: C' Y  |6 V8 |" _. M$ k5 \# Z
我的源码如下附件。
- I9 D, ]) W9 S/ h; }( T& o9 d我的环境:XP+AutoCad2004;
6 V8 E) i% E0 {8 h# Q% t关于怎么创建宏,参见我的帖子:* z" p0 r% U5 W7 @( P- M
http://www.3dportal.cn/discuz/viewthread.php?tid=439306
1 y! j. Q: K$ g+ K, [1 t2 g, @2 T- t& @, q; m- c6 `
[ 本帖最后由 auluolal 于 2008-1-27 21:53 编辑 ]

正弦函数.pdf

105.53 KB, 下载次数: 22

 楼主| 发表于 2008-1-27 01:38:25 | 显示全部楼层 来自: 中国江苏无锡
首先,谢谢4楼!
1 ~# S8 M7 Z1 Z$ k为什么不贴源码?
! `/ }. j1 m3 o8 h4 f因为我多数时间不能直接上网,只能在线下编辑文件,并且我用Latex编辑文件,不能直接贴的,因此上附件,给大家造成不便,还请谅解!
0 V1 q# b6 t" N关于你修改的程序,个人感觉很不错,谢谢了!) H$ O' G; V" p# E2 R6 W0 i9 I: l
但是,你提到初始切角可以省略,我的原意是将Addspline函数的参数讲的比较彻底点。而你用的是些小技巧0 j% v) a- O+ w
另外你更改的程序正是我占楼的原因:)
  f7 z" a/ F3 g! O7 w) ]0 x- w: F简单的正弦函数大家看来会了,现在我加点要求!
' n" s8 R  n) {2 J& I3 U7 k" ^1、起始点要能根据要求随时改变
1 w$ [( L9 m% I: e* \0 d! `) r1 y2、幅值要能根据要求随时改变& C6 o/ U% X  u5 t! Z4 m( b0 T
3、所要画的图形的周期要能改变。, y3 w, ]" K2 q8 I1 a: g
上述要求用两种方法实现,1、靠Autocad的命令输入框实现,2、靠输入窗体实现# G( }3 k2 K5 a8 q- Z
:)- X3 y* Q7 X: r# b" c$ c

; Q+ S4 q- U# H, S6 ?" Q: I9 E- F[ 本帖最后由 auluolal 于 2008-1-27 11:30 编辑 ]
发表于 2008-1-27 05:13:02 | 显示全部楼层 来自: 中国湖南常德
楼主的VBA编的好啊,学习了~~
发表于 2008-1-27 09:48:47 | 显示全部楼层 来自: 中国
楼主为什么这么小气,不直接把源码帖出来?
" m+ s, w# Z% i! H0 W4 e% y4 P) F以下是楼主的源码(越俎代疱了)。
  a/ E  g, ?8 X+ r( S
2 R7 Z6 u8 Y3 w9 E+ g' S2 I6 K+ p+ hSub zxhs(), O2 Q, U5 P. X6 q/ v# X
  Const Pi As Double = 3.14159265358979 '声明常量π
7 z) \" O* f+ T" f) o. L. l# z  Dim TemPArray(0 To 188) As Double '定义要画的点的数列( g! ^, V% c2 O( z5 k0 }  g
  Dim startTan(0 To 2) As Double '定义初始点的切角
' O4 Q# M+ N0 _% E: T3 T  Dim endTan(0 To 2) As Double '定义终结点的切角
, c% q% V9 U% d" ]: [; @8 V1 A) L  Dim i As Double2 N3 s5 X$ f/ w; Y
  For i = 0.1 To 2 * Pi Step 0.1 '开始循环
/ P* g8 p$ E, |3 K* Z  H2 l- }    TemPArray(i * 30) = i9 N) q2 k7 B7 ]) C* n, S6 y1 p" _
    TemPArray(i * 30 + 1) = Sin(i): ~2 _7 H! |; P
    TemPArray(i * 30 + 2) = 0  E6 B8 ?3 i' W! ?5 s
  Next i
; o* W* {; i$ `' S( B! q7 M* F$ g  startTan(0) = 1: startTan(1) = 1: startTan(2) = 0
4 Y( v3 Y6 t, R$ y" \9 Y  endTan(0) = 1: endTan(1) = 1: endTan(2) = 09 {* d5 l+ [% h/ m; p
  Call ThisDrawing.ModelSpace.AddSpline(TemPArray, startTan, endTan) '画曲线
1 I. c9 m6 A4 _* r; R8 e+ H, Q' YEnd Sub
8 ^3 A5 j/ u% ^5 W6 k3 C" |0 V3 r/ c/ K
应该说,楼主的程序很不错,美中不足的是还有一点缺陷可能是被楼主忽略了:画出的曲线的最后一个拟合点的横坐标不是2π,而是6.2。
# o5 O3 k  G8 L$ V/ b( F. g+ T, t5 S5 t1 V! I2 D
把楼主的程序修改了一下:4 J( T5 e  f! o- A1 F

; [4 v. ?7 {7 h* `2 ^Sub zxhs()
) c5 X1 ~" Z* h! n% G4 D  Const Pi As Double = 3.14159265358979- h8 a# A, G& C1 D+ V
  Dim TempArray() As Double'拟合点坐标使用固定数组需要先计算拟合点数量,而且今后想修改循环条件的时候,还要重新计算,重新定义数组,有点麻烦,不如使用动态数组,这样将来修改循环条件时就不必去关心到底有多少个拟合点。
4 Z8 Z" }9 S4 i. d, r  Dim startTan(0 To 2) As Double
: Q( v7 B: M' d3 N, k" O5 ]  Dim endTan(0 To 2) As Double$ P) r3 @9 I5 |0 ~
  Dim A As Double
- T. f  h! s  y/ {% l  ReDim TempArray(5)+ U* t* y7 A8 k% g
  For A = 0.1 To 2# * Pi Step 0.1$ i- H7 A1 Q# F4 e+ a
    TempArray(UBound(TempArray) - 2) = A
) ?3 e9 P2 R7 s" E    TempArray(UBound(TempArray) - 1) = Sin(A)9 l9 k" \* ]; ~. ^
    ReDim Preserve TempArray(UBound(TempArray) + 3)- ?5 w) e9 p. L7 e
  Next
# v5 J0 J! P# @# F% ~2 X  TempArray(UBound(TempArray) - 2) = Pi * 2#0 ^! \- g) ^& `1 S3 c- G0 [
  TempArray(UBound(TempArray) - 1) = Sin(Pi * 2#)6 ^( j4 \9 O% p7 z
  'startTan(0) = 1: startTan(1) = 1: endTan(0) = 1: endTan(1) = 1'这一行......似乎意义不大,因为拟合点已足够多了,还需要指定端点切向吗?。' Z, X0 m( c' z# C5 ]' ]
  ThisDrawing.ModelSpace.AddSpline TempArray, startTan, endTan# o- g* e4 I, }  P0 ~
End Sub8 _4 g2 w6 u0 S4 |9 C/ Y

4 b" B1 C$ d2 I) u) p/ Q纯属探讨,不当之处还请楼主海涵。

评分

参与人数 1三维币 +5 收起 理由
★新手★ + 5 技术讨论

查看全部评分

 楼主| 发表于 2008-1-27 21:53:09 | 显示全部楼层 来自: 中国江苏南通

改进的正弦函数

对于2楼的要求,我采用了界面输入参数的方法编了程序。
) N6 A) x/ _1 _( @& ^3 ]+ B4 ^, J参见附件3 A/ g$ x/ k- t% V3 ^
其中PDF文件是我认为要注意的地方,DWG文件为源码及运行程序。

改进的正弦函数.pdf

100.76 KB, 下载次数: 13

改进的正弦曲线.rar

14.06 KB, 下载次数: 16

评分

参与人数 1三维币 +5 收起 理由
★新手★ + 5 技术讨论

查看全部评分

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

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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