I’ve got a custom type consisting of various Point3d and Vector3d arrays. The points signify corners of a shape and the vectors represent normal directions. I can transform my shape using a Transform matrix consisting of translation, rotation and scaling factors and all is well. However as soon as I introduce a tapering factor (transform.M32 = -0.1) my normals start going wonky. For example a 2x2x1 box being transformed results in badnormalsbad.3dm (53.7 KB), and the normals are all over the place.

Am I supposed to be able to run vectors through a taper transform and have them retain perpendicularity?

EDIT: Nope, one is not supposed to be able to taper vectors and have them remain perpendicular. This GH file shows the problem transform.gh (12.2 KB)

What is the recommended method for transforming normal vectors through shear and taper transforms?