【问题标题】:How to draw a straight line with the given length and angle?如何绘制具有给定长度和角度的直线?
【发布时间】:2017-06-16 05:52:56
【问题描述】:

我必须从 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

【问题讨论】:

    标签: ios swift uibezierpath drawrect


    【解决方案1】:

    有很多方法可以做到这一点。一种方法是从沿 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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多