# orthonormal_basis

> Generate an orthonormal basis given a single unit length normal vector.

## Definition

* **Type:** Method
* **Namespace:** [Unity.Mathematics](/engine/6000.6/script-reference/unity/mathematics.md)
* **Assembly:** UnityEngine.MathematicsModule

## orthonormal\_basis(float3, float3, float3)

Generate an orthonormal basis given a single unit length normal vector.

```csharp
public static void orthonormal_basis(float3 normal, out float3 basis1, out float3 basis2)
```

### Parameters

**** (\[float3]\(/engine/6000.6/script-reference/unity/mathematics/float3)): Unit length normal vector.**** (\[float3]\(/engine/6000.6/script-reference/unity/mathematics/float3)): Output unit length vector, orthogonal to normal vector.**** (\[float3]\(/engine/6000.6/script-reference/unity/mathematics/float3)): Output unit length vector, orthogonal to normal vector and basis1.

### Remarks

This implementation is from "Building an Orthonormal Basis, Revisited" [https://graphics.pixar.com/library/OrthonormalB/paper.pdf](https://graphics.pixar.com/library/OrthonormalB/paper.pdf)

## orthonormal\_basis(double3, double3, double3)

Generate an orthonormal basis given a single unit length normal vector.

```csharp
public static void orthonormal_basis(double3 normal, out double3 basis1, out double3 basis2)
```

### Parameters

**** (\[double3]\(/engine/6000.6/script-reference/unity/mathematics/double3)): Unit length normal vector.**** (\[double3]\(/engine/6000.6/script-reference/unity/mathematics/double3)): Output unit length vector, orthogonal to normal vector.**** (\[double3]\(/engine/6000.6/script-reference/unity/mathematics/double3)): Output unit length vector, orthogonal to normal vector and basis1.

### Remarks

This implementation is from "Building an Orthonormal Basis, Revisited" [https://graphics.pixar.com/library/OrthonormalB/paper.pdf](https://graphics.pixar.com/library/OrthonormalB/paper.pdf)
