Add a new primitive: linear-transform-graphics #241
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
(graphics version of #218.)
This PR adds a new primitive
linear-transform-graphics: float -> float -> float -> float -> graphics -> graphics
.gr-origin |> linear-transform-graphics a b c d
is evaluated to a graphics value into which thegr-origin
is transformed with the following formula:Combining
linear-transform-graphics
withshift-graphics
, you can implement any graphics-to-graphics affine transform (rotation, scaling, reflection, etc.).This PR also provides two functions,
rotate-graphics
andscale-graphics
, ingr
package.There are two differences between
linear-transform-path
andlinear-transform-graphics
:linear-transform-graphics
can transform any inline-boxes usingdraw-text
primitive.linear-transform-graphics
command, the stroke thickness is changed (unless a congruence transformation).