路径计算

时间:2017-05-04 12:36:00

标签: javascript math

我是一个有行星和船只的游戏。我已成功计算出行星路径,船只路径(简单!),但现在我试图计算出满足船舶和行星的路径。 我有很多变量(角度,速度等等),因此行星位置的结果是:

Ppx是行星位置X,Ppy行星位置Y,Ppz行星位置Z。

startX是行星的初始位置X,[...]

speedPlanetMillis是行星的速度

angleStartX是时间0和星球之间的角度

Ppx = (startX*(Math.cos(Decimals(now * speedPlanetMillis) * 2 * Math.PI)) +  startY*Math.sin(Decimals(now * speedPlanetMillis) * 2 * Math.PI))*(Math.cos(angleStartZ)*Math.cos(angleStartY)) +  (startX*(-1*Math.sin(Decimals(now * speedPlanetMillis) * 2 * Math.PI))+startY*Math.cos(Decimals(now * speedPlanetMillis) * 2 * Math.PI))*(Math.sin(angleStartZ)*Math.cos(angleStartX) - Math.cos(angleStartZ)*Math.sin(angleStartY)*Math.sin(angleStartX)) + startZ*(Math.sin(angleStartZ)*Math.sin(angleStartX) + Math.cos(angleStartZ)*Math.sin(angleStartY)*Math.cos(angleStartX));

Ppy = (startX*(Math.cos(Decimals(now * speedPlanetMillis) * 2 * Math.PI)) +  startY*Math.sin(Decimals(now * speedPlanetMillis) * 2 * Math.PI))*(-1*Math.sin(angleStartZ)*Math.cos(angleStartY))+(startX*(-1*Math.sin(Decimals(now * speedPlanetMillis) * 2 * Math.PI))+startY*Math.cos(Decimals(now * speedPlanetMillis) * 2 * Math.PI))*(Math.cos(angleStartZ)*Math.cos(angleStartX)+Math.sin(angleStartZ)*Math.sin(angleStartY)*Math.sin(angleStartX))+startZ*(Math.cos(angleStartZ)*Math.sin(angleStartX)+Math.sin(angleStartZ)*Math.sin(angleStartY)*Math.cos(angleStartX));

Ppz = (startX*(Math.cos(Decimals(now * speedPlanetMillis) * 2 * Math.PI)) +  startY*Math.sin(Decimals(now * speedPlanetMillis) * 2 * Math.PI)) * (-1*Math.sin(angleStartY)) + (startX*(-1*Math.sin(Decimals(now * speedPlanetMillis) * 2 * Math.PI))+startY*Math.cos(Decimals(now * speedPlanetMillis) * 2 * Math.PI)) * (-1*Math.cos(angleStartY) * Math.sin(angleStartX)) + startZ * (Math.cos(angleStartY) * Math.cos(angleStartX));

船舶路径的公式更容易,因为它是一个权利:

Pvx是船舶位置X,[...]

Pvx = now * speedShipMillis * (Math.abs(shipDestinationX - shipStartX) / (Math.abs(shipDestinationX - shipStartX) + Math.abs(shipDestinationY - shipStartY) + Math.abs(shipDestinationZ - shipStartZ))) + shipStartX;

Pvy = now * speedShipMillis * (Math.abs(shipDestinationY - shipStartY) / (Math.abs(shipDestinationX - shipStartX) + Math.abs(shipDestinationY - shipStartY) + Math.abs(shipDestinationZ - shipStartZ))) + shipStartY;

Pvz = now * speedShipMillis * (Math.abs(shipDestinationZ - shipStartZ) / (Math.abs(shipDestinationX - shipStartX) + Math.abs(shipDestinationY - shipStartY) + Math.abs(shipDestinationZ - shipStartZ))) + shipStartZ;

所以我试着找到"现在"当Pvx = Ppx时,Pvy = Ppy,Pvz = Ppz。此时,shipDestinationX = Ppx,[...]

我试图考虑因素,爆炸,将鼻窦转化为余弦...但我未能解决这个数学系统。你能救我吗?

问候。

0 个答案:

没有答案