Add cross and dot for Vector2d and Vector3d #112
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.
This may go a bit against your philosophy judging from the comments on the
to_array
function(s). Here's what I did:cross
anddot
functions toVector2d
andVector3d
explicitly; they still remain part of the trait, but the trait impl forwards to the concrete implementations.Vector2d
the cross-product lies outside of the plane, it promotes toVector3d
internally. This is still useful when determining which side of a line a point lies on, for example, as the Z component indicates that direction and distance.perpendicular_dot
function performs the same but directly calculates the Z component since the others would be zero in "2D" space.All in all, just a bit more symmetry between a types and a bit of convenience for a common 2D calculation.