让我先从代码开始。
- (NSPoint*) pointFromPoint:(NSPoint*)point withDistance:(float)distance towardAngle:(float)angle; {
float newX = distance * cos(angle);
float newY = distance * sin(angle);
NSPoint * anNSPoint;
anNSPoint.x = newX;
anNSPoint.y = newY;
return thePoint;
}
根据我的知识,这个 应该是完美的。如果我调用此代码,则应该返回x
0
的值和y
2
的值。
somePoint = [NSPoint pointFromPoint:somePoint withDistance:2 towardAngle:90];
相反,我得到x
的值1.05
和y
的{{1}}。如何根据角度和距离找到1.70
和x
坐标?
补充说明:我查看了math.stackexchange.com,但那里的公式让我想到了这一点。我需要代码,而不是正常的数学,因为我知道我可能会搞砸了。
答案 0 :(得分:5)
函数的工作版本接受以度为单位而不是弧度的值,如下所示:
- (NSPoint)pointFromPoint:(NSPoint)origin withDistance:(float)distance towardAngle:(float)angle
{
double radAngle = angle * M_PI / 180.0;
return NSMakePoint(origin.x + distance * cos(radAngle), point.y + distance * sin(radAngle));
}
答案 1 :(得分:4)
你的问题是你以度为单位给出角度(例如90
),但是数学是以弧度为单位的。尝试将90
替换为M_PI_2