如何绘制给定长度和角度的直线?

3

我需要画一条从0,0开始、长度和角度(从顶部视角)已知的直线。目前可以通过给出起点和终点来创建一条线,但是我需要使用角度和长度来代替终点,请帮忙。

以下是代码:

let path = UIBezierPath()
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: 0+10, y: 0+10))

let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = UIColor.blue.cgColor
shapeLayer.lineWidth = 3.0
1个回答

5

有许多方法可以实现这个目标。其中一种方法是从Y轴开始创建一个单位长度的线条。将该线条旋转至所需角度并缩放至所需长度。示例:

let angleInRadians: CGFloat = ...
let length: CGFloat = ...
let path = UIBezierPath()
path.move(to: .zero)
path.addLine(to: CGPoint(x: 0, y: 1))
path.apply(.init(rotationAngle: angleInRadians))
path.apply(.init(scaleX: length, y: length))

另一种方法是直接使用三角函数计算线的非原点端点:
let angleInRadians: CGFloat = ...
let length: CGFloat = ...
let path = UIBezierPath()
path.move(to: .zero)
path.addLine(to: CGPoint(x: -sin(angleInRadians) * length, cos(angleInRadians) * length))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接