QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
估计大家都能用Autocad画出正弦函数,我现在的要求是用VBA画出正弦函数,幅值为1,区间为【0,2Pi】,图形起始点为(0,0)。: H( p' d6 y. H& t$ K5 f6 @
5 ?( h/ c4 o6 n7 U) O0 E
我的源码如下附件。
; k3 \# @) u3 i, \6 [% f我的环境:XP+AutoCad2004;
% [! Z0 V% j0 g2 i- a! O. j关于怎么创建宏,参见我的帖子:; @# f+ |. r9 U7 ]( W
http://www.3dportal.cn/discuz/viewthread.php?tid=439306
- Q& ^' F* H9 s3 J; w' P$ r3 l+ I" j0 N2 M$ s
[ 本帖最后由 auluolal 于 2008-1-27 21:53 编辑 ]

正弦函数.pdf

105.53 KB, 下载次数: 22

 楼主| 发表于 2008-1-27 01:38:25 | 显示全部楼层 来自: 中国江苏无锡
首先,谢谢4楼!  f9 ~5 Q+ r( j/ `2 _
为什么不贴源码?
' {1 D- K4 b) _1 H7 y) f2 w/ p. q因为我多数时间不能直接上网,只能在线下编辑文件,并且我用Latex编辑文件,不能直接贴的,因此上附件,给大家造成不便,还请谅解!' P! F- b! g9 T3 m& d' U
关于你修改的程序,个人感觉很不错,谢谢了!4 \! @* i& _$ w/ F
但是,你提到初始切角可以省略,我的原意是将Addspline函数的参数讲的比较彻底点。而你用的是些小技巧( n' I3 }5 K/ k: d. e' `
另外你更改的程序正是我占楼的原因:)
6 j8 j% |& V: B9 e6 y) E4 ?- f# K简单的正弦函数大家看来会了,现在我加点要求!
* [, {) X5 R* h* J2 E8 Q1、起始点要能根据要求随时改变
; |2 ?4 j* P3 J' v+ z# `2、幅值要能根据要求随时改变. _/ F' ]& c, Y& b/ F& Q
3、所要画的图形的周期要能改变。' A' W; y( N' y% a
上述要求用两种方法实现,1、靠Autocad的命令输入框实现,2、靠输入窗体实现
9 W7 X1 t; `% w:)
& b  P: o# e; @8 M5 {: V: A% W- i# x& I/ z! o) P& R+ J- X& I3 D
[ 本帖最后由 auluolal 于 2008-1-27 11:30 编辑 ]
发表于 2008-1-27 05:13:02 | 显示全部楼层 来自: 中国湖南常德
楼主的VBA编的好啊,学习了~~
发表于 2008-1-27 09:48:47 | 显示全部楼层 来自: 中国
楼主为什么这么小气,不直接把源码帖出来?! s) ?- s9 j1 ]- W( \
以下是楼主的源码(越俎代疱了)。
' S1 Z! W1 I6 M; n+ ^* l9 W6 @+ W8 N! n1 K# ]6 k
Sub zxhs()
- }1 h/ K' ^9 I; r4 ~  Const Pi As Double = 3.14159265358979 '声明常量π
7 a  Z+ I: ^2 ~  Dim TemPArray(0 To 188) As Double '定义要画的点的数列
9 {2 @: v# a* H% m  Dim startTan(0 To 2) As Double '定义初始点的切角
7 G4 o0 H1 v8 r! F  Dim endTan(0 To 2) As Double '定义终结点的切角
$ t3 _# V( c8 R  Dim i As Double% G) p. {  f6 [  H9 B. w& d
  For i = 0.1 To 2 * Pi Step 0.1 '开始循环
. o" E7 v2 l' w    TemPArray(i * 30) = i+ E8 F2 t. A2 [# \+ {+ ]( @1 p, n
    TemPArray(i * 30 + 1) = Sin(i)
  x# ~  V, s! T) f( {$ U. o    TemPArray(i * 30 + 2) = 0% A% R6 r9 l4 M% t/ k) w! J; ~8 p. y
  Next i6 W# ^* [/ q7 y( x( }
  startTan(0) = 1: startTan(1) = 1: startTan(2) = 0
! ]3 w6 p  v- I2 M; A1 l1 h  endTan(0) = 1: endTan(1) = 1: endTan(2) = 00 @+ Z2 J8 T% H, e$ \. U
  Call ThisDrawing.ModelSpace.AddSpline(TemPArray, startTan, endTan) '画曲线
, B! U& {) X5 qEnd Sub
6 |3 @0 y$ I1 y0 c  F4 Y- R0 A3 i/ T
, _' j' l; d/ F6 I/ K+ P应该说,楼主的程序很不错,美中不足的是还有一点缺陷可能是被楼主忽略了:画出的曲线的最后一个拟合点的横坐标不是2π,而是6.2。
5 o8 H5 R3 C4 I- J6 \* j# e9 ~$ e& E7 }" F! C, P1 |& Q# C: v
把楼主的程序修改了一下:
  j; t; [" [0 A4 f9 M
* {/ t/ A0 Z5 D; k* XSub zxhs()
- m7 n0 ?# i- G  Const Pi As Double = 3.141592653589798 x& m+ v  X3 _! }; G) Z
  Dim TempArray() As Double'拟合点坐标使用固定数组需要先计算拟合点数量,而且今后想修改循环条件的时候,还要重新计算,重新定义数组,有点麻烦,不如使用动态数组,这样将来修改循环条件时就不必去关心到底有多少个拟合点。$ h; p. j# E. A2 W1 P4 Y8 ?8 ?! O8 Q
  Dim startTan(0 To 2) As Double
, x% T9 t+ I7 \  c! j$ o6 l  Dim endTan(0 To 2) As Double
( S* w6 A! ~& y/ a/ K  Dim A As Double1 l' M& S: M" B" d- a+ u
  ReDim TempArray(5)
0 d: Y2 M8 V: p* J4 E  For A = 0.1 To 2# * Pi Step 0.1  k2 U) k4 j; q/ S/ D
    TempArray(UBound(TempArray) - 2) = A
7 G7 H9 R2 {+ h, g5 U    TempArray(UBound(TempArray) - 1) = Sin(A)
, ?. P( y% x! }. b8 C    ReDim Preserve TempArray(UBound(TempArray) + 3)
& i% R6 G- \: b0 F  Next
+ B! ^6 c7 N/ ]5 A/ i* X1 L0 ]1 S  TempArray(UBound(TempArray) - 2) = Pi * 2#
8 m* j# O" p9 d- H4 q7 [  TempArray(UBound(TempArray) - 1) = Sin(Pi * 2#)8 ?& |1 J1 ^% l4 U% j
  'startTan(0) = 1: startTan(1) = 1: endTan(0) = 1: endTan(1) = 1'这一行......似乎意义不大,因为拟合点已足够多了,还需要指定端点切向吗?。8 q, F! Z: e; `0 s, m. n$ b4 n* f
  ThisDrawing.ModelSpace.AddSpline TempArray, startTan, endTan' D) I, i" |+ n- ?
End Sub
0 B+ D3 x; r* v$ W! P0 e( T
9 |" S) H2 }( _3 W纯属探讨,不当之处还请楼主海涵。

评分

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

查看全部评分

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

改进的正弦函数

对于2楼的要求,我采用了界面输入参数的方法编了程序。
9 y# E/ p% I4 O' L参见附件
* c% [# M7 T$ Q5 o其中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 )

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