# Vec4

## Object Hierarchy:

## Description:

[ CCode ( cname = "graphene_vec4_t" , copy_function = "g_boxed_copy" , free_function = "g_boxed_free" , type_id = "graphene_vec4_get_type ()" ) ]

public struct

public struct

**Vec4**A structure capable of holding a vector with four dimensions: x, y, z, and w.

The contents of the Vec4 structure are private and should never be accessed directly.

**Namespace:**Graphene

**Package:**graphene-gobject-1.0

## Content:

### Static methods:

- public static unowned Vec4?
**one**()Retrieves a pointer to a Vec4 with all its components set to 1. - public static unowned Vec4?
**w_axis**()Retrieves a pointer to a Vec4 with its components set to (0, 0, 0, 1). - public static unowned Vec4?
**x_axis**()Retrieves a pointer to a Vec4 with its components set to (1, 0, 0, 0). - public static unowned Vec4?
**y_axis**()Retrieves a pointer to a Vec4 with its components set to (0, 1, 0, 0). - public static unowned Vec4?
**z_axis**()Retrieves a pointer to a Vec4 with its components set to (0, 0, 1, 0). - public static unowned Vec4?
**zero**()Retrieves a pointer to a Vec4 with all its components set to 0.

### Methods:

- public Vec4
**add**(Vec4 b)Adds each component of the two given vectors. - public Vec4
**divide**(Vec4 b)Divides each component of the first operand this by the corresponding component of the second operand`b`

, and places the results into the vector`res`

. - public float
**dot**(Vec4 b)Computes the dot product of the two given vectors. - public bool
**equal**(Vec4 v2)Checks whether the two given Vec4 are equal. - public float
**get_w**()Retrieves the value of the fourth component of the given Vec4. - public float
**get_x**()Retrieves the value of the first component of the given Vec4. - public Vec2
**get_xy**()Creates a Vec2 that contains the first two components of the given Vec4. - public Vec3
**get_xyz**()Creates a Vec3 that contains the first three components of the given Vec4. - public float
**get_y**()Retrieves the value of the second component of the given Vec4. - public float
**get_z**()Retrieves the value of the third component of the given Vec4. - public unowned Vec4?
**init**(float x, float y, float z, float w)Initializes a Vec4 using the given values. - public unowned Vec4?
**init_from_float**(float[] src)Initializes a Vec4 with the values inside the given array. - public unowned Vec4?
**init_from_vec2**(Vec2 src, float z, float w)Initializes a Vec4 using the components of a Vec2 and the values of`z`

and`w`

. - public unowned Vec4?
**init_from_vec3**(Vec3 src, float w)Initializes a Vec4 using the components of a Vec3 and the value of`w`

. - public unowned Vec4?
**init_from_vec4**(Vec4 src)Initializes a Vec4 using the components of another Vec4. - public Vec4
**interpolate**(Vec4 v2, double factor)Linearly interpolates this and`v2`

using the given`factor`

. - public float
**length**()Computes the length of the given Vec4. - public Vec4
**max**(Vec4 b)Compares each component of the two given vectors and creates a vector that contains the maximum values. - public Vec4
**min**(Vec4 b)Compares each component of the two given vectors and creates a vector that contains the minimum values. - public Vec4
**multiply**(Vec4 b)Multiplies each component of the two given vectors. - public bool
**near**(Vec4 v2, float epsilon)Compares the two given Vec4 vectors and checks whether their values are within the given`epsilon`

. - public Vec4
**negate**()Negates the given Vec4. - public Vec4
**normalize**()Normalizes the given Vec4. - public Vec4
**scale**(float factor)Multiplies all components of the given vector with the given scalar`factor`

. - public Vec4
**subtract**(Vec4 b)Subtracts from each component of the first operand this the corresponding component of the second operand`b`

and places each result into the components of`res`

. - public void
**to_float**(ref float[] dest)Stores the components of the given Vec4 into an array of floating point values.