diff --git a/src/shapes/Arc.ts b/src/shapes/Arc.ts index cefe377f..24f144d1 100644 --- a/src/shapes/Arc.ts +++ b/src/shapes/Arc.ts @@ -66,10 +66,17 @@ export class Arc extends Shape { const DEG_TO_RAD = Math.PI / 180; const angle = this.angle() * DEG_TO_RAD; const inc = 1 * DEG_TO_RAD; + let start = 0 + let end = angle + inc + + if (this.clockwise()) { + start = end + end = 360 + } const xs = []; const ys = []; - for (let i = 0; i < angle + inc; i += inc ) { + for (let i = 0; i < end; i += inc ) { xs.push(Math.cos(i)); ys.push(Math.sin(i)); } diff --git a/test/unit/Arc-test.ts b/test/unit/Arc-test.ts index 69b226c2..98ea7e07 100644 --- a/test/unit/Arc-test.ts +++ b/test/unit/Arc-test.ts @@ -96,6 +96,34 @@ describe('Arc', function () { }); }); + it('getSelfRect on clockwise', function () { + var stage = addStage(); + var layer = new Konva.Layer(); + var arc = new Konva.Arc({ + x: 100, + y: 100, + innerRadius: 50, + outerRadius: 80, + angle: 90, + fill: 'green', + stroke: 'black', + strokeWidth: 4, + name: 'myArc', + draggable: true, + clockwise: true, + }); + + layer.add(arc); + stage.add(layer); + + assert.deepEqual(arc.getSelfRect(), { + x: -80, + y: -80, + width: 160, + height: 160, + }); + }); + it('cache', function () { var stage = addStage(); var layer = new Konva.Layer();