找回密码
 点一下
查看: 1664|回复: 23

求各位jass神指点,怎么做一个求合力(速度)的函数

[复制链接]
发表于 2012-2-4 16:10:50 | 显示全部楼层 |阅读模式
最近想搞个物理系统,我是用T做的,但是数学公式这一块每次都得复制粘贴,严重影响效率。
我现在有个碰撞问题,要用到向量求碰撞后的速度,但是jass实在是不会。
能不能贴个短短的能随时调用的函数出来,然后每当需要计算的时候只用输入A角度A速度,B角度B速度,就会出现合角度C,合速度C呢?
还有我不太明白魔兽的角度制,怎么把面向角度、两点之间角度之类的都转换成可以计量的0~360的实数呢....
我数学没学好对不起初中老师.........
发表于 2012-2-4 16:35:17 | 显示全部楼层
看糊涂了……标题是求合力,那也就是用到三角函数或者更复杂的东西,然后进来发现变成了碰撞……动能定理和动量定理么……看完后仍旧不知道lz要的是啥……
只是来吐槽的,完全不会jass的糟糕的猫科动物路过……
回复

使用道具 举报

 楼主| 发表于 2012-2-4 16:44:35 | 显示全部楼层

回 lo 的帖子

lo:看糊涂了……标题是求合力,那也就是用到三角函数或者更复杂的东西,然后进来发现变成了碰撞……动能定理和动量定理么……看完后仍旧不知道lz要的是啥……
只是来吐槽的,完全不会jass的糟糕的猫科动物路过…… (2012-02-04 16:35)
其实所谓力也是通过速度表现出来的....我想说两个物体碰撞,根据反作用力,两个物体的运动状态改变...
其实实际情况是,在两个物体质量相当(方便计算....)的情况下碰撞,已知两个物体的运动方向和速度,求其中一个物体的新速度和新方向,
回复

使用道具 举报

发表于 2012-2-4 18:46:34 | 显示全部楼层
native Deg2Rad  takes real degrees returns real
角度转弧度
native Rad2Deg  takes real radians returns real
弧度转角度
回复

使用道具 举报

发表于 2012-2-4 19:51:03 | 显示全部楼层
至于求向量貌似没那么简单,一是是否弹性碰撞不知道,二是不知道碰撞角度……
回复

使用道具 举报

发表于 2012-2-4 20:44:16 | 显示全部楼层
= =
我只是知道希瓦这个混蛋又穿马甲了。。。
回复

使用道具 举报

发表于 2012-2-4 21:05:17 | 显示全部楼层
我只想说,lz物理糟透了……物质是宏观运动的,没有不运动的物质,物质也时刻受力的作用,但受力不是物体运动的原因。所谓速度也是指相对速度,选用不同的参照物,物体的运动速度也不同,因此速度也不是物体受力的表现形式……
扯得有点远……
好吧……物体的碰撞有弹性碰撞和非弹性碰撞两种,弹性碰撞可以使用动能定理,而非弹性碰撞有能量损失,动能可能转换成其他形式,只能用动量定理了……发现物理忘掉不少……
回复

使用道具 举报

发表于 2012-2-4 23:25:03 | 显示全部楼层
首先推荐LZ采用180°制来制作~
没记错的话魔兽中只有面向角度是360°制的,而且180°制比360°制计算方面稍方便点(个人感觉)
其实实际情况是,在两个物体质量相当(方便计算....)的情况下碰撞,已知两个物体的运动方向和速度,求其中一个物体的新速度和新方向
话说这个……我之前做弹球的时候遇到的问题。。
不过我没完全解决呢……而且估计,以我这点水平也解决不掉。。

以下没有经过公示推算,并且我不是学物理的所以可能有些地方讲的不对,LZ可以自己推算下~
如果LZ打算将所有物体当做质点来计算的话,弹性碰撞的情况下应该只要交换下双方的速度和运动方向即可;
非弹性的情况下就要用动能和动量守恒算了,为了之后求新角度,这里应该用x和y分量来计算比较好,至于具体损失了多少能量,个人觉得可以设置一个百分比参数,每次碰撞就损失(1 - 参数)的能量,比如参数为90%,那么将动能和乘以90%后,相当于损失10%能量

如果不是质点……
这个还要考虑碰撞面的。。
无标题123.png
如上图,即便是碰撞物的质量、速度、方向都不变,碰撞面不同的话得到的结果也不同。。
对于碰撞面的判断我是做出来了,但是我做的处理是将一个物体当做固体,仅仅改变另一个物体的运动方向……
回复

使用道具 举报

 楼主| 发表于 2012-2-5 04:33:52 | 显示全部楼层

回 lo 的帖子

lo:我只想说,lz物理糟透了……物质是宏观运动的,没有不运动的物质,物质也时刻受力的作用,但受力不是物体运动的原因。所谓速度也是指相对速度,选用不同的参照物,物体的运动速度也不同,因此速度也不是物体受力的表现形式……
扯得有点远……
好吧……物体的碰撞有弹性碰撞和非弹 .. (2012-02-04 21:05)
没办法嘛,小白我为读文科生的某人.....
根据前面大大的提示和度娘帮助,我最近又增加了新属性来解决问题:质量和摩擦力,碰撞是球形的不是质点,并设定为完全弹性碰撞。
根据度娘的公式就是这个样子的:未碰撞前,质量m1的加速度为a1的方向为l1的物体与m2a2,完全弹性碰撞动能守恒,物体2获得一个l1方向的(m1*a1/m2)的分加速度设为a3。然后用平面向量来求合加速,设角度与0度的夹角b,l1方向的分加速度的就表示为向量(cos l1*a3,sin l1*a3),原加速度就表示为(cos l2*a2,sin l2*a2).然后合加速度就为(cos l1*a3+cos l2*a2,sin l1*a3 + sin L2*a2)。然后由勾股定理求得合加速度大小,用三角函数求得与0度夹角....最后用摩擦力来让物体停下来。
在我能理解的层次中大概就是这么个关系吧
回复

使用道具 举报

发表于 2012-2-5 06:40:16 | 显示全部楼层
合速度?不是刚性?参数少个质量,要假设质量相等么?

内容来自[手机版]
回复

使用道具 举报

 楼主| 发表于 2012-2-5 07:32:11 | 显示全部楼层
还有一个问题想请教,atan函数返回值是-90度~90度,这个是怎么回事啊。我这个角度值始终没米恩白。
回复

使用道具 举报

发表于 2012-2-5 07:34:57 | 显示全部楼层
参考关键词:动量守衡,极坐标系转换平面直角坐标系,矢量运算。

内容来自[手机版]
回复

使用道具 举报

发表于 2012-2-5 07:41:13 | 显示全部楼层
因为tan(A)=tan(A+180),所以arctan的值域就只有一半了…

内容来自[手机版]
回复

使用道具 举报

发表于 2012-2-5 07:43:12 | 显示全部楼层
需要判断象限才能知道在哪一半

内容来自[手机版]
回复

使用道具 举报

 楼主| 发表于 2012-2-5 11:44:26 | 显示全部楼层

回 Conflux 的帖子

Conflux:需要判断象限才能知道在哪一半

内容来自[手机版] (2012-02-05 07:43)
放弃三角函数来求了。
现在正在构思极坐标,似乎这种方法更好啊,虽然排泄变态了点,但是不用考虑神马角度制转换了,话说两个点的角度是0~360还是±180啊....
回复

使用道具 举报

发表于 2012-2-5 12:06:19 | 显示全部楼层
起床了... 发现自己的回复有点驴唇不对马嘴哦...
嗯 手机看帖各种迷糊
===分割线===

起初看到楼主所说的合速度... 以为是两块飞行的橡皮泥 吧唧撞在一起以后一起飞的场面。但看后面的发现好像不是橡皮泥???

那就是7楼所说的刚性碰撞咯?就是像台球一样的东西(忽略摩擦),需要考虑碰撞面
未命名.GIF
碰撞一瞬间,无法捕捉,只能计算当时的状况
需要的参数包括"碰撞前"任意时刻两球的半径、位置、速度矢量,然后计算出碰撞面的角度来...
不了解楼主的系统捕捉这些东西方便不... 如果不方便的话就当是质点也挺好
回复

使用道具 举报

发表于 2012-2-5 19:18:44 | 显示全部楼层
魔兽做不到那样的精确的,魔兽里用触发移动单位能是0.01秒移动一次,所以捕捉两球碰撞不是两球心的距离等于半径之和,而是小于等于半径之和,所以做不出很精确的东西……另外,如果不是竖直平面的,果断还是直接获取点到点的角度比较省事……如果是弹性碰撞的话,应该是动量守恒的,即:碰撞前后,两球的质量和速度的积相等。具体算式都不知道怎么列了,好久没接触了……
回复

使用道具 举报

发表于 2012-2-5 20:52:19 | 显示全部楼层
总算找到了……
http://yukimomo.iteye.com/blog/1312076
这个是计算方法,看起来有压力……忘掉好久的物理了……

沉滞的剑:

没办法嘛,小白我为读文科生的某人.....
.......
突然很想吐槽这段……猫咪帖子的前面一段其实根本就不是什么物理……
回复

使用道具 举报

发表于 2012-2-5 21:55:44 | 显示全部楼层
沉滞的剑:……话说两个点的角度是0~360还是±180啊.... (2012-02-05 11:44)
两点角度是180°制

LZ可以自测的~
用实数变量记录,然后对玩家一显示文本,转换该实数为字符串
回复

使用道具 举报

发表于 2012-2-6 03:27:44 | 显示全部楼层

回 lo 的帖子

lo:魔兽做不到那样的精确的,魔兽里用触发移动单位能是0.01秒移动一次,所以捕捉两球碰撞不是两球心的距离等于半径之和,而是小于等于半径之和,所以做不出很精确的东西……另外,如果不是竖直平面的,果断还是直接获取点到点的角度比较省事……如果是弹性碰撞的话,应该是动量守恒的 .. (2012-02-05 19:18)
嗯 但是知道位置速度是可以计算出“两球心的距离等于半径之和”时,球心连线的角度的。靠“捕捉”本来就不可能
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-25 21:47 , Processed in 0.161990 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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