MySQL-确定运动中对象的位置

时间:2019-02-25 05:33:49

标签: mysql

我已经查了好几个星期了。我没有物理学的背景,希腊语使解释变得非常混乱。

我主要在MySQL中制作游戏,主要是为了应对挑战。这个概念是一个闲置的RPG,有点像在线EVE,但它是完全自动化的...

因此,地图位于3d中,其中x,y,z代表每个尺寸。我有公式可以找到MySQL中两点之间的距离:

(POW((X-@x),2)+POW((Y-@y),2)+POW((Z-@z),2))

如果您将距离除以速度,我们可以获得到达的时间。问题是,如何找出物体在飞行中的位置?

找到两点之间的距离:

create table stars (id int auto_increment primary key, x decimal(65,8),y decimal(65,8), z decimal(65,8));
insert into stars (x,y,z) VALUES ("0","0","0"),("1000.00","3000.00","2500.00");

set @id = 1,
    @x = (select x from stars where id =@id),
    @y = (select y from stars where id =@id),
    @z = (select z from stars where id =@id);
SELECT (POW((X-@x),2)+POW((Y-@y),2)+POW((Z-@z),2)) as distance 
FROM stars where id = 2;

travel_time将是距离/速度。在不考虑加速度或重力的情况下,如何确定物体在飞行中途的位置?

我相信这是公式:

!(https://i.gyazo.com/9f097dc9f13e644a72ec84d8abcd9033.png)!

2 个答案:

答案 0 :(得分:0)

$$ \ Big(\ frac {(1-t)x_1 + tx_2} {2},\ frac {(1-t)y_1 + 2y_2} {2},\ frac {(1-t)z_1 + tz_2} {2} \大) $$

https://math.stackexchange.com/q/3126712/648433

答案 1 :(得分:0)

创建表Test(id整数,x十进制(65,8),y十进制(65,8),z十进制(65,8));

插入Test(id,x,y,z)值(1,0,0,0),(2,1000,2000,3000);

set @id = 1;

设置@x =(从Test中选择x,其中id = @ id);

set @ y =(从Test中选择y,其中id = @ id);

设置@z =(从Test中选择z,其中id = @ id);

set @distance =(选择sqrt((POW((X- @ x),2)+ POW((Y- @ y),2)+ POW((Z- @ z),2))作为距离测试的距离,其中id = 2);

设置@travel_time =(选择@ distance / 100);

设置@t =(选择1 / @ travel_time);

选择(1- @ t) @x + @t x,(1- @ t) @y + @t y,(1- @ t)测试中的 @z + @t z