2017-06-16 9 views
1

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 

答えて

2

これを行うには多くの方法があります。 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)) 
関連する問題