【发布时间】:2017-08-23 09:23:52
【问题描述】:
我很清楚从度数到弧度的转换是如何工作的,但我仍然有一个问题。问题在于它的准确性。
您可能知道System.Math 库中的三角函数使用弧度,但我需要三角函数,您可以在其中插入度数。所以我用Cos、Sin 和Tan 函数创建了一个Helper 类,它只会将它们内部的度数转换为弧度并调用它们的Math 函数。
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);
}
但是,例如,当我使用 Math.Tan(45) 时,它返回 0.999999999989 而不是 1。我的朋友们,我的问题是如何做到这一点完全准确。
提前致谢。
编辑: 我明白,会有一些小错误,而且不可能摆脱它们。我真正想知道的是如何将值四舍五入所需的数量(不要太多,也不要太少),这样它仍然可以工作。
编辑2: 上下文在这个问题中非常重要,所以这里是:
我的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 的结构。就是这样。
【问题讨论】:
标签: c# trigonometry