度からラジアンへの変換がどのように機能するのかよく知っていますが、まだ問題はあります。問題はその正確さです。度からラジアンへの変換が正確でない
System.Math
の三角関数はラジアンを使用していますが、角度を差し込む三角関数が必要でした。そこで、Cos
、Sin
、Tan
の関数を持つHelper
クラスを作成しました。これらの関数は、度をラジアンに変換し、Math
関数を呼び出すだけです。私はMath.Tan(45)
を使用する場合、たとえば、それは0.999999999989代わりの1を返し
public static class Helper
{
public static double Sin(double degrees) => Math.Sin(degrees * Math.PI/180.0);
public static double Cos(double degrees) => Math.Cos(degrees * Math.PI/180.0);
public static double Tan(double degrees) => Math.Tan(degrees * Math.PI/180.0);
}
しかし、。私の仲間の友達、あなたに私の質問は、これを完全に正確にする方法です。
ありがとうございます。
編集: 私は、小さな誤りがあり、それらを取り除くことは不可能であることを理解します。私が正確に知りたいのは、必要な金額で値を四捨五入する方法です(それほど多すぎず、少なすぎず)ので、とにかく動作します。
EDIT2:
私はコンストラクタを以下ました私のLine
クラスの三角法を必要とする: コンテキストので、ここでそれは、この質問で非常に重要である
public Line(Vector2 beginning, Vector2 end)
{
this.beginning = beginning;
this.end = end;
this.direction = 180.0 * Math.Atan(end.Y - beginning.Y/end.X - beginning.X)/Math.PI;
this.slope = Helper.Tan(direction);
this.length = Helper.DistanceBetweenTwoPoints(beginning, end);
this.offset = beginning.X;
}
問題はどこのラインで発生しますスロープの値を代入します。線形代数を使ってこの直線上にポイントがあるかどうかを確認する必要があります。
公開:Vector2
は、double x
とdouble y
の構造です。それで全部です。
私はいつもエラーがあることを知っており、なぜ私も知っています。たぶん私は間違った方法で私の質問をした – huB1erTi2
@ huB1erTi2:答えを少し拡張しました。これはあなたが意味することですか? –
まあ、私は** total **の精度が必要でしたが、不可能であることを知っています。本当に必要なのは値を丸める便利な方法ですが、それほど多くはありません。 – huB1erTi2