ImageViewを円形のパスで移動する必要があります。ImageViewを円形のパスに移動
プログラムの仕様:
1)各ImageViewのは、ターゲットが
- 現在の座標
- が含まれている流星クラスを持っていますおよび機能
2)ターゲット座標を設定すると、ImageViewが正しい速度で移動します
3)使用している円の軌道の方程式はk + sqrt(-h^2 + 2 * h * (下半分)
以下のコードです。円の上半分の目標座標を計算します。
if(meteor.getXCoord() == meteor.getTargetCoordsX() && meteor.getXCoord() != meteor.getH() + meteor.getR()) {
if (meteor.getYCoord() == meteor.getTargetCoordsY()) {
/*
b+sqrt(-a^2+2*a*x+r^2-x^2), b-sqrt(-a^2+2*a*x+r^2-x^2)
*/
meteor.setDeltaX(meteor.getSpeedX() + meteor.getXCoord());
meteor.setDeltaY(meteor.getSpeedY() + meteor.getYCoord());
meteor.setTargetCoordsX(meteor.getDeltaX());
//where target coordinate y is set *****
meteor.setTargetCoordY((meteor.getK() + (float) Math.sqrt(-1 * meteor.getH() * meteor.getH() + 2 * meteor.getH() * meteor.getDeltaX() + meteor.getR() * meteor.getR() - meteor.getDeltaX() * meteor.getDeltaX())));
//bottom half
}
}
私の問題は、最初の実行後にlogcatに従ってターゲット座標yがNaNになります。 また、Log.dに従って、目標座標yを設定するために使用されるすべての値が適切に設定されます。 追加情報:
- TargetCoord yを& xはフロートである
- H、K、およびR
- デルタX & yはフロートが
- 現在の座標のx & yは フロートがフロート
デルタx & yが上記に設定されています。設定に使用される値は、速度と現在の座標です。速度は1ミリ秒で移動したピクセルの数です
また、すべてのmeteor.methodsがテストされ、動作しています。私は問題が目標座標yの計算と関係していると思います。
'sqrt'の引数の値を計算し、' sqrt'の呼び出しの前に負でないかどうかを確認します – MBo
これは否定的です。残念ながら、なぜ私は理解できません。 – holycatcrusher
可能な理由:1)あなたの論理的な間違い2)浮動小数点計算エラーのための非常に小さな負の値 – MBo