【发布时间】:2010-11-03 09:35:08
【问题描述】:
请帮助计算斜率的算法 所以我们有一个笛卡尔坐标系。 X 就在 Y 的顶部。有一条线穿过坐标中心。 需要确定相对于轴 OX 的角度。
这就是我正在做的事情
- 某些函数转移到原点(顶行)和行尾
- 确定 dx, dy
- Hildren 在 atan2 (dy, dx) 中放出两个参数
- 以弧度返回结果。
但是!我 atan2 只能在 180 度范围内工作。 180后往另一个方向走。
所以问题是:找到角度的正确算法是什么?我需要采用 dy、dx 的大小吗?如何计算所有 360 度及更多的反正切?我很高兴听到特定的算法或代码片段。 谢谢!
static inline CGFloat angleBetweenLinesInRadians2 (CGPoint line1Start, CGPoint line1End)
{
CGFloat dx = 0, dy = 0;
dx = line1End.x - line1Start.x; / / whether to do fabs (line1End.x - line1Start.x);
dy = line1End.y - line1Start.y;
CGFloat rads = atan2 (dy, dx); / / whether to do fabs (rads)
return rads;
}
【问题讨论】: