Trig三角形角度

时间:2010-11-23 08:51:23

标签: c# trigonometry

我有一个起点和终点。我想弄清楚我有这个似乎有用的公式的角度

double dx = end.X - start.X;
double dy = end.Y - start.Y;

double degrees = Math.Acos((-Math.Pow(dy, 2) + Math.Pow(dx, 2) + Math.Pow(dx, 2)) / (2 * Math.Pow(dx, 2)));
degrees = degrees * 180 / Math.PI;

然后我想取角度并延长线的长度。到目前为止我有这个

end.Y = (start.Y + (len * Math.Sin(angle)));
end.X = (start.X + (len * Math.Cos(angle)));

现在这不能给我正确的价值。

白色是原始线,红色是延伸

white is original line and red is the extending

我在做什么wro

3 个答案:

答案 0 :(得分:1)

这就是我在代码中的意思:

double dx = end.X - start.X;
double dy = end.Y - start.Y;

double dlen = Math.Sqrt(dx * dx + dy * dy);

dx = dx / dlen;
dy = dy / dlen;

end.X = start.X + (dx * len);
end.Y = start.Y + (dy * len);

答案 1 :(得分:0)

如果你只想继续你的行,首先你必须找到定义你的行的功能。

这是一条“简单”的线......它的功能是f(x)= ax + b。找一个和b。

找到:

a = (start.y - end.y) / (start.x - end.x)
// easy, isn't it ?

找到b:

b = (start.y) - (a * start.x)
// you can check switching "start" by "end"

没有处理角度,cosinus或鼻窦......

再见

答案 2 :(得分:0)

如果你没有斜边(你不需要),你应该使用切线触发功能 像

  double rads = Math.Atan(dy/dx);

你的学位计算很复杂,尽管我的方法是跟踪象限。请参阅:http://www.mathwizz.com/algebra/help/help29.htm