找回密码
 点一下
查看: 2137|回复: 10

没学过三角函数的我感觉压力很大,想不出定位曲线的方法。

[复制链接]
发表于 2010-7-8 12:24:06 | 显示全部楼层 |阅读模式
想做一个波浪形的冲击波。

但是SINCOS什么的,不懂。
发表于 2010-7-8 12:31:03 | 显示全部楼层
那就去学吧,还算简单。
而且以后一定用得上。
为以后的学习打基础吧。
回复

使用道具 举报

发表于 2010-7-8 23:36:54 | 显示全部楼层
其实要快速理解的话可以查找一张图片
看到直角坐标系上的图形特征LZ应该就可以理解的了
利用变量递增达到类似于循环整数的效果 也就相当于往X轴的右方推进

波浪型的话,主要应该是利用这个过程里面正负的变化吧,利用这样的话那一条a为负值的二次曲线就很类似于一个周期为360度的正弦曲线了

好像话多了....
回复

使用道具 举报

发表于 2010-7-8 23:38:17 | 显示全部楼层
虽然不想说....但是U9有一个不晓得从哪里转载来的帖子 有各种图形或曲线的制作方法 包括T跟J两种 不过具体位置忘记了
回复

使用道具 举报

发表于 2010-7-9 00:20:28 | 显示全部楼层
可以用运动的合成,冲击波事件是施法单位到点目标。这确定了一条直线,
使单位沿着这条直线运动调用函数这个函数
function straightline txxxx
local unit a=Loadxxx
local unit b=loadxxx
local real x=GetUnitX(a)
local real y=GetUnitY(a)
local real x1=GetUnitX(b)
local real y1=GetUnitY(b)
local real angle=Atan2((y1-y),(x1-x))//这个得到两点间的角度,(弧度制)
call SetUnitX(a,x+dist*Cos(angle))
call SetUnitY(a,y+dist*Sin(angle))//dist参数决定移动的快慢,单计时器时间一定的时候
call savexxxx   a
call savexxxx   b
set a=null
set b=null
set tm=null
endfunction
这个函数用,用计时器运行,但是计时器没有参数传递,需要用哈希表。。。。。
然后在垂直于这条线的方向上,,,用计时器运行正玄函数就可以了,正玄函数也可以写在上面的函数上。。。。。。
回复

使用道具 举报

发表于 2010-7-9 00:23:02 | 显示全部楼层
或曲线的制作方法。。。。。。。。。。就算知道曲线方程也很难搞。。。。。
回复

使用道具 举报

发表于 2010-7-9 00:33:49 | 显示全部楼层
不用运动合成的话,不知道可不可以用向量变换,,,,因为那条打斜的正弦函数上面的点就可以表示了。。。。。。。。我翻一下线代课本。。。
回复

使用道具 举报

发表于 2010-7-9 19:26:40 | 显示全部楼层
。。。向量
回复

使用道具 举报

发表于 2010-7-9 20:43:56 | 显示全部楼层
function straightline txxxx
local unit a=Loadxxx
local unit b=loadxxx
local real x=GetUnitX(a)
local real y=GetUnitY(a)
local real x1=GetUnitX(b)
local real y1=GetUnitY(b)
local real angle=Atan2((y1-y),(x1-x))//这个得到两点间的角度,(弧度制)
local real angle1=angle+bj_PI/2//逆时针转了90度方向就变为垂直了,然后需要在这个方向上作简谐运动
call SetUnitX(a,x+dist*Cos(angle))
call SetUnitY(a,y+dist*Sin(angle))//dist参数决定移动的快慢,单计时器时间一定的时候
call setUnitX(a,x+A*Sin(wt+c)*Cos(angle1))
call setUnitY(a,y+A*Sin(wt+c)*Sin(angle1))//不知道对不对,,这个的意思是在angle1这个方向上移动A*Sin(wt+c)w和A需要慢慢尝试,它看上去是振幅但是我不确定。。。。因为没有试过。。。
call savexxxx   a
call savexxxx   b
set a=null
set b=null
set tm=null
endfunction
这个函数用,用计时器运行,但是计时器没有参数传递,需要用哈希表。。。。。
然后在垂直于这条线的方向上,,,用计时器运行正玄函数就可以了,正玄函数也可以写在上面的函数上。。。。。。测试的时候我通常都是用0.01秒的计时器,,,,还有。。设定好边界,不然出了地图就可能死机。。。。
回复

使用道具 举报

发表于 2010-7-10 00:10:38 | 显示全部楼层
坐标轴旋转公式(弧度制,a为旋转角度):
x` = x * Cos(a) - y * Sin(a)
y` = x * Sin(a) + y * Cos(a)
比如现在的正弦函数是:
x = t
y = Sin(t)
那么套用这个公式,
x` = t * Cos(a) - Sin(t) * Sin(a)
y` = t * Sin(a) + Sin(t) * Cos(a)
(t为参数,a为释放者和释放点之间的角度)
写成假死码就是

[jass]
function a takes nothing returns nothing
local unit u = xxxx
local real t = xxxx
local real a = xxxx
.........
call SetUnitX(u, t * Cos(a) - Sin(t) * Sin(a))
call SetUnitY(u, t * Sin(a) + Sin(t) * Cos(a))
........
[/jass]
回复

使用道具 举报

发表于 2010-7-10 01:31:10 | 显示全部楼层
哈,楼上正解,,昨晚翻了线代,是这样。。。。。我还挂了。。。草
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-30 00:18 , Processed in 0.034092 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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