2017-06-16 7 views
1

Je dois tracer une ligne droite commençant à 0,0 avec une certaine longueur et un certain angle (du haut de la vue). Actuellement en mesure de créer une ligne en donnant des points de départ et de fin, mais au lieu de terminer les points, je dois utiliser l'angle et la longueur, toute aide?Comment dessiner une ligne droite avec la longueur et l'angle donnés?

Voici le code:

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 

Répondre

2

Il y a plusieurs façons de le faire. Une façon consiste à commencer par une ligne de longueur unitaire le long de l'axe Y. Tournez la ligne à l'angle désiré et l'échelle à la longueur désirée. Exemple:

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)) 

Une autre façon est d'utiliser directement des fonctions trigonométriques pour calculer le point d'extrémité non-origine de la ligne:

let angleInRadians: CGFloat = ... 
let length: CGFloat = ... 
let path = UIBezierPath() 
path.move(to: .zero) 
path.addLine(to: CGPoint(x: -sin(angleInRadians) * length, cos(angleInRadians) * length))