QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
估计大家都能用Autocad画出正弦函数,我现在的要求是用VBA画出正弦函数,幅值为1,区间为【0,2Pi】,图形起始点为(0,0)。
- a& r$ f: D" R. N. i
& Q; g: [. {+ K8 n; K4 v! M- ?+ ~我的源码如下附件。2 i. f( {$ ~  y& K, Q+ r7 s0 M
我的环境:XP+AutoCad2004;
1 l& @# m4 f  f) s- u关于怎么创建宏,参见我的帖子:
7 k, g" Q& ~- K8 D: O) v* Khttp://www.3dportal.cn/discuz/viewthread.php?tid=4393060 J# m6 Z: E" @! j

: D  }6 e- X: c8 D* N[ 本帖最后由 auluolal 于 2008-1-27 21:53 编辑 ]

正弦函数.pdf

105.53 KB, 下载次数: 22

 楼主| 发表于 2008-1-27 01:38:25 | 显示全部楼层 来自: 中国江苏无锡
首先,谢谢4楼!, _6 T4 F/ \" n/ V8 d
为什么不贴源码?
9 O3 F% ^, }, L/ X因为我多数时间不能直接上网,只能在线下编辑文件,并且我用Latex编辑文件,不能直接贴的,因此上附件,给大家造成不便,还请谅解!" {- u7 @) k6 G
关于你修改的程序,个人感觉很不错,谢谢了!
0 E+ f  r' ]! m/ P6 o但是,你提到初始切角可以省略,我的原意是将Addspline函数的参数讲的比较彻底点。而你用的是些小技巧
# J: Y. d% {, g/ ~另外你更改的程序正是我占楼的原因:)7 B& c  h# x6 g+ n
简单的正弦函数大家看来会了,现在我加点要求!  D( n  d( {# r
1、起始点要能根据要求随时改变
5 R4 J5 u. `! ~2、幅值要能根据要求随时改变+ D2 {8 U8 B6 [# r
3、所要画的图形的周期要能改变。
8 Q4 R8 O; {$ E% G& M* @. g0 ^上述要求用两种方法实现,1、靠Autocad的命令输入框实现,2、靠输入窗体实现: K9 Q% i& p* P" b+ r1 u
:)
. }2 H. Q8 y8 W( x- r
5 V7 |" F% p; Y" H[ 本帖最后由 auluolal 于 2008-1-27 11:30 编辑 ]
发表于 2008-1-27 05:13:02 | 显示全部楼层 来自: 中国湖南常德
楼主的VBA编的好啊,学习了~~
发表于 2008-1-27 09:48:47 | 显示全部楼层 来自: 中国
楼主为什么这么小气,不直接把源码帖出来?
8 `2 A; S, E  L! m' x以下是楼主的源码(越俎代疱了)。0 q& y% U3 V& n: Q0 |1 d1 e

" X/ W, M% g) T% k( vSub zxhs()% j* r5 d" m, b4 X
  Const Pi As Double = 3.14159265358979 '声明常量π3 @- b+ x* B7 \* k( Z7 J( f
  Dim TemPArray(0 To 188) As Double '定义要画的点的数列7 _0 ~  P0 R8 ]  r) w1 h
  Dim startTan(0 To 2) As Double '定义初始点的切角. e% C! [. y; h2 r3 G3 l1 T
  Dim endTan(0 To 2) As Double '定义终结点的切角
7 T4 ^  r0 J% N* `1 p  Dim i As Double
7 y- ?2 H9 x1 W" ^1 `  For i = 0.1 To 2 * Pi Step 0.1 '开始循环
; L& j& F3 T+ P& C' k, {8 [    TemPArray(i * 30) = i9 V- N. q3 t& n- Z( }  q9 D
    TemPArray(i * 30 + 1) = Sin(i)7 R/ c) M. U2 A; ?, Y6 {0 {+ {' E
    TemPArray(i * 30 + 2) = 0& }0 N3 x& G; k: c# `8 s1 q
  Next i: r6 t$ a' y' L% z- a5 O3 a
  startTan(0) = 1: startTan(1) = 1: startTan(2) = 0
% x$ u2 [, w& D, N  endTan(0) = 1: endTan(1) = 1: endTan(2) = 06 S3 F" _: y$ C: ]) V- X
  Call ThisDrawing.ModelSpace.AddSpline(TemPArray, startTan, endTan) '画曲线/ R: ]" g/ d) g
End Sub
! K8 p$ y4 y1 e8 s0 e
4 K' s5 j' ~9 {9 _应该说,楼主的程序很不错,美中不足的是还有一点缺陷可能是被楼主忽略了:画出的曲线的最后一个拟合点的横坐标不是2π,而是6.2。
9 s$ |. |6 c% p4 i: S- _7 V1 R9 i: c: u6 p. @' O8 I2 u; D
把楼主的程序修改了一下:- h4 l/ @0 k8 l$ a1 I8 `/ m# K; E

- r$ a! j. a- D! H# k7 I4 E5 YSub zxhs()
; o" J: }/ R: E" {5 l* ?) o  Const Pi As Double = 3.141592653589798 o) f1 n; z5 C, j) d0 v% _
  Dim TempArray() As Double'拟合点坐标使用固定数组需要先计算拟合点数量,而且今后想修改循环条件的时候,还要重新计算,重新定义数组,有点麻烦,不如使用动态数组,这样将来修改循环条件时就不必去关心到底有多少个拟合点。
  k( L0 J+ [7 f  E" s  Dim startTan(0 To 2) As Double  Y5 [2 o/ }; Q2 y# P
  Dim endTan(0 To 2) As Double% v, x  M8 R0 I# r
  Dim A As Double
5 `, V8 ]% ~9 N+ b( b  ReDim TempArray(5)
4 f/ S: _: R; X& C" w- J  For A = 0.1 To 2# * Pi Step 0.1
: B1 N% V8 Y' ]/ g    TempArray(UBound(TempArray) - 2) = A
8 V7 ^6 z1 }/ j5 P2 x    TempArray(UBound(TempArray) - 1) = Sin(A)
5 e+ O& G% l% m( h" [% i0 x) q' H    ReDim Preserve TempArray(UBound(TempArray) + 3)$ ?5 ]9 G9 ?- e% m+ b/ S) s
  Next
9 Y% ^2 i3 w, @4 T! x% t  TempArray(UBound(TempArray) - 2) = Pi * 2#
, }% Q* ^: a& a5 M5 d3 i7 e" ^  d  TempArray(UBound(TempArray) - 1) = Sin(Pi * 2#)
8 B6 X; u7 u9 Y5 R  'startTan(0) = 1: startTan(1) = 1: endTan(0) = 1: endTan(1) = 1'这一行......似乎意义不大,因为拟合点已足够多了,还需要指定端点切向吗?。$ A6 ]6 o$ a4 z) K7 a
  ThisDrawing.ModelSpace.AddSpline TempArray, startTan, endTan- z1 b$ _# ^9 J
End Sub, `- o: h# Y8 s6 z! ^$ D: y& V6 V* Y
: S+ N8 q# v) g4 @6 a0 w5 ~' Y
纯属探讨,不当之处还请楼主海涵。

评分

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

查看全部评分

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

改进的正弦函数

对于2楼的要求,我采用了界面输入参数的方法编了程序。
% W5 l: q% g# u5 S: A6 h* V5 z/ ]4 v参见附件
; i) U! X7 K5 d7 A+ b. `6 s) Z/ f" J其中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 )

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