我有一个起点和终点。我想弄清楚我有这个似乎有用的公式的角度
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)));
现在这不能给我正确的价值。
白色是原始线,红色是延伸
我在做什么wro
答案 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