# r3

package
Version: v0.0.0-...-740aa86 Latest Latest

Go to latest
Published: Feb 11, 2021 License: Apache-2.0

## Documentation ¶

### Overview ¶

Package r3 implements types and functions for working with geometry in ℝ³.

See ../s2 for a more detailed overview.

### Constants ¶

This section is empty.

### Variables ¶

This section is empty.

### Functions ¶

This section is empty.

### Types ¶

#### type Axis ¶

`type Axis int`

Axis enumerates the 3 axes of ℝ³.

```const (
XAxis Axis = iota
YAxis
ZAxis
)```

The three axes of ℝ³.

#### type PreciseVector ¶

```type PreciseVector struct {
X, Y, Z *big.Float
}```

PreciseVector represents a point in ℝ³ using high-precision values. Note that this is NOT a complete implementation because there are some operations that Vector supports that are not feasible with arbitrary precision math. (e.g., methods that need division like Normalize, or methods needing a square root operation such as Norm)

#### func NewPreciseVector ¶

`func NewPreciseVector(x, y, z float64) PreciseVector`

NewPreciseVector creates a high precision vector from the given floating point values.

#### func PreciseVectorFromVector ¶

`func PreciseVectorFromVector(v Vector) PreciseVector`

PreciseVectorFromVector creates a high precision vector from the given Vector.

#### func (PreciseVector) Abs ¶

`func (v PreciseVector) Abs() PreciseVector`

Abs returns the vector with nonnegative components.

`func (v PreciseVector) Add(ov PreciseVector) PreciseVector`

Add returns the standard vector sum of v and ov.

#### func (PreciseVector) Cross ¶

`func (v PreciseVector) Cross(ov PreciseVector) PreciseVector`

Cross returns the standard cross product of v and ov.

#### func (PreciseVector) Dot ¶

`func (v PreciseVector) Dot(ov PreciseVector) *big.Float`

Dot returns the standard dot product of v and ov.

#### func (PreciseVector) Equal ¶

`func (v PreciseVector) Equal(ov PreciseVector) bool`

Equal reports whether v and ov are equal.

#### func (PreciseVector) IsUnit ¶

`func (v PreciseVector) IsUnit() bool`

IsUnit reports whether this vector is of unit length.

#### func (PreciseVector) LargestComponent ¶

`func (v PreciseVector) LargestComponent() Axis`

LargestComponent returns the axis that represents the largest component in this vector.

#### func (PreciseVector) Mul ¶

`func (v PreciseVector) Mul(f *big.Float) PreciseVector`

Mul returns the standard scalar product of v and f.

#### func (PreciseVector) MulByFloat64 ¶

`func (v PreciseVector) MulByFloat64(f float64) PreciseVector`

MulByFloat64 returns the standard scalar product of v and f.

#### func (PreciseVector) Norm2 ¶

`func (v PreciseVector) Norm2() *big.Float`

Norm2 returns the square of the norm.

#### func (PreciseVector) SmallestComponent ¶

`func (v PreciseVector) SmallestComponent() Axis`

SmallestComponent returns the axis that represents the smallest component in this vector.

#### func (PreciseVector) String ¶

`func (v PreciseVector) String() string`

#### func (PreciseVector) Sub ¶

`func (v PreciseVector) Sub(ov PreciseVector) PreciseVector`

Sub returns the standard vector difference of v and ov.

#### func (PreciseVector) Vector ¶

`func (v PreciseVector) Vector() Vector`

Vector returns this precise vector converted to a Vector.

#### type Vector ¶

```type Vector struct {
X, Y, Z float64
}```

Vector represents a point in ℝ³.

#### func (Vector) Abs ¶

`func (v Vector) Abs() Vector`

Abs returns the vector with nonnegative components.

`func (v Vector) Add(ov Vector) Vector`

Add returns the standard vector sum of v and ov.

#### func (Vector) Angle ¶

`func (v Vector) Angle(ov Vector) s1.Angle`

Angle returns the angle between v and ov.

#### func (Vector) ApproxEqual ¶

`func (v Vector) ApproxEqual(ov Vector) bool`

ApproxEqual reports whether v and ov are equal within a small epsilon.

#### func (Vector) Cmp ¶

`func (v Vector) Cmp(ov Vector) int`

Cmp compares v and ov lexicographically and returns:

```-1 if v <  ov
0 if v == ov
+1 if v >  ov
```

This method is based on C++'s std::lexicographical_compare. Two entities are compared element by element with the given operator. The first mismatch defines which is less (or greater) than the other. If both have equivalent values they are lexicographically equal.

#### func (Vector) Cross ¶

`func (v Vector) Cross(ov Vector) Vector`

Cross returns the standard cross product of v and ov.

#### func (Vector) Distance ¶

`func (v Vector) Distance(ov Vector) float64`

Distance returns the Euclidean distance between v and ov.

#### func (Vector) Dot ¶

`func (v Vector) Dot(ov Vector) float64`

Dot returns the standard dot product of v and ov.

#### func (Vector) IsUnit ¶

`func (v Vector) IsUnit() bool`

IsUnit returns whether this vector is of approximately unit length.

#### func (Vector) LargestComponent ¶

`func (v Vector) LargestComponent() Axis`

LargestComponent returns the axis that represents the largest component in this vector.

#### func (Vector) Mul ¶

`func (v Vector) Mul(m float64) Vector`

Mul returns the standard scalar product of v and m.

#### func (Vector) Norm ¶

`func (v Vector) Norm() float64`

Norm returns the vector's norm.

#### func (Vector) Norm2 ¶

`func (v Vector) Norm2() float64`

Norm2 returns the square of the norm.

#### func (Vector) Normalize ¶

`func (v Vector) Normalize() Vector`

Normalize returns a unit vector in the same direction as v.

#### func (Vector) Ortho ¶

`func (v Vector) Ortho() Vector`

Ortho returns a unit vector that is orthogonal to v. Ortho(-v) = -Ortho(v) for all v.

#### func (Vector) SmallestComponent ¶

`func (v Vector) SmallestComponent() Axis`

SmallestComponent returns the axis that represents the smallest component in this vector.

#### func (Vector) String ¶

`func (v Vector) String() string`

#### func (Vector) Sub ¶

`func (v Vector) Sub(ov Vector) Vector`

Sub returns the standard vector difference of v and ov.