0
私は数学的な道(sin波)をある座標位置から別の座標位置に翻訳しようとしています。しかし、私は愚かか何かが間違っています。グラフィックスオブジェクトを変更せずにあるポイントから別のポイントに変換する方法はありますか?
私は80と100は、私は私のオブジェクトを翻訳したいために、新しい座標位置しているこの
// Translate
for (int i=0; i < 300; i++) {
coordinatesX[i] = coordinatesX[i] + (80 - coordinatesX[i]);
coordinatesY[i] = coordinatesY[i] + (100 - coordinatesY[i]);
}
をしようと試みました。私はこの
// Translate
for (int i=0; i < 300; i++) {
coordinatesX[i] = coordinatesX[i] + 80;
coordinatesY[i] = coordinatesY[i] + 100;
}
をしようと試みた。しかし、すべては、部分的に波がある角度を持っている場合にのみ機能または動作しているようです ? 私は学校で数学が欠けていたと思います。私はAndEngineを使ってJavaでプログラミングしています。このelementar関数にいくつかのショートカットがあるかもしれません。
全体コード:
// define newpath
float[] coordinatesX = new float[300];
float[] coordinatesY = new float[300];
// wave
for (int i=0; i<300; i++){
coordinatesX[i] = i;
coordinatesY[i] = (float)(20 * (Math.sin((-0.10 * coordinatesX[i]))));
System.out.println(coordinatesX[i]);
System.out.println(coordinatesY[i]);
//coordinatesX[i] = coordinatesX[i] + centerX;
//coordinatesY[i] = coordinatesX[i]+centerY;
}
// ROtate
for (int i=0; i<300; i++){
coordinatesX[i] = ((coordinatesX[i] * (float)Math.cos(-10)) - (coordinatesY[i] * (float)Math.sin(-10))) + coordinatesX[i];
coordinatesY[i] = (coordinatesX[i] * (float)Math.sin(-10)) + (coordinatesY[i] * (float)Math.cos(-10)) + coordinatesY[i];
}
// Translate
for (int i=0; i < 300; i++) {
coordinatesX[i] = coordinatesX[i]+ (200);
coordinatesY[i] = coordinatesY[i] + (300);
}
ああ、ありがとうございます。しかし、角度が45度を超えると、波の歪みがあるようです。回転機能にも間違いがありますか? –
「45以上」?私はそれが何を意味するのか分かりません。 "回転"?ここで回転はありません。翻訳だけです。行列の乗算を使用してローテーションを行います(例:http://en.wikipedia.org/wiki/Rotation_matrix)。私はあなたのアップヴォートをあなたのおかげで好むでしょう。 – duffymo