QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
估计大家都能用Autocad画出正弦函数,我现在的要求是用VBA画出正弦函数,幅值为1,区间为【0,2Pi】,图形起始点为(0,0)。" Q, N$ L4 c+ W5 ?+ ^* B2 k1 A  t1 ~7 T

( f# `) u$ H  y& c1 O8 L! k$ @我的源码如下附件。
4 D( |; t& R5 G  i我的环境:XP+AutoCad2004;
& D9 Y  D( P( `  E关于怎么创建宏,参见我的帖子:
% @+ N- {0 J) ^1 N9 K+ F2 [, e8 r& O) Whttp://www.3dportal.cn/discuz/viewthread.php?tid=4393064 |) b0 G4 Q2 Q! z7 s  |/ s  y

1 h; b0 w3 J$ S( I5 c9 a' Y[ 本帖最后由 auluolal 于 2008-1-27 21:53 编辑 ]

正弦函数.pdf

105.53 KB, 下载次数: 22

 楼主| 发表于 2008-1-27 01:38:25 | 显示全部楼层 来自: 中国江苏无锡
首先,谢谢4楼!4 x  T0 N& {+ b1 G& ^! r
为什么不贴源码?
# T% @  U5 M) i因为我多数时间不能直接上网,只能在线下编辑文件,并且我用Latex编辑文件,不能直接贴的,因此上附件,给大家造成不便,还请谅解!: i% N- C& w3 j5 N/ v
关于你修改的程序,个人感觉很不错,谢谢了!: @" G8 W; ]6 e% I5 t
但是,你提到初始切角可以省略,我的原意是将Addspline函数的参数讲的比较彻底点。而你用的是些小技巧/ U# y9 P9 U8 Z5 V
另外你更改的程序正是我占楼的原因:)" @1 d- U/ s9 O" ~3 N/ @+ D, |  E
简单的正弦函数大家看来会了,现在我加点要求!
: r. x. }! x6 |4 p5 W! |1、起始点要能根据要求随时改变
' h) }5 M/ E( Z8 U9 {; y3 T2、幅值要能根据要求随时改变4 J' ^; }7 K; u9 I& D9 i) v+ K5 C$ o
3、所要画的图形的周期要能改变。
5 s$ _* w7 ~  d上述要求用两种方法实现,1、靠Autocad的命令输入框实现,2、靠输入窗体实现" b4 {! Y; u& j  Q1 V5 D# {
:)
7 s, P) G0 \9 b. B, l4 ?) H% F
7 A/ X. e0 P3 O2 F5 l0 Z[ 本帖最后由 auluolal 于 2008-1-27 11:30 编辑 ]
发表于 2008-1-27 05:13:02 | 显示全部楼层 来自: 中国湖南常德
楼主的VBA编的好啊,学习了~~
发表于 2008-1-27 09:48:47 | 显示全部楼层 来自: 中国
楼主为什么这么小气,不直接把源码帖出来?) c  u: a5 w! `; O: r9 N5 H
以下是楼主的源码(越俎代疱了)。
4 `( ?9 a6 M% n+ F9 ?
" j) X3 b4 E. ^( m4 w; L7 m9 x; @  kSub zxhs()
5 t* v* A& X" s1 H7 x2 b  Const Pi As Double = 3.14159265358979 '声明常量π
3 F. ~$ g# @, M% U: x  Dim TemPArray(0 To 188) As Double '定义要画的点的数列
: m6 U8 _$ t* g* m; p* S! s  Dim startTan(0 To 2) As Double '定义初始点的切角) G+ v0 ~7 M6 v  c
  Dim endTan(0 To 2) As Double '定义终结点的切角' F+ U* C+ u# w2 E1 U! |; y
  Dim i As Double
9 [1 A* |1 K) m: b! X& ?  For i = 0.1 To 2 * Pi Step 0.1 '开始循环  o0 ~& ^& Q) S5 j. l- |
    TemPArray(i * 30) = i1 m& l& T6 y( U- c* d. c0 z8 Z+ v
    TemPArray(i * 30 + 1) = Sin(i)
/ k7 L4 A, K. v  t' F  `    TemPArray(i * 30 + 2) = 0
% t. w* a. j! Q$ |/ r- T1 x. j  Next i
2 K4 ]9 c2 i. i; Z+ m( v  startTan(0) = 1: startTan(1) = 1: startTan(2) = 0, Y! s: }! a' j/ ?# Y
  endTan(0) = 1: endTan(1) = 1: endTan(2) = 0
9 _1 \$ Q/ g& s3 g* n  Call ThisDrawing.ModelSpace.AddSpline(TemPArray, startTan, endTan) '画曲线7 I9 E4 o7 y; J# O" j
End Sub) A# s  |/ L( }# H- U$ m+ d
8 D8 O1 k0 g' n  V  Q/ o
应该说,楼主的程序很不错,美中不足的是还有一点缺陷可能是被楼主忽略了:画出的曲线的最后一个拟合点的横坐标不是2π,而是6.2。
7 S( q/ V/ ?# z6 L; f! C% q% b: A! J
$ e4 L8 o$ _# [把楼主的程序修改了一下:% F* v  u( o. E4 ?
: a# {- ~  P. D* w$ g) s$ i
Sub zxhs()
8 i: P5 W. i- G7 v3 O0 I  Const Pi As Double = 3.14159265358979. K+ S* m. s4 T+ J  A2 N
  Dim TempArray() As Double'拟合点坐标使用固定数组需要先计算拟合点数量,而且今后想修改循环条件的时候,还要重新计算,重新定义数组,有点麻烦,不如使用动态数组,这样将来修改循环条件时就不必去关心到底有多少个拟合点。1 Y& j+ p$ k. K8 j6 t
  Dim startTan(0 To 2) As Double
* Z1 x6 X8 p) ?1 W( Z! D- K: w% u  Dim endTan(0 To 2) As Double
" G1 P7 q6 g: w2 f5 U% k) L  Dim A As Double- [0 c" l, {# o. q# n0 p
  ReDim TempArray(5)- S1 E+ K) I. C+ W" Y1 f
  For A = 0.1 To 2# * Pi Step 0.1
# w& ~. y) R7 L; t0 j# v    TempArray(UBound(TempArray) - 2) = A+ s7 s/ s" Q4 z6 X0 m) U7 t
    TempArray(UBound(TempArray) - 1) = Sin(A)
$ \& h) a" q) I    ReDim Preserve TempArray(UBound(TempArray) + 3)' q2 y3 S5 E' v7 Z' U4 t
  Next; Y; |  P% }- t  s) t0 x: y
  TempArray(UBound(TempArray) - 2) = Pi * 2#: \3 n/ ^; F$ Z0 B' C3 ^
  TempArray(UBound(TempArray) - 1) = Sin(Pi * 2#)5 n* u1 V' s7 W% C$ t8 S& t4 z  l
  'startTan(0) = 1: startTan(1) = 1: endTan(0) = 1: endTan(1) = 1'这一行......似乎意义不大,因为拟合点已足够多了,还需要指定端点切向吗?。
& `: Z5 b" I5 _0 Y4 s: ^0 y  ThisDrawing.ModelSpace.AddSpline TempArray, startTan, endTan# S  r! ^6 ^+ Q( l, i
End Sub1 r/ U- S) F4 N& X% ^7 c
) q; F4 J9 x: \
纯属探讨,不当之处还请楼主海涵。

评分

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

查看全部评分

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

改进的正弦函数

对于2楼的要求,我采用了界面输入参数的方法编了程序。+ V5 O' m( I) k& z0 |. f! ?4 Q
参见附件
& p+ S0 F* B- a9 h- r# `1 u其中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 )

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