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.
Summary
gp_Trsf::SetValues
transform
module, testsgp_trsf(&DMat4) -> gp_Trsf
Shape::transform
Description
I needed a way to define a
Shape
once and then duplicate that geometry throughout a model space using transform matrices, similar to "blocks" from the CAD world or "instanced rendering" from the GPU programming world.This PR exposes OCC's implementation of this capability through the
BRepBuilderAPI_Transform
class. This requires using agp_Trsf
instance as the transform matrix. There didn't seem to be a convenient way to construct these from aglam
type, so I added thetransform
module and a simple test to ensure the construction is correct.One caveat here (that is also noted in the comments) is that the
gp_Trsf
constructor:w
component of any columnSo, the values of the output can be different than the input based on the orthogonality of the input.