下面是引用 tk7545 于 2010-03-19 16:30 发表的 :
谢谢大大 我只会用一点VB6
我有尝试要把大大之前的那个专案改成两个转轴 但不知该如何下手
如果是这样
参考点该怎么设呢?
或许我对VB没有很熟 所以就...觉得很困难
有规定一定要 VB6 吗?
很多程式语言其实都差不多,语法不太相同罢了
原理还是像个大铁块不变
两个转轴就等于两个以上的参考点
参考点即为某个图形的,例如说,椭圆的原点、圆形的原点、抛物线的原点、不规则形的原点
既然两个以上,就考虑看看要不要用阵列来储存
之前那个 Pos.txt 档案可以设定成 Pos[1].txt Pos[2].txt
每个 INDEX都有不同的系统
可以把每个系统当作一个阵列中的元素来处理
例如可以在 Pos[X].txt 开头写一些资讯,代表图形形状、一些半长轴(a)、半短轴(b)、半焦距(c)、或是每个点的座标 (Position)
因为以上次的专案来说,右边有三个圆形
圆形是不可以用点来描述的,因此要以圆形的公式来绘图并计算
圆形是椭圆的特例嘛,(X-h)^2 + (Y-k)^2 = r^2 原点 (h,k) 半径 r
至于一些特殊的形状,只要程式有提供,就要加入该图形的相关公式与函数...
上次的只有设左边的系统,没有右边三个圆形的系统
因此可以再加三个系统,都绕同个系统原点,也就是三个圆外切的圆的圆心
然后半径设一设
Timer 系统与精准度方面,有两种办法
一种是建立 Timer 的群组,就是 Load Timer(Index) 载入很多 Timer 去驱动每个系统
一种是只有一个 Timer,并且使 Timer 精准度极高,以回圈方式处理不同 INDEX 之所有系统资料:
旋转、点数值重新设定、重新绘图、预测系统路径并检查是否相切或未来何时会相切
上次跟你讨论过 许多3D 游戏,为何有时使用一些大炮、手榴弹使人炸飞后,如果当速度超过精准度之预测外
就会造成来不及预测,两个模组以上已经重叠,造成第一人称视角振动...
由于作用力与反作用力,速度撞到墙壁后卡住后,冲量之数值减少不多,而模组外围又造成对墙壁作不同方向之反作用力
我猜测应该是使用 Timer 精准度极高的方法,所以造成画面震动
设计这种东西...如果不用偷吃步,
如果能正确把图形之数学公式与物理运动性质导出来
你就可以去写绘图软体了!
上次的专案完全没运用到物理性质
更进一步的话还要考虑相切碰撞、摩擦力与加速度、系统之质量、转轴力矩...
我建议先把程式的程序与函数、变数、变数名称 要取好
程式的程序与函数很像 公式
变数很像公式中的元素
这等于是把数学、物理、程式要熟悉运用的课程!连我都觉得有点困难的说~
先把公式还有基础性质弄清楚再来写程式吧
记得一定要拿计算纸!这将比想像中的复杂许多...
光上次我就用了差不多 满满五张来导一些平常生活中几乎不会使用到的公式
但对于程式应用却是无比重要...
祝你设计顺利~