QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
3天前
查看: 2625|回复: 4
收起左侧

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

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

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

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

x
估计大家都能用Autocad画出正弦函数,我现在的要求是用VBA画出正弦函数,幅值为1,区间为【0,2Pi】,图形起始点为(0,0)。
/ x3 u2 n$ `) \' Q1 M* K
+ M: b7 a9 g% x我的源码如下附件。0 x4 ~; m* `( A
我的环境:XP+AutoCad2004;
" q" y( K/ @! ^关于怎么创建宏,参见我的帖子:8 I8 z! r9 C7 U! Q  u* s, d
http://www.3dportal.cn/discuz/viewthread.php?tid=439306' l$ c/ w8 E3 |) j' V! g* M' S
% B: l  o- h; [! y3 `
[ 本帖最后由 auluolal 于 2008-1-27 21:53 编辑 ]

正弦函数.pdf

105.53 KB, 下载次数: 22

 楼主| 发表于 2008-1-27 01:38:25 | 显示全部楼层 来自: 中国江苏无锡
首先,谢谢4楼!, j, y( o# U( X
为什么不贴源码?9 R; v- c7 Y; c' F1 w
因为我多数时间不能直接上网,只能在线下编辑文件,并且我用Latex编辑文件,不能直接贴的,因此上附件,给大家造成不便,还请谅解!
7 ]0 K0 T3 O, X/ h' S6 z关于你修改的程序,个人感觉很不错,谢谢了!1 Q" T# \- h# F/ |
但是,你提到初始切角可以省略,我的原意是将Addspline函数的参数讲的比较彻底点。而你用的是些小技巧
3 {) A/ l& U% m  B+ v: B另外你更改的程序正是我占楼的原因:)
4 B  K$ S# j8 i2 b+ P% {9 C简单的正弦函数大家看来会了,现在我加点要求!) Q/ U' i4 ]& R8 H' \
1、起始点要能根据要求随时改变$ P; n7 v. e$ S" A
2、幅值要能根据要求随时改变. P. `$ I2 B! o! o9 P7 d; c
3、所要画的图形的周期要能改变。
9 |0 ~5 b/ o2 E上述要求用两种方法实现,1、靠Autocad的命令输入框实现,2、靠输入窗体实现
' V: }* [# f/ z& r' i/ W:)& v  Z5 g, R9 P

# I6 c/ }: t/ C. K  y. @[ 本帖最后由 auluolal 于 2008-1-27 11:30 编辑 ]
发表于 2008-1-27 05:13:02 | 显示全部楼层 来自: 中国湖南常德
楼主的VBA编的好啊,学习了~~
发表于 2008-1-27 09:48:47 | 显示全部楼层 来自: 中国
楼主为什么这么小气,不直接把源码帖出来?
! e: x$ j1 B! D- K$ [* Z以下是楼主的源码(越俎代疱了)。
) ~% _* Y. y: M" Z" K( v7 P* `* X" e) ?1 \+ j: l
Sub zxhs()( F; ?8 e- ^  Q/ |) A
  Const Pi As Double = 3.14159265358979 '声明常量π* {1 X7 D; N" V4 g2 b* N
  Dim TemPArray(0 To 188) As Double '定义要画的点的数列- X' P; K- y* ]7 k' \9 s
  Dim startTan(0 To 2) As Double '定义初始点的切角
1 x# }& s+ i4 n5 {+ u  Dim endTan(0 To 2) As Double '定义终结点的切角
: U! g0 |# @0 V4 b3 S* f! _( L  Dim i As Double
( d- E% B0 |# T/ `3 B: r  For i = 0.1 To 2 * Pi Step 0.1 '开始循环# y5 Q# A" h" C! O& [
    TemPArray(i * 30) = i" b8 E( Y2 r; L/ ]$ E( j' \, K; j( T
    TemPArray(i * 30 + 1) = Sin(i)
9 W4 H+ U: T7 ]$ f$ p    TemPArray(i * 30 + 2) = 0
: \7 O. O5 k. u% D3 I# h) j4 M  Next i
( l- M4 w6 K' P  ?  startTan(0) = 1: startTan(1) = 1: startTan(2) = 0
: A: H! V# S5 q: X' o  Z4 e) K0 ]; e  endTan(0) = 1: endTan(1) = 1: endTan(2) = 0
. C3 y& v3 `& E3 M. U  Call ThisDrawing.ModelSpace.AddSpline(TemPArray, startTan, endTan) '画曲线
  q7 U6 S) X6 ]; [$ ]. }End Sub; l8 c$ r' D) |3 A4 L4 w# m
1 u4 A: S1 F# e8 r* o, A
应该说,楼主的程序很不错,美中不足的是还有一点缺陷可能是被楼主忽略了:画出的曲线的最后一个拟合点的横坐标不是2π,而是6.2。8 Z9 k5 p( e" @/ B

2 u/ m! A. t# Q, A2 s0 U+ n把楼主的程序修改了一下:
' b9 a* X5 d' Q1 J) a; f! e1 S: H9 P6 [) H9 t- P& N7 q, y
Sub zxhs()
% y" ]8 F: Z' }' C& Z7 x  Const Pi As Double = 3.14159265358979, L3 m' R. V. @. {9 c% E
  Dim TempArray() As Double'拟合点坐标使用固定数组需要先计算拟合点数量,而且今后想修改循环条件的时候,还要重新计算,重新定义数组,有点麻烦,不如使用动态数组,这样将来修改循环条件时就不必去关心到底有多少个拟合点。
* B) {1 r5 S2 O0 |" q; }% ]  Dim startTan(0 To 2) As Double0 ~3 K% I! N0 K" g* l
  Dim endTan(0 To 2) As Double. ~& E& [& a6 W& z
  Dim A As Double# c9 v2 H0 m/ O
  ReDim TempArray(5)
6 U# c6 d! b" w6 X1 T! ?  For A = 0.1 To 2# * Pi Step 0.19 B! a+ F, E! [  i% f% ?
    TempArray(UBound(TempArray) - 2) = A
+ E& D7 c6 _4 p, V7 c  L2 [    TempArray(UBound(TempArray) - 1) = Sin(A)! ]1 f# e' z6 D
    ReDim Preserve TempArray(UBound(TempArray) + 3), x  [0 X6 a  o
  Next# _7 S! G4 d/ h
  TempArray(UBound(TempArray) - 2) = Pi * 2#
* ?0 \, C2 w* r8 P' U  TempArray(UBound(TempArray) - 1) = Sin(Pi * 2#)
- ]# R: H4 x6 o. `  'startTan(0) = 1: startTan(1) = 1: endTan(0) = 1: endTan(1) = 1'这一行......似乎意义不大,因为拟合点已足够多了,还需要指定端点切向吗?。* R' J: @5 m  _/ \% @8 t
  ThisDrawing.ModelSpace.AddSpline TempArray, startTan, endTan7 E$ {% e+ V2 g) S. A* b( F' g. L6 B
End Sub0 z. I, T  m& o4 z9 E0 P7 M
2 h3 n; G& p2 [/ h+ A
纯属探讨,不当之处还请楼主海涵。

评分

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

查看全部评分

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

改进的正弦函数

对于2楼的要求,我采用了界面输入参数的方法编了程序。% ~) c& o6 ]! a  z* ?+ _4 d
参见附件
- Q0 W% ^9 X! Z7 l' G其中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 )

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