UAT-8a: rotate the rect, not a separate axis vector
reduceAxisState 'rotate' now changes state.rect.angle and re-derives state.axis via axisFromRect(newRect). The rectangle rotates as a whole; the axis for Measure is derived from the rotated rect's long side. 2 new regression tests: rect.angle changes on rotate, axis is re-derived from rotated rect. 109/109 tests green.
This commit is contained in:
@@ -319,6 +319,25 @@ describe('reduceAxisState', () => {
|
||||
expect(s.axis.y).toBeCloseTo(1, 6);
|
||||
});
|
||||
|
||||
it('rotate changes the rect angle (not just a separate axis vector)', () => {
|
||||
let s = createAxisState(rect);
|
||||
const originalAngle = s.rect.angle;
|
||||
s = reduceAxisState(s, { type: 'rotate', angle: Math.PI / 4 });
|
||||
// The rect itself must have rotated
|
||||
expect(s.rect.angle).toBeCloseTo(originalAngle + Math.PI / 4, 6);
|
||||
// And the axis is re-derived from the rotated rect
|
||||
expect(s.axis).toEqual(axisFromRect(s.rect));
|
||||
});
|
||||
|
||||
it('rotate by 90 deg: rect angle changes, axis is perpendicular to original', () => {
|
||||
let s = createAxisState(rect);
|
||||
s = reduceAxisState(s, { type: 'rotate', angle: Math.PI / 2 });
|
||||
expect(s.rect.angle).toBeCloseTo(Math.PI / 2, 6);
|
||||
// Original axis was +x (1,0). After 90 deg rect rotation, axis is +y (0,1)
|
||||
expect(s.axis.x).toBeCloseTo(0, 6);
|
||||
expect(s.axis.y).toBeCloseTo(1, 6);
|
||||
});
|
||||
|
||||
it('rotate composes (rotates from current axis)', () => {
|
||||
let s = createAxisState(rect);
|
||||
s = reduceAxisState(s, { type: 'rotate', angle: Math.PI / 2 });
|
||||
|
||||
Reference in New Issue
Block a user