# GramSchmidt

From rgl v0.100.50
by Duncan Murdoch

##### The Gram-Schmidt algorithm

Generate a 3x3 orthogonal matrix using the Gram-Schmidt algorithm.

##### Usage

`GramSchmidt(v1, v2, v3, order = 1:3)`

##### Arguments

- v1, v2, v3
Three length 3 vectors (taken as row vectors).

- order
The precedence order for the vectors; see Details.

##### Details

This function orthogonalizes the matrix `rbind(v1, v2, v3)`

using the Gram-Schmidt algorithm. It can handle rank 2 matrices
(returning a rank 3 matrix). If the original is rank 1, it is likely
to fail.

The `order`

vector determines the precedence of the original
vectors. For example, if it is `c(i, j, k)`

, then row `i`

will be unchanged (other than normalization); row `j`

will
normally be transformed within the span of rows `i`

and `j`

.
Row `k`

will be transformed orthogonally to the span of
the others.

##### Value

A 3x3 matrix whose rows are the orthogonalization of the original row vectors.

##### Examples

```
# NOT RUN {
# Proceed through the rows in order
print(A <- matrix(rnorm(9), 3, 3))
GramSchmidt(A[1, ], A[2, ], A[3, ])
# Keep the middle row unchanged
print(A <- matrix(c(rnorm(2), 0, 1, 0, 0, rnorm(3)), 3, 3, byrow = TRUE))
GramSchmidt(A[1, ], A[2, ], A[3, ], order = c(2, 1, 3))
# }
```

*Documentation reproduced from package rgl, version 0.100.50, License: GPL*

### Community examples

Looks like there are no examples yet.