以下のコードをより効率的にし、少しクリーンアップするために助けが必要です。
この画像に示されているように、xとyは画面全体の任意の点である可能性があり、角度tを見つけようとしています。ここで行数を減らす方法はありますか?
注:原点は左上隅にあり、右/下に移動すると正の方向に移動します
o := MiddleOfScreenX - x;
a := MiddleOfScreenY - y;
t := Abs(Degrees(ArcTan(o / a)));
if(x > MiddleOfScreenX)then
begin
if(y > MiddleOfScreenY)then
t := 180 + t
else
t := 360 - t;
end
else
if(y > MiddleOfScreenY)then
t := 180 - t;
コードはパスカルですが、同様の構文またはc++またはjavaを使用した他の言語での回答も問題ありません。
:= sets the variable to that value
Abs() result is the absolute of that value (removes negatives)
Degrees() converts from radians to degrees
ArcTan() returns the inverse tan