{"course":{"slug":"vector-and-print","title":"Vectors, Logos and Things That Get Printed","url":"https://addaly.com/learn/vector-and-print","level":"beginner","track":"create"},"lesson":{"slug":"transforms-as-arithmetic","title":"Transforms are arithmetic, so type the numbers","url":"https://addaly.com/learn/vector-and-print/transforms-as-arithmetic","position":15,"of":73,"minutes":8,"answer":"Every transform is a matrix multiply about an origin you can move, so type the numbers rather than dragging: rotate once by the total instead of repeatedly.","keyIdea":"Every transform is a matrix multiply about an origin you can move, so type the numbers rather than dragging: rotate once by the total instead of repeatedly, and know whether you want the group transformed or each object transformed about its own centre."},"body":{"format":"markdown","text":"## Dragging is for looking; typing is for building\n\nEvery move, scale, rotate, skew and flip is the same operation underneath: each point `(x, y)` is multiplied by a 2×3 matrix.\n\n```\nx' = a·x + c·y + e\ny' = b·x + d·y + f\n```\n\n- Translate: `e` and `f` are the offsets.\n- Scale: `a` and `d` are the factors.\n- Rotate by θ: `a = cos θ`, `b = sin θ`, `c = −sin θ`, `d = cos θ`.\n- Flip horizontally: `a = −1`.\n\nYou never write this out. But knowing it explains three things people find mysterious.\n\n**Rotation happens about the origin.** Every implementation rotates about (0,0) and then translates the result back. The point you rotate *about* is a choice the software makes: normally the bounding-box centre. Move the origin and the same rotation lands somewhere completely different.\n\n**Rotations compound rounding.** Rotate 15° twelve times and you do not get exactly 180°; you get a shape whose coordinates have been through twelve floating-point round-trips. On screen this is invisible; on a laser cutting a slot to 0.05 mm it is not. Rotate once, by the total.\n\n**Non-uniform scale changes stroke weight and letterform.** Scale to 200% × 100% and a 1 mm circular stroke becomes an ellipse; type becomes a mechanically stretched parody of itself. Hold Shift.\n\n## Set the origin before you rotate\n\nThis is the single most useful transform skill and most people never learn it.\n\n- **Illustrator**: press **R** for the Rotate tool, then **Alt+click** where you want the pivot. A dialog opens with the angle; type it. Press **Copy** instead of OK to duplicate as you rotate.\n- **Inkscape**: click an object twice to get rotation handles, then drag the small cross to move the pivot. Or use Object ▸ Transform (**Shift+Ctrl+M**) ▸ Rotate for numeric entry, and Edit ▸ *Paste in Place* for exact duplicates.\n- **CorelDRAW**: click twice for rotation handles, drag the centre marker, then use the Transformation docker for numbers.\n- **Affinity**: the origin handle can be dragged and the Transform panel takes typed values with arithmetic (`120/3` works in the field).\n\n## Step and repeat, which pays for itself\n\nTwelve marks around a circle, forty labels on a sheet, a row of perforations.\n\n**Illustrator**: rotate about a pivot with **Copy**, then **Ctrl+D** to repeat the last transform. Eleven presses gives you a twelve-spoke wheel, exact.\n\n**Inkscape**: Edit ▸ *Clone* ▸ **Create Tiled Clones** does rows, columns, rotation, symmetry groups and randomisation, and clones update when you edit the original. It is more capable than anything in the paid tools and almost nobody uses it.\n\n**CorelDRAW**: Edit ▸ Step and Repeat (**Ctrl+Shift+D**) with offsets and counts: this is the tool that makes it good at label sheets.\n\n## Transform each versus transform together\n\nSelect twelve circles and scale to 50%. The *group* shrinks: the circles get smaller and move closer together.\n\nSelect twelve circles and use **Transform Each** (Illustrator: Object ▸ Transform ▸ Transform Each, **Alt+Shift+Ctrl+D**). Each circle shrinks about its own centre and none of them move.\n\nInkscape's Transform dialog has an *Apply to each object separately* checkbox that does the same. This is the difference between \"make the dots smaller\" and \"make the pattern smaller\", and picking the wrong one is why a carefully spaced layout collapses.\n\n## Align to a key object\n\nAligning to a selection's bounding box is rarely what you want; aligning everything to one specific object usually is.\n\n- **Illustrator**: select all, then click once more on the object you want to anchor. Its outline goes heavier. Now align.\n- **Inkscape**: Align & Distribute (**Shift+Ctrl+A**) ▸ *Relative to: Last selected* or *First selected*.\n- **CorelDRAW**: the last-selected object is the target by default when you select with Shift-click.\n\nAnd *distribute spacing* is not the same as *distribute centres*. For objects of different widths, equal centre spacing looks uneven; equal gaps looks right. Both buttons are in every align panel and people reach for the wrong one constantly.\n\nOne last habit: before any transform on a stroked object, decide whether the stroke should come with it. Illustrator's *Scale Strokes & Effects*, Inkscape's four toggle buttons on the selection tool bar, and CorelDRAW's *Scale outline with object* all govern this, and none of them is announced when you drag a handle."},"check":{"question":"A designer needs twelve spokes evenly around a hub. They rotate a copy by 30°, then rotate that copy by 30°, and so on eleven times, each time dragging by eye with snapping on. The last spoke does not quite meet the first. What is the structural fix?","options":[{"text":"Increase the snapping tolerance so that each successive rotation lands exactly on the intended angle every single time.","correct":false,"tempting":"Tighter or looser snapping cannot fix a chain of transforms each applied to the output of the previous one; the error is cumulative, not per-step tolerance."},{"text":"Set the pivot on the hub centre and use rotate-with-copy plus repeat-last-transform, each applied to the original.","correct":true},{"text":"Group the eleven copies and apply a single 360° rotation to close the ring exactly.","correct":false,"tempting":"A 360° rotation returns every object to where it already was; it cannot redistribute unevenly placed copies."},{"text":"Convert each spoke to a compound path before rotating, so coordinates are stored at full precision.","correct":false,"tempting":"Compound paths store coordinates the same way as any other path. Precision is not the issue; repeated dragging by eye about a shifting pivot is."}]},"prev":{"slug":"offsets-and-the-miter-spike","title":"Offsets, and the spike that appears at a sharp corner","url":"https://addaly.com/learn/vector-and-print/offsets-and-the-miter-spike"},"next":{"slug":"grids-guides-and-snapping","title":"Grids and snapping that help instead of fighting","url":"https://addaly.com/learn/vector-and-print/grids-guides-and-snapping"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Transforms are arithmetic, so type the numbers', in Vectors, Logos and Things That Get Printed. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/vector-and-print/transforms-as-arithmetic (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Transforms are arithmetic, so type the numbers","courseTitle":"Vectors, Logos and Things That Get Printed","module":{"index":2,"slug":"drawing-curves","title":"Drawing curves people will pay for"},"answer":null,"keyIdea":"Every transform is a matrix multiply about an origin you can move, so type the numbers rather than dragging: rotate once by the total instead of repeatedly, and know whether you want the group transformed or each object transformed about its own centre.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"dragging-is-for-looking-typing-is-for-building","runs":[{"text":"Dragging is for looking; typing is for building"}]},{"t":"p","runs":[{"text":"Every move, scale, rotate, skew and flip is the same operation underneath: each point "},{"text":"(x, y)","code":true},{"text":" is multiplied by a 2×3 matrix."}]},{"t":"code","lang":"","label":"Text","text":"x' = a·x + c·y + e\ny' = b·x + d·y + f"},{"t":"ul","items":[[{"text":"Translate: "},{"text":"e","code":true},{"text":" and "},{"text":"f","code":true},{"text":" are the offsets."}],[{"text":"Scale: "},{"text":"a","code":true},{"text":" and "},{"text":"d","code":true},{"text":" are the factors."}],[{"text":"Rotate by θ: "},{"text":"a = cos θ","code":true},{"text":", "},{"text":"b = sin θ","code":true},{"text":", "},{"text":"c = −sin θ","code":true},{"text":", "},{"text":"d = cos θ","code":true},{"text":"."}],[{"text":"Flip horizontally: "},{"text":"a = −1","code":true},{"text":"."}]]},{"t":"p","runs":[{"text":"You never write this out. But knowing it explains three things people find mysterious."}]},{"t":"p","runs":[{"text":"Rotation happens about the origin.","b":true},{"text":" Every implementation rotates about (0,0) and then translates the result back. The point you rotate "},{"text":"about","i":true},{"text":" is a choice the software makes: normally the bounding-box centre. Move the origin and the same rotation lands somewhere completely different."}]},{"t":"p","runs":[{"text":"Rotations compound rounding.","b":true},{"text":" Rotate 15° twelve times and you do not get exactly 180°; you get a shape whose coordinates have been through twelve floating-point round-trips. On screen this is invisible; on a laser cutting a slot to 0.05 mm it is not. Rotate once, by the total."}]},{"t":"p","runs":[{"text":"Non-uniform scale changes stroke weight and letterform.","b":true},{"text":" Scale to 200% × 100% and a 1 mm circular stroke becomes an ellipse; type becomes a mechanically stretched parody of itself. Hold Shift."}]},{"t":"h2","id":"set-the-origin-before-you-rotate","runs":[{"text":"Set the origin before you rotate"}]},{"t":"p","runs":[{"text":"This is the single most useful transform skill and most people never learn it."}]},{"t":"ul","items":[[{"text":"Illustrator","b":true},{"text":": press "},{"text":"R","b":true},{"text":" for the Rotate tool, then "},{"text":"Alt+click","b":true},{"text":" where you want the pivot. A dialog opens with the angle; type it. Press "},{"text":"Copy","b":true},{"text":" instead of OK to duplicate as you rotate."}],[{"text":"Inkscape","b":true},{"text":": click an object twice to get rotation handles, then drag the small cross to move the pivot. Or use Object ▸ Transform ("},{"text":"Shift+Ctrl+M","b":true},{"text":") ▸ Rotate for numeric entry, and Edit ▸ "},{"text":"Paste in Place","i":true},{"text":" for exact duplicates."}],[{"text":"CorelDRAW","b":true},{"text":": click twice for rotation handles, drag the centre marker, then use the Transformation docker for numbers."}],[{"text":"Affinity","b":true},{"text":": the origin handle can be dragged and the Transform panel takes typed values with arithmetic ("},{"text":"120/3","code":true},{"text":" works in the field)."}]]},{"t":"h2","id":"step-and-repeat-which-pays-for-itself","runs":[{"text":"Step and repeat, which pays for itself"}]},{"t":"p","runs":[{"text":"Twelve marks around a circle, forty labels on a sheet, a row of perforations."}]},{"t":"p","runs":[{"text":"Illustrator","b":true},{"text":": rotate about a pivot with "},{"text":"Copy","b":true},{"text":", then "},{"text":"Ctrl+D","b":true},{"text":" to repeat the last transform. Eleven presses gives you a twelve-spoke wheel, exact."}]},{"t":"p","runs":[{"text":"Inkscape","b":true},{"text":": Edit ▸ "},{"text":"Clone","i":true},{"text":" ▸ "},{"text":"Create Tiled Clones","b":true},{"text":" does rows, columns, rotation, symmetry groups and randomisation, and clones update when you edit the original. It is more capable than anything in the paid tools and almost nobody uses it."}]},{"t":"p","runs":[{"text":"CorelDRAW","b":true},{"text":": Edit ▸ Step and Repeat ("},{"text":"Ctrl+Shift+D","b":true},{"text":") with offsets and counts: this is the tool that makes it good at label sheets."}]},{"t":"h2","id":"transform-each-versus-transform-together","runs":[{"text":"Transform each versus transform together"}]},{"t":"p","runs":[{"text":"Select twelve circles and scale to 50%. The "},{"text":"group","i":true},{"text":" shrinks: the circles get smaller and move closer together."}]},{"t":"p","runs":[{"text":"Select twelve circles and use "},{"text":"Transform Each","b":true},{"text":" (Illustrator: Object ▸ Transform ▸ Transform Each, "},{"text":"Alt+Shift+Ctrl+D","b":true},{"text":"). Each circle shrinks about its own centre and none of them move."}]},{"t":"p","runs":[{"text":"Inkscape’s Transform dialog has an "},{"text":"Apply to each object separately","i":true},{"text":" checkbox that does the same. This is the difference between “make the dots smaller” and “make the pattern smaller”, and picking the wrong one is why a carefully spaced layout collapses."}]},{"t":"h2","id":"align-to-a-key-object","runs":[{"text":"Align to a key object"}]},{"t":"p","runs":[{"text":"Aligning to a selection’s bounding box is rarely what you want; aligning everything to one specific object usually is."}]},{"t":"ul","items":[[{"text":"Illustrator","b":true},{"text":": select all, then click once more on the object you want to anchor. Its outline goes heavier. Now align."}],[{"text":"Inkscape","b":true},{"text":": Align & Distribute ("},{"text":"Shift+Ctrl+A","b":true},{"text":") ▸ "},{"text":"Relative to: Last selected","i":true},{"text":" or "},{"text":"First selected","i":true},{"text":"."}],[{"text":"CorelDRAW","b":true},{"text":": the last-selected object is the target by default when you select with Shift-click."}]]},{"t":"p","runs":[{"text":"And "},{"text":"distribute spacing","i":true},{"text":" is not the same as "},{"text":"distribute centres","i":true},{"text":". For objects of different widths, equal centre spacing looks uneven; equal gaps looks right. Both buttons are in every align panel and people reach for the wrong one constantly."}]},{"t":"p","runs":[{"text":"One last habit: before any transform on a stroked object, decide whether the stroke should come with it. Illustrator’s "},{"text":"Scale Strokes & Effects","i":true},{"text":", Inkscape’s four toggle buttons on the selection tool bar, and CorelDRAW’s "},{"text":"Scale outline with object","i":true},{"text":" all govern this, and none of them is announced when you drag a handle."}]}],"check":{"question":[{"text":"A designer needs twelve spokes evenly around a hub. They rotate a copy by 30°, then rotate that copy by 30°, and so on eleven times, each time dragging by eye with snapping on. The last spoke does not quite meet the first. What is the structural fix?"}],"options":[{"text":[{"text":"Increase the snapping tolerance so that each successive rotation lands exactly on the intended angle every single time."}],"correct":false,"tempting":[{"text":"Tighter or looser snapping cannot fix a chain of transforms each applied to the output of the previous one; the error is cumulative, not per-step tolerance."}]},{"text":[{"text":"Set the pivot on the hub centre and use rotate-with-copy plus repeat-last-transform, each applied to the original."}],"correct":true,"tempting":null},{"text":[{"text":"Group the eleven copies and apply a single 360° rotation to close the ring exactly."}],"correct":false,"tempting":[{"text":"A 360° rotation returns every object to where it already was; it cannot redistribute unevenly placed copies."}]},{"text":[{"text":"Convert each spoke to a compound path before rotating, so coordinates are stored at full precision."}],"correct":false,"tempting":[{"text":"Compound paths store coordinates the same way as any other path. Precision is not the issue; repeated dragging by eye about a shifting pivot is."}]}],"order":[2,0,1,3],"why":null},"prev":{"slug":"offsets-and-the-miter-spike","title":"Offsets, and the spike that appears at a sharp corner","minutes":8},"next":{"slug":"grids-guides-and-snapping","title":"Grids and snapping that help instead of fighting","minutes":8}}}