NEML2 2.0.0
|
Rotation stored as modified Rodrigues parameters. More...
Rotation stored as modified Rodrigues parameters.
The storage space is (3).
One way to define this convention is that the three parameters are the values of the vector n tan(theta/4) where n is the rotation axis and theta the rotation angle.
Note this is different from the standard Rodrigues parameters, which are defined by n tan(theta/2)
#include <Rot.h>
Public Member Functions | |
Rot (const Vec &v) | |
Rot | inverse () const |
Inversion. | |
R2 | euler_rodrigues () const |
Generate a rotation matrix using the Euler-Rodrigues formula. | |
R3 | deuler_rodrigues () const |
d(R2)/d(r) – useful in constructing other derivatives | |
Rot | rotate (const Rot &r) const |
Rotate. | |
R2 | drotate (const Rot &r) const |
Derivative of the rotated Rodrigues vector w.r.t. the other Rodrigues vector. | |
R2 | drotate_self (const Rot &r) const |
Derivative of the rotated Rodrigues vector w.r.t. this vector. | |
Rot | shadow () const |
Return the shadow parameter set (a set of MRPs that define the same orientation) | |
R2 | dshadow () const |
Return the derivative of the shadow map. | |
Scalar | dist (const Rot &r) const |
Distance measure between two rotations, accounting for shadow mapping. | |
Scalar | gdist (const Rot &r) const |
Raw distance formula, not accounting for shadown mapping. | |
Scalar | dV () const |
Volume element at locations. | |
Public Member Functions inherited from VecBase< Rot > | |
Scalar | operator() (Size i) const |
Accessor. | |
Scalar | dot (const VecBase< Derived2 > &v) const |
dot product | |
Rot | cross (const VecBase< Derived2 > &v) const |
cross product | |
R2 | outer (const VecBase< Derived2 > &v) const |
outer product | |
Scalar | norm_sq () const |
Norm squared. | |
Scalar | norm () const |
Norm. | |
Rot | rotate (const Rot &r) const |
Rotate using a Rodrigues vector. | |
Rot | rotate (const R2 &R) const |
Rotate using a rotation matrix. | |
R2 | drotate (const Rot &r) const |
Derivative of the rotated vector w.r.t. the Rodrigues vector. | |
R3 | drotate (const R2 &R) const |
Derivative of the rotated vector w.r.t. the rotation matrix. | |
Public Member Functions inherited from PrimitiveTensor< Derived, S > | |
PrimitiveTensor ()=default | |
Default constructor. | |
PrimitiveTensor (const torch::Tensor &tensor, Size batch_dim) | |
Construct from another torch::Tensor given batch dimension. | |
PrimitiveTensor (const torch::Tensor &tensor, const TraceableTensorShape &batch_shape) | |
Construct from another torch::Tensor given batch shape. | |
template<class Derived2 > | |
PrimitiveTensor (const TensorBase< Derived2 > &tensor) | |
Copy constructor. | |
PrimitiveTensor (const torch::Tensor &tensor) | |
Construct from another torch::Tensor and infer batch dimension. | |
operator Tensor () const | |
Implicit conversion to a Tensor and loses information on the fixed base shape. | |
Public Member Functions inherited from TensorBase< Derived > | |
TensorBase ()=default | |
Default constructor. | |
TensorBase (const torch::Tensor &tensor, Size batch_dim) | |
Construct from another torch::Tensor with given batch dimension. | |
TensorBase (const torch::Tensor &tensor, const TraceableTensorShape &batch_shape) | |
Construct from another torch::Tensor with given batch shape. | |
template<class Derived2 > | |
TensorBase (const TensorBase< Derived2 > &tensor) | |
Copy constructor. | |
TensorBase (Real)=delete | |
Derived | variable_data () const |
Derived | clone (torch::MemoryFormat memory_format=torch::MemoryFormat::Contiguous) const |
Derived | detach () const |
Discard function graph. | |
Derived | to (const torch::TensorOptions &options) const |
Change tensor options. | |
Derived | operator- () const |
Negation. | |
bool | batched () const |
Whether the tensor is batched. | |
Size | batch_dim () const |
Return the number of batch dimensions. | |
Size | base_dim () const |
Return the number of base dimensions. | |
const TraceableTensorShape & | batch_sizes () const |
Return the batch size. | |
TraceableSize | batch_size (Size index) const |
Return the size of a batch axis. | |
TensorShapeRef | base_sizes () const |
Return the base size. | |
Size | base_size (Size index) const |
Return the size of a base axis. | |
Size | base_storage () const |
Return the flattened storage needed just for the base indices. | |
Derived | batch_index (indexing::TensorIndicesRef indices) const |
Get a tensor by slicing on the batch dimensions. | |
neml2::Tensor | base_index (indexing::TensorIndicesRef indices) const |
Get a tensor by slicing on the base dimensions. | |
void | batch_index_put_ (indexing::TensorIndicesRef indices, const torch::Tensor &other) |
void | batch_index_put_ (indexing::TensorIndicesRef indices, Real v) |
void | base_index_put_ (indexing::TensorIndicesRef indices, const torch::Tensor &other) |
void | base_index_put_ (indexing::TensorIndicesRef indices, Real v) |
Derived | batch_expand (const TraceableTensorShape &batch_shape) const |
Derived | batch_expand (const TraceableSize &batch_size, Size dim) const |
Return a new view of the tensor with values broadcast along a given batch dimension. | |
neml2::Tensor | base_expand (TensorShapeRef base_shape) const |
Return a new view of the tensor with values broadcast along the base dimensions. | |
neml2::Tensor | base_expand (Size base_size, Size dim) const |
Return a new view of the tensor with values broadcast along a given base dimension. | |
template<class Derived2 > | |
Derived | batch_expand_as (const Derived2 &other) const |
Expand the batch to have the same shape as another tensor. | |
template<class Derived2 > | |
Derived2 | base_expand_as (const Derived2 &other) const |
Expand the base to have the same shape as another tensor. | |
Derived | batch_expand_copy (const TraceableTensorShape &batch_shape) const |
Return a new tensor with values broadcast along the batch dimensions. | |
neml2::Tensor | base_expand_copy (TensorShapeRef base_shape) const |
Return a new tensor with values broadcast along the base dimensions. | |
Derived | batch_reshape (const TraceableTensorShape &batch_shape) const |
Reshape batch dimensions. | |
neml2::Tensor | base_reshape (TensorShapeRef base_shape) const |
Reshape base dimensions. | |
Derived | batch_unsqueeze (Size d) const |
Unsqueeze a batch dimension. | |
neml2::Tensor | base_unsqueeze (Size d) const |
Unsqueeze a base dimension. | |
Derived | batch_transpose (Size d1, Size d2) const |
Transpose two batch dimensions. | |
neml2::Tensor | base_transpose (Size d1, Size d2) const |
Transpose two base dimensions. | |
neml2::Tensor | base_flatten () const |
Flatten base dimensions. | |
Static Public Member Functions | |
static Rot | identity (const torch::TensorOptions &options=default_tensor_options()) |
The identity rotation, helpfully the zero vector. | |
static Rot | fill_euler_angles (const torch::Tensor &vals, const std::string &angle_convention, const std::string &angle_type) |
Fill from an array of Euler angles. | |
static Rot | fill_matrix (const R2 &M) |
Fill from rotation matrices. | |
static Rot | fill_random (unsigned int n, Size random_seed) |
Fill some number of random orientations. | |
static Rot | fill_rodrigues (const Scalar &rx, const Scalar &ry, const Scalar &rz) |
Fill from standard Rodrigues parameters. | |
Static Public Member Functions inherited from VecBase< Rot > | |
static Rot | fill (const Real &v1, const Real &v2, const Real &v3, const torch::TensorOptions &options=default_tensor_options()) |
static Rot | fill (const Scalar &v1, const Scalar &v2, const Scalar &v3) |
static R2 | identity_map (const torch::TensorOptions &options=default_tensor_options()) |
The derivative of a vector with respect to itself. | |
Static Public Member Functions inherited from PrimitiveTensor< Derived, S > | |
static Derived | empty (const torch::TensorOptions &options=default_tensor_options()) |
Unbatched empty tensor. | |
static Derived | empty (const TraceableTensorShape &batch_shape, const torch::TensorOptions &options=default_tensor_options()) |
Empty tensor given batch shape. | |
static Derived | zeros (const torch::TensorOptions &options=default_tensor_options()) |
Unbatched zero tensor. | |
static Derived | zeros (const TraceableTensorShape &batch_shape, const torch::TensorOptions &options=default_tensor_options()) |
Zero tensor given batch shape. | |
static Derived | ones (const torch::TensorOptions &options=default_tensor_options()) |
Unbatched unit tensor. | |
static Derived | ones (const TraceableTensorShape &batch_shape, const torch::TensorOptions &options=default_tensor_options()) |
Unit tensor given batch shape. | |
static Derived | full (Real init, const torch::TensorOptions &options=default_tensor_options()) |
Unbatched tensor filled with a given value given base shape. | |
static Derived | full (const TraceableTensorShape &batch_shape, Real init, const torch::TensorOptions &options=default_tensor_options()) |
Full tensor given batch shape. | |
static Tensor | identity_map (const torch::TensorOptions &) |
Derived tensor classes should define identity_map where appropriate. | |
Static Public Member Functions inherited from TensorBase< Derived > | |
static Derived | empty_like (const Derived &other) |
Empty tensor like another, i.e. same batch and base shapes, same tensor options, etc. | |
static Derived | zeros_like (const Derived &other) |
Zero tensor like another, i.e. same batch and base shapes, same tensor options, etc. | |
static Derived | ones_like (const Derived &other) |
Unit tensor like another, i.e. same batch and base shapes, same tensor options, etc. | |
static Derived | full_like (const Derived &other, Real init) |
static Derived | linspace (const Derived &start, const Derived &end, Size nstep, Size dim=0) |
Create a new tensor by adding a new batch dimension with linear spacing between start and end . | |
static Derived | logspace (const Derived &start, const Derived &end, Size nstep, Size dim=0, Real base=10) |
log-space equivalent of the linspace named constructor | |
Additional Inherited Members | |
Static Public Attributes inherited from PrimitiveTensor< Derived, S > | |
static const TensorShape | const_base_sizes = {S...} |
The base shape. | |
static constexpr Size | const_base_dim = sizeof...(S) |
The base dim. | |
static const Size | const_base_storage = utils::storage_size({S...}) |
The base storage. | |
R3 deuler_rodrigues | ( | ) | const |
d(R2)/d(r) – useful in constructing other derivatives
Distance measure between two rotations, accounting for shadow mapping.
Derivative of the rotated Rodrigues vector w.r.t. the other Rodrigues vector.
Derivative of the rotated Rodrigues vector w.r.t. this vector.
R2 dshadow | ( | ) | const |
Return the derivative of the shadow map.
Scalar dV | ( | ) | const |
Volume element at locations.
R2 euler_rodrigues | ( | ) | const |
Generate a rotation matrix using the Euler-Rodrigues formula.
|
static |
Fill from an array of Euler angles.
Fill some number of random orientations.
Fill from standard Rodrigues parameters.
|
static |
The identity rotation, helpfully the zero vector.
Rot inverse | ( | ) | const |
Inversion.
Rot shadow | ( | ) | const |
Return the shadow parameter set (a set of MRPs that define the same orientation)