坐标(x,y)的指数减少

时间:2015-01-30 03:21:53

标签: java math coordinates exponential

我计划从原点(0,0)开始飞行气泡并跟踪路径,如下所示。但路径不是那么顺利。我可以看到y轴需要在Y轴上呈指数增长直到峰值并且它必须呈指数减小。您可以帮忙纠正以下代码,以获得这样的路径。

enter image description here

代码:

private void createBubbleForBurst() { 

    int coordCount= 0;  
    float tempRowCoord = 0;
    float tempColCoord = 0;

    //Q1 side Bubbles
    while (!Q1BubbleCoordinatesDone){  
        if (coordCount<200){
            tempColCoord = tempColCoord - colMovementIdx; 
            tempRowCoord = tempRowCoord + rowMovementIdx;
        }else{  
            tempColCoord = tempColCoord - colMovementIdx - 0.3f; 
            tempRowCoord = tempRowCoord - rowMovementIdx + 0.3f;
            if(coordCount>320){
                Q1BubbleCoordinatesDone =true;
            }
        }  
        coordCount++;
        Bubble b = new Bubble(BURST_BALL_WHITE,tempColCoord,tempRowCoord);
        bubbleList.add(b); 
    } 

}

使用此代码,我可以获得如下所示的路径

enter image description here

1 个答案:

答案 0 :(得分:2)

您的代码存在的问题是您没有跟踪速度。重力作用意味着物体随着时间的推移而向地面加速。

private double height;
private double velocity;
static private double GRAVITY = -10.0;

public void tick(double elapsedTime) {
    velocity += gravity * elapsedTime;
    height += velocity * elapsedTime;
    if (height < 0)
        height = 0;
}

这将为您提供重力下运动的近似值(随着刻度之间的经过时间增加,精度会降低)。为简单起见,我忽略了水平移动,但您可以使用类似的技术来实现拖动。如果需要,很难从你的问题中判断出来。如果没有那么水平速度是恒定的。