QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
估计大家都能用Autocad画出正弦函数,我现在的要求是用VBA画出正弦函数,幅值为1,区间为【0,2Pi】,图形起始点为(0,0)。  q5 N# O$ N% N( w2 {
" }; ?) x( F- t5 Q3 J1 ~: d0 P$ T' ?
我的源码如下附件。
' G7 b# N* B6 m- H0 Z5 r: l6 `我的环境:XP+AutoCad2004;
* r! S' h/ J, ]4 ?关于怎么创建宏,参见我的帖子:
( n/ ]$ @+ V, j- u2 ~http://www.3dportal.cn/discuz/viewthread.php?tid=439306
$ S9 ?; A0 o! O; y7 K7 S
3 A1 S- h% n: M[ 本帖最后由 auluolal 于 2008-1-27 21:53 编辑 ]

正弦函数.pdf

105.53 KB, 下载次数: 22

 楼主| 发表于 2008-1-27 01:38:25 | 显示全部楼层 来自: 中国江苏无锡
首先,谢谢4楼!
$ B' i% ^! f5 f$ ~! j. c为什么不贴源码?' Z+ A& o% i, a7 B
因为我多数时间不能直接上网,只能在线下编辑文件,并且我用Latex编辑文件,不能直接贴的,因此上附件,给大家造成不便,还请谅解!$ s5 A' y- o) y  l
关于你修改的程序,个人感觉很不错,谢谢了!8 w/ k/ T* Q& I& @; A% I
但是,你提到初始切角可以省略,我的原意是将Addspline函数的参数讲的比较彻底点。而你用的是些小技巧
" w- S8 a9 Y! y* }6 ]* ~另外你更改的程序正是我占楼的原因:)
- I3 R9 U- S: b: W# J# _7 T简单的正弦函数大家看来会了,现在我加点要求!
7 [8 B( Y0 F" M/ @0 r$ H, p1、起始点要能根据要求随时改变8 L3 J* L2 N( b+ R0 E
2、幅值要能根据要求随时改变
, R( @9 t9 P5 s! D9 p3、所要画的图形的周期要能改变。1 e  P9 k4 e! Y
上述要求用两种方法实现,1、靠Autocad的命令输入框实现,2、靠输入窗体实现
9 g) R( Y3 p( s5 w' y:)
5 D2 o+ b# P! k( u( x" s9 ~1 P" i5 F2 ], N* e4 Z$ i, W0 l
[ 本帖最后由 auluolal 于 2008-1-27 11:30 编辑 ]
发表于 2008-1-27 05:13:02 | 显示全部楼层 来自: 中国湖南常德
楼主的VBA编的好啊,学习了~~
发表于 2008-1-27 09:48:47 | 显示全部楼层 来自: 中国
楼主为什么这么小气,不直接把源码帖出来?4 }2 _2 b9 a# L% A. w
以下是楼主的源码(越俎代疱了)。/ |- G# r4 u. O

3 V5 d. a$ X# ^3 P( _Sub zxhs()
8 P0 c/ F7 `3 s; r' C0 ^4 `' X  Const Pi As Double = 3.14159265358979 '声明常量π
% @. E* p9 B  Z% _: e" G& B  Dim TemPArray(0 To 188) As Double '定义要画的点的数列0 n9 }/ X8 L8 [" ~
  Dim startTan(0 To 2) As Double '定义初始点的切角# h* m$ }. P- n" x7 X9 L
  Dim endTan(0 To 2) As Double '定义终结点的切角# w2 C; o) V$ n9 Z+ G2 G! j: w6 N
  Dim i As Double
4 \! p2 B6 D" P  For i = 0.1 To 2 * Pi Step 0.1 '开始循环
: X3 _4 o8 `# o* O; G" ~. F    TemPArray(i * 30) = i4 }! J/ C6 H0 A1 N, s
    TemPArray(i * 30 + 1) = Sin(i), |7 G* h% l2 P! \
    TemPArray(i * 30 + 2) = 0
3 W$ F" O+ b" V8 ?" {1 u! @/ _  Next i
, P$ P# L1 Q" t9 ]  startTan(0) = 1: startTan(1) = 1: startTan(2) = 0
2 u  H4 \" ~. K! ~3 t/ ^  endTan(0) = 1: endTan(1) = 1: endTan(2) = 0
; B) p9 o  v7 R- V  Call ThisDrawing.ModelSpace.AddSpline(TemPArray, startTan, endTan) '画曲线+ W8 l6 w8 V  A% _
End Sub
" Q. V' |% D) T; w7 m6 m: _
- L" p. _) Z1 U应该说,楼主的程序很不错,美中不足的是还有一点缺陷可能是被楼主忽略了:画出的曲线的最后一个拟合点的横坐标不是2π,而是6.2。, I3 R/ j1 O1 P% }* [
% M% M; Z8 A! k+ F* N- C
把楼主的程序修改了一下:
( B2 x3 g: V" }7 L$ [4 f% M" s# F' @1 R# N; v  Q  E
Sub zxhs()
# s/ o3 y% d' z( b# j2 f# g  Const Pi As Double = 3.141592653589795 L: U5 N' X0 m0 ^. l
  Dim TempArray() As Double'拟合点坐标使用固定数组需要先计算拟合点数量,而且今后想修改循环条件的时候,还要重新计算,重新定义数组,有点麻烦,不如使用动态数组,这样将来修改循环条件时就不必去关心到底有多少个拟合点。- B* U9 |7 H2 |' B; q8 I
  Dim startTan(0 To 2) As Double8 C. V; M/ z1 |7 v- M. x/ i- \
  Dim endTan(0 To 2) As Double5 X( m7 J; i: @$ G
  Dim A As Double
- _/ v! g: v0 J% L  ReDim TempArray(5)
' E4 x" m: J1 r  @  z: t  For A = 0.1 To 2# * Pi Step 0.14 u9 G7 W; o( g) W3 r
    TempArray(UBound(TempArray) - 2) = A
5 D6 q, h. C2 [# \/ p1 }    TempArray(UBound(TempArray) - 1) = Sin(A)
2 J( y( }6 g3 z/ R: Z7 }* I7 Q    ReDim Preserve TempArray(UBound(TempArray) + 3), P6 Z; D0 ?$ \: {# A' `3 u
  Next
4 D- o" r5 K* h0 X  TempArray(UBound(TempArray) - 2) = Pi * 2#
( c* t4 G; o/ E/ R* H  V' c) ~  TempArray(UBound(TempArray) - 1) = Sin(Pi * 2#)- @- s2 p$ a, x- x- G
  'startTan(0) = 1: startTan(1) = 1: endTan(0) = 1: endTan(1) = 1'这一行......似乎意义不大,因为拟合点已足够多了,还需要指定端点切向吗?。
7 E" y: J3 A6 k, t. ^* i! a  ThisDrawing.ModelSpace.AddSpline TempArray, startTan, endTan
- M3 ]7 I; x. nEnd Sub% d7 T& c6 V. N, l/ H
7 X/ k- P, j( `$ S8 O  K" I
纯属探讨,不当之处还请楼主海涵。

评分

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

查看全部评分

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

改进的正弦函数

对于2楼的要求,我采用了界面输入参数的方法编了程序。
& e# d  b4 i, l/ ]& H* @参见附件0 I1 p( ?' L# Z& h9 p5 B: }* b
其中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 )

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