This function generates an instance of the class for the special orthogonal group \(\mathrm{SO}(n)\).

## Arguments

- n
An integer value representing the shape of the

`n x n`

matrices.- point_type
A character string specifying how elements of the group should be represented. Choices are either

`"vector"`

or`"matrix"`

. Defaults to`"matrix"`

.- epsilon
A numeric value specifying the precision to use for calculations involving potential division by 0 in rotations. Defaults to

`0.0`

.- ...
Extra arguments to be passed to parent class constructors. See

`LieGroup`

,`MatrixLieAlgebra`

,`LevelSet`

and`Manifold`

classes.- py_cls
A Python object of class

`SpecialOrthogonal`

. Defaults to`NULL`

in which case it is instantiated on the fly using the other input arguments.

## Value

An object of class `SpecialOrthogonal`

which is an instance of one
of three different `R6::R6Class`

depending on the values of the input
arguments. Specifically:

if

`n == 2`

and`point_type == "vector"`

, then the user wants to instantiate the space of 2D rotations in vector representations and thus the output is an instance of the`SpecialOrthogonal2Vectors`

class;if

`n == 3`

and`point_type == "vector"`

, then the user wants to instantiate the space of 3D rotations in vector representations and thus the output is an instance of the`SpecialOrthogonal3Vectors`

class;in all other cases, either the user is dealing with rotations in matrix representation or with rotations in dimension greater than 3 and thus the output is an instance of the

`SpecialOrthogonalMatrices`

class.

## See also

Other special orthogonal classes:
`SpecialOrthogonal2Vectors`

,
`SpecialOrthogonal3Vectors`

,
`SpecialOrthogonalMatrices`

## Examples

```
if (reticulate::py_module_available("geomstats")) {
so3 <- SpecialOrthogonal(n = 3)
so3
}
```