# [−][src]Struct pbrt::core::geometry::Vector3f

```pub struct Vector3f {
pub x: Float,
pub y: Float,
pub z: Float,
}```

## Fields

`x: Float``y: Float``z: Float`

## Implementations

### `impl Vector3f`[src]

#### `pub fn normalize(&self) -> Vector3f`[src]

Compute a new vector pointing in the same direction but with unit length.

## Trait Implementations

### `impl<'a, 'b> Add<&'a Vector3f> for &'b Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `+` operator.

### `impl<'a> Add<&'a Vector3f> for Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `+` operator.

### `impl<'a, 'b> Add<&'a Vector3f> for &'b Point3f`[src]

#### `type Output = Point3f`

The resulting type after applying the `+` operator.

### `impl<'a> Add<&'a Vector3f> for Point3f`[src]

#### `type Output = Point3f`

The resulting type after applying the `+` operator.

### `impl<'a> Add<Vector3f> for &'a Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `+` operator.

### `impl Add<Vector3f> for Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `+` operator.

### `impl<'a> Add<Vector3f> for &'a Point3f`[src]

#### `type Output = Point3f`

The resulting type after applying the `+` operator.

### `impl Add<Vector3f> for Point3f`[src]

#### `type Output = Point3f`

The resulting type after applying the `+` operator.

### `impl<'a> Div<f32> for &'a Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `/` operator.

### `impl Div<f32> for Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `/` operator.

### `impl Index<XYZEnum> for Vector3f`[src]

#### `type Output = Float`

The returned type after indexing.

### `impl<'a> Mul<f32> for &'a Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `*` operator.

### `impl Mul<f32> for Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `*` operator.

### `impl Neg for Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `-` operator.

### `impl<'a, 'b> Sub<&'a Vector3f> for &'b Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `-` operator.

### `impl<'a> Sub<&'a Vector3f> for Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `-` operator.

### `impl<'a, 'b> Sub<&'a Vector3f> for &'b Point3f`[src]

#### `type Output = Point3f`

The resulting type after applying the `-` operator.

### `impl<'a> Sub<&'a Vector3f> for Point3f`[src]

#### `type Output = Point3f`

The resulting type after applying the `-` operator.

### `impl<'a> Sub<Vector3f> for &'a Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `-` operator.

### `impl Sub<Vector3f> for Vector3f`[src]

#### `type Output = Vector3f`

The resulting type after applying the `-` operator.

### `impl<'a> Sub<Vector3f> for &'a Point3f`[src]

#### `type Output = Point3f`

The resulting type after applying the `-` operator.

### `impl Sub<Vector3f> for Point3f`[src]

#### `type Output = Point3f`

The resulting type after applying the `-` operator.

## Blanket Implementations

### `impl<T> ToOwned for T where    T: Clone, `[src]

#### `type Owned = T`

The resulting type after obtaining ownership.

### `impl<T, U> TryFrom<U> for T where    U: Into<T>, `[src]

#### `type Error = Infallible`

The type returned in the event of a conversion error.

### `impl<T, U> TryInto<U> for T where    U: TryFrom<T>, `[src]

#### `type Error = <U as TryFrom<T>>::Error`

The type returned in the event of a conversion error.