### Struct

# Gimp Vector3

#### Description [src]

    struct GimpVector3 {
      gdouble x;
      gdouble y;
      gdouble z;
    }

A three dimensional vector.

###### Structure members

`x:` `gdouble`

  The x axis.

`y:` `gdouble`

  The y axis.

`z:` `gdouble`

  The z axis.

#### Constructors

###### gimp_vector3_new

Creates a `GimpVector3` of coordinate `x`, `y` and `z`.

#### Functions

###### gimp_vector3_add

Computes the sum of two 3D vectors. The resulting `GimpVector3` is stored in `result`.

###### gimp_vector3_sub

Computes the difference of two 3D vectors (`vector1` minus `vector2`). The resulting `GimpVector3` is stored in `result`.

#### Instance methods

###### gimp_vector3_add_val

This function is identical to `gimp_vector3_add()` but the vectors are passed by value rather than by reference.

###### gimp_vector3_cross_product

Compute the cross product of two vectors. The result is a `GimpVector3` which is orthogonal to both `vector1` and `vector2`. If `vector1` and `vector2` and parallel, the result will be the nul vector.

###### gimp_vector3_cross_product_val

Identical to `gimp_vector3_cross_product()`, but the vectors are passed by value rather than by reference.

###### gimp_vector3_inner_product

Computes the inner (dot) product of two 3D vectors. This product is zero if and only if the two vectors are orthogonal.

###### gimp_vector3_inner_product_val

Identical to `gimp_vector3_inner_product()`, but the vectors are passed by value rather than by reference.

###### gimp_vector3_length

Computes the length of a 3D vector.

###### gimp_vector3_length_val

Identical to `gimp_vector3_length()`, but the vector is passed by value rather than by reference.

###### gimp_vector3_mul

Multiplies each component of the `vector` by `factor`. Note that this is equivalent to multiplying the vectors length by `factor`.

###### gimp_vector3_mul_val

Identical to `gimp_vector3_mul()`, but the vector is passed by value rather than by reference.

###### gimp_vector3_neg

Negates the `vector` (i.e. negate all its coordinates).

###### gimp_vector3_neg_val

Identical to `gimp_vector3_neg()`, but the vector is passed by value rather than by reference.

###### gimp_vector3_normalize

Normalizes the `vector` so the length of the `vector` is 1.0. The nul vector will not be changed.

###### gimp_vector3_normalize_val

Identical to `gimp_vector3_normalize()`, but the vector is passed by value rather than by reference.

###### gimp_vector3_rotate

Rotates the `vector` around the three axis (Z, Y, and X) by `alpha`, `beta` and `gamma`, respectively.

###### gimp_vector3_rotate_val

Identical to `gimp_vector3_rotate()`, but the vectors are passed by value rather than by reference.

###### gimp_vector3_set

Sets the X, Y and Z coordinates of `vector` to `x`, `y` and `z`.

###### gimp_vector3_sub_val

This function is identical to `gimp_vector3_sub()` but the vectors are passed by value rather than by reference.