我是一个有行星和船只的游戏。我已成功计算出行星路径,船只路径(简单!),但现在我试图计算出满足船舶和行星的路径。 我有很多变量(角度,速度等等),因此行星位置的结果是:
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,[...]
我试图考虑因素,爆炸,将鼻窦转化为余弦...但我未能解决这个数学系统。你能救我吗?
问候。