7

这是一个 iOS 问题,因为我目前无法进行坐标几何。给定一个 CGPoint 作为线将通过的一个点和一个以弧度为单位的角度。如何绘制一条延伸到屏幕边界的线(无限线)?

我正在使用 Quartz2d 来执行此操作,并且用于创建线的 API 仅限于两个点作为输入。那么如何将一个点和角度转换为 iOS 设备边界上的两个点呢?

4

1 回答 1

9

这从简单的三角函数开始。您需要计算第二个点的 x 和 y 坐标。以 0,0 为原点,将直线向右视为 0 度,逆时针方向(有些人为逆时针方向),您可以:

double angle = ... // angle in radians
double newX = cos(angle);
double newY = sin(angle);

这假定半径为 1。每次乘以所需的半径。选择一个大于屏幕的数字,例如 iPhone 为 480 或 iPad 为 1024(假设您想要点而不是像素)。

然后加上原点得到最终点。

假设你有CGPoint startdouble angle和 一个长度,你的最后一点是:

double endX = cos(angle) * length + start.x;
double endY = sin(angle) * length + start.y;
CGPoint end = CGPointMake(endX, endY);

如果终点不在屏幕上也没关系。

于 2013-03-14T22:06:10.243 回答