让我先从代码开始.
- (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;
}
Run Code Online (Sandbox Code Playgroud)
根据我的知识,这应该是完美的.如果我调用此代码,它应该返回和x值0以及y值2.
somePoint = [NSPoint pointFromPoint:somePoint withDistance:2 towardAngle:90];
Run Code Online (Sandbox Code Playgroud)
相反,我得到x了1.05和a y的价值1.70.如何根据角度和距离找到x和y坐标?
补充说明:我已经看过math.stackexchange.com,但那里的公式让我想到了这一点.我需要代码,而不是正常的数学,因为我知道我可能会搞砸了.
函数的工作版本接受以度为单位而不是弧度的值,如下所示:
- (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));
}
Run Code Online (Sandbox Code Playgroud)