先说一个这个程序的怎么的架构。
首先,这个程序是一个按中等规模的工程,先要做好规划。
模块文件中,
一是定义好一个结构,这个结构就是 坐标类型,包括二个数据 X 和 Y
二是规划好函数来。
根据这几组方程,分别写出几个函数。
函数要求:
函数返回值要求一致,使用结构返回,也就是同时返回X Y坐标。看例子
最后来一个总调用函数。
参数个数=这6个函数+1个,首参数用于选择调用这6个函数中哪一个,其他参数传递进去。该类型函数用不到的参数就传0进来。
最后把结果传递出来。
总调用函数第一个参数可以使用枚举类型。
----------示例代码---------------
'角度是 一周360度,在计算过程中里转换为弧度
Option Explicit
Const pi = 3.14159
Public Type 坐标
x As Single
y As Single
End Type
Public Enum 曲线类型
圆周 = 0
等速上升 = 1
等速下降 = 2
等加速上升 = 3
等加速下降 = 4
等减速上升 = 5
等减速下降 = 6
End Enum
Public Function 运动(运动类型 As 曲线类型, ro As 坐标, s As Single, h As Single, 角度 As Single) As 坐标
Select Case 运动类型
Case 圆周
运动 = 圆周运动(r0, s, 角度)
Case 等速上升
运动 = 等速上升(ro, s, h, 角度)
' ....
End Select
End Function
Public Function 圆周运动(r0 As 坐标, s As Single, 角度 As Single) As 坐标
圆周运动.x = (r0.x + s) * Sin(角度 / 180 * pi)
圆周运动.y = (r0.y + s) * Cos(角度 / 180 * pi)
End Function
Public Function 等速上升(r0 As 坐标, s As Single, h As Single, 角度 As Single) As 坐标
'图片公式看不清,看不懂
End Function
-------------------------
总装过程:
定义好一个规定文件,这个文件写每个转换点的曲线类型。
如
0,0
30,3
60,6
...
30,3
60,6
...
把这个文件读到一个数组里。如这里使用一个二维数组 q ,1号元素为角度,2号元素为曲线类型
使用角度循环,按分隔写步长
for 角度=0 to 360 step 360/点数
'查找属于哪一段
for i=1 to 6 '假设共有6段曲线
if 角度>q(i,1) and 角度<q(i+1,1) then
曲线=q(i,2)
exit for
end if
next i
点(新的元素,与循环有关,自己想怎么写 )= 运动(曲线,........)
next 角度
--------------------------
程序比较复杂,再加上看不清图片,没法动手。