このコードを使用して、極座標からデカルト座標に、またはその逆に変換します。
final double alpha = Math.atan2(y - originY, x - originX);
final int checkx = originX + (int) (radiusW * (Math.cos(alpha)));
final int checky = originY + (int) (radiusH * (Math.sin(alpha)));
final double newAlpha = Math.atan2(checky - originY, checkx - originX);
double fault = Math.toDegrees(newAlpha) - Math.toDegrees(alpha);
これを使用すると、15度に達する障害が発生しますが、改善できますか?
ありがとう!
編集 :
final double alpha = Math.atan2(y - originY, x - originX);
final double checkx = originX + (radiusW * (Math.cos(alpha)));
final double checky = originY + (radiusH * (Math.sin(alpha)));
final double newAlpha = Math.atan2(checky - originY, checkx - originX);
double fault = Math.toDegrees(newAlpha) - Math.toDegrees(alpha);
それでも同じエラーを試しました...
例えば :
public static void main(String[] args) {
int originY = 700;
int originX = 500;
int radiusW = 500;
int radiusH = 700;
int y = 800;
int x = 600;
final double alpha = Math.atan2(y - originY, x - originX);
final double checkx = originX + (radiusW * (Math.cos(alpha)));
final double checky = originY + (radiusH * (Math.sin(alpha)));
final double newAlpha = Math.atan2(checky - originY, checkx - originX);
System.out.println(Math.toDegrees(newAlpha) - Math.toDegrees(alpha));
}
出力:
9.462322208025618