绘制给定原点、角度和距离的 CGPoint
Plot a CGPoint given origin, angle and distance
在给定原点、距离和角度时,我无法绘制新的 CGPoint。任务非常简单:我有一条线,上面附有三个编辑手柄 - 两端一个,中间一个。拖动末端手柄时,线会相对于被拖动的手柄移动。该功能运行正常。拖动中心手柄时,两个端点手柄应保持彼此的关系,如下图所示。所以当拖动中心手柄时,其他两个手柄应该随之移动。
这是我当前绘制点的代码:
func pointFromPoint(origin:CGPoint, distance:Double, degrees:Double) -> CGPoint {
var endPoint = CGPoint()
endPoint.x = CGFloat(distance * cos(degrees) + Double(origin.x))
endPoint.y = CGFloat(distance * sin(degrees) + Double(origin.y))
return endPoint
}
使用此功能时,新的 CGPoint 位置似乎落在随机位置。谁能发现我的数学有什么问题?谢谢!
大多数三角函数需要弧度,而不是度数。
此外,正如@Putz1103 指出的那样,您可以使用移动 UITouch
的增量 x
和增量 y
而不是计算端点的新位置基于中心点的移动。
在给定原点、距离和角度时,我无法绘制新的 CGPoint。任务非常简单:我有一条线,上面附有三个编辑手柄 - 两端一个,中间一个。拖动末端手柄时,线会相对于被拖动的手柄移动。该功能运行正常。拖动中心手柄时,两个端点手柄应保持彼此的关系,如下图所示。所以当拖动中心手柄时,其他两个手柄应该随之移动。
这是我当前绘制点的代码:
func pointFromPoint(origin:CGPoint, distance:Double, degrees:Double) -> CGPoint {
var endPoint = CGPoint()
endPoint.x = CGFloat(distance * cos(degrees) + Double(origin.x))
endPoint.y = CGFloat(distance * sin(degrees) + Double(origin.y))
return endPoint
}
使用此功能时,新的 CGPoint 位置似乎落在随机位置。谁能发现我的数学有什么问题?谢谢!
大多数三角函数需要弧度,而不是度数。
此外,正如@Putz1103 指出的那样,您可以使用移动 UITouch
的增量 x
和增量 y
而不是计算端点的新位置基于中心点的移动。