这是一个 iOS 问题,因为我目前无法进行坐标几何。给定一个 CGPoint 作为线将通过的一个点和一个以弧度为单位的角度。如何绘制一条延伸到屏幕边界的线(无限线)?
我正在使用 Quartz2d 来执行此操作,并且用于创建线的 API 仅限于两个点作为输入。那么如何将一个点和角度转换为 iOS 设备边界上的两个点呢?
这是一个 iOS 问题,因为我目前无法进行坐标几何。给定一个 CGPoint 作为线将通过的一个点和一个以弧度为单位的角度。如何绘制一条延伸到屏幕边界的线(无限线)?
我正在使用 Quartz2d 来执行此操作,并且用于创建线的 API 仅限于两个点作为输入。那么如何将一个点和角度转换为 iOS 设备边界上的两个点呢?
这从简单的三角函数开始。您需要计算第二个点的 x 和 y 坐标。以 0,0 为原点,将直线向右视为 0 度,逆时针方向(有些人为逆时针方向),您可以:
double angle = ... // angle in radians
double newX = cos(angle);
double newY = sin(angle);
这假定半径为 1。每次乘以所需的半径。选择一个大于屏幕的数字,例如 iPhone 为 480 或 iPad 为 1024(假设您想要点而不是像素)。
然后加上原点得到最终点。
假设你有CGPoint start
、double angle
和 一个长度,你的最后一点是:
double endX = cos(angle) * length + start.x;
double endY = sin(angle) * length + start.y;
CGPoint end = CGPointMake(endX, endY);
如果终点不在屏幕上也没关系。