UIBezierPath y NSBezierPath producen resultados diferentes al dibujar arcos

Tengo dos códigos, uno de los cuales funciona perfectamente (la versión de iOS) y el otro no funciona correctamente (la versión de Mac). No puedo resolver cuál es el problema con la versión para Mac, que usa NSBezierPath, en lugar de UIBezierPath.

versión de iOS

Tengo un código que funciona exactamente como me gustaría en iOS usando UIBezierPath. Aquí está el código:

let center = CGPoint(x: size.width / 2.0, y: size.height / 2.0) let radius = size.width / 2.0 let startAngle = angle let endAngle = 180.0 - startAngle let bezierPath = UIBezierPath() bezierPath.addArcWithCenter(center, radius: radius, startAngle: startAngle.radians, endAngle: endAngle.radians, clockwise: true) println(bezierPath) return bezierPath 

Produce el siguiente resultado

 <UIBezierPath: 0x7fe348f82910; <MoveTo {42.677669529663689, 42.677669529663689}>, <CurveTo {7.3223304703363148, 42.677669529663689} {32.914562235881945, 52.440776823445439} {17.085437764118062, 52.440776823445432}> 

y muestra la siguiente image

forma correcta

Versión Mac OS X

Esto hace exactamente lo que quiero, excepto que es para iOS. Me gustaría traducir este código a OS X / Cocoa. Esto es lo que he creado

 let center = CGPoint(x: size.width / 2.0, y: size.height / 2.0) let radius = size.width / 2.0 let startAngle = angle let endAngle = 180.0 - startAngle let bezierPath = NSBezierPath() bezierPath.appendBezierPathWithArcWithCenter(center, radius: radius, startAngle: startAngle.radians, endAngle: endAngle.radians, clockwise: true) println(bezierPath) return bezierPath 

(es casi idéntico al código iOS).

El resultado aquí es

 Path <0x600000122800> Bounds: {{-4.9018102839097546e-05, -4.9018102839077596e-05}, {50.000098036205685, 50.000094758067902}} Control point bounds: {{-0.18691031775632938, -0.18691031775632855}, {50.373820635512658, 50.37016203886877}} 49.997651 25.342684 moveto 50.186910 11.536862 39.148505 0.191608 25.342684 0.002349 curveto 11.536862 -0.186910 0.191608 10.851495 0.002349 24.657316 curveto -0.186910 38.463138 10.851495 49.808392 24.657316 49.997651 curveto 38.196255 50.183252 49.422202 39.556558 49.978864 26.027794 curveto 

con la siguiente forma resultante

resultado incorrecto

Ambos segmentos de código recibieron las mismas inputs y usan los mismos methods para computar radianes, etc. Por lo que puedo decir, todo es igual entre los dos, aparte del resultado. También vale la pena señalar que estoy convirtiendo cada uno de los paths en UIImage s y NSImage s después de que se dibujan. Por favor, hágamelo saber si debería publicar el código que estoy usando para hacer esto.

También he intentado usar moveToPoint para get ambas partes del código en la position de inicio correcta (innecesario en iOS, no solucionó el problema en OS X).

Muchas gracias por su ayuda.

Resulta que en iOS, addArcWithCenter toma radianes para startAngle y endAngle , y en OS X appendBezierPathWithArcWithCenter toma grados.

Aquí está el enlace a la documentation para OS X.