3-Component Vector ================== .. code:: cpp #include .. struct:: vec3 Two component vector structure. .. member:: float vec3.x X component .. member:: float vec3.y Y component .. member:: float vec3.z Z component .. member:: float vec3.ptr[3] Unioned array of all components --------------------- .. function:: void vec3_zero(struct vec3 *dst) Zeroes a vector :param dst: Destination --------------------- .. function:: void vec3_set(struct vec3 *dst, float x, float y) Sets the individual components of a 3-component vector. :param dst: Destination :param x: X component :param y: Y component :param y: Z component --------------------- .. function:: void vec3_copy(struct vec3 *dst, const struct vec3 *v) Copies a vector :param dst: Destination :param v: Vector to copy --------------------- .. function:: void vec3_from_vec4(struct vec3 *dst, const struct vec4 *v) Creates a 3-component vector from a 4-component vector :param dst: 3-component vector destination :param v: 4-component vector --------------------- .. function:: void vec3_add(struct vec3 *dst, const struct vec3 *v1, const struct vec3 *v2) Adds two vectors :param dst: Destination :param v1: Vector 1 :param v2: Vector 2 --------------------- .. function:: void vec3_sub(struct vec3 *dst, const struct vec3 *v1, const struct vec3 *v2) Subtracts two vectors :param dst: Destination :param v1: Vector being subtracted from :param v2: Vector being subtracted --------------------- .. function:: void vec3_mul(struct vec3 *dst, const struct vec3 *v1, const struct vec3 *v2) Multiplies two vectors :param dst: Destination :param v1: Vector 1 :param v2: Vector 2 --------------------- .. function:: void vec3_div(struct vec3 *dst, const struct vec3 *v1, const struct vec3 *v2) Divides two vectors :param dst: Destination :param v1: Dividend :param v2: Divisor --------------------- .. function:: void vec3_addf(struct vec3 *dst, const struct vec3 *v, float f) Adds a floating point to all components :param dst: Destination :param dst: Vector :param f: Floating point --------------------- .. function:: void vec3_subf(struct vec3 *dst, const struct vec3 *v, float f) Subtracts a floating point from all components :param dst: Destination :param v: Vector being subtracted from :param f: Floating point being subtracted --------------------- .. function:: void vec3_mulf(struct vec3 *dst, const struct vec3 *v, float f) Multiplies a floating point with all components :param dst: Destination :param dst: Vector :param f: Floating point --------------------- .. function:: void vec3_divf(struct vec3 *dst, const struct vec3 *v, float f) Divides a floating point from all components :param dst: Destination :param v: Vector (dividend) :param f: Floating point (divisor) --------------------- .. function:: void vec3_neg(struct vec3 *dst, const struct vec3 *v) Negates a vector :param dst: Destination :param v: Vector to negate --------------------- .. function:: float vec3_dot(const struct vec3 *v1, const struct vec3 *v2) Performs a dot product between two vectors :param v1: Vector 1 :param v2: Vector 2 :return: Result of the dot product --------------------- .. function:: void vec3_cross(struct vec3 *dst, const struct vec3 *v1, const struct vec3 *v2) Performs a cross product between two vectors :param dst: Destination :param v1: Vector 1 :param v2: Vector 2 --------------------- .. function:: float vec3_len(const struct vec3 *v) Gets the length of a vector :param v: Vector :return: The vector's length --------------------- .. function:: float vec3_dist(const struct vec3 *v1, const struct vec3 *v2) Gets the distance between two vectors :param v1: Vector 1 :param v2: Vector 2 :return: Distance between the two vectors --------------------- .. function:: void vec3_minf(struct vec3 *dst, const struct vec3 *v, float val) Gets the minimum values between a vector's components and a floating point :param dst: Destination :param v: Vector :param val: Floating point --------------------- .. function:: void vec3_min(struct vec3 *dst, const struct vec3 *v, const struct vec3 *min_v) Gets the minimum values between two vectors :param dst: Destination :param v: Vector 1 :param min_v: Vector 2 --------------------- .. function:: void vec3_maxf(struct vec3 *dst, const struct vec3 *v, float val) Gets the maximum values between a vector's components and a floating point :param dst: Destination :param v: Vector :param val: Floating point --------------------- .. function:: void vec3_max(struct vec3 *dst, const struct vec3 *v, const struct vec3 *max_v) Gets the maximum values between two vectors :param dst: Destination :param v: Vector 1 :param max_v: Vector 2 --------------------- .. function:: void vec3_abs(struct vec3 *dst, const struct vec3 *v) Gets the absolute values of each component :param dst: Destination :param v: Vector --------------------- .. function:: void vec3_floor(struct vec3 *dst, const struct vec3 *v) Gets the floor values of each component :param dst: Destination :param v: Vector --------------------- .. function:: void vec3_ceil(struct vec3 *dst, const struct vec3 *v) Gets the ceiling values of each component :param dst: Destination :param v: Vector --------------------- .. function:: int vec3_close(const struct vec3 *v1, const struct vec3 *v2, float epsilon) Compares two vectors :param v1: Vector 1 :param v2: Vector 2 :param epsilon: Maximum precision for comparison --------------------- .. function:: void vec3_norm(struct vec3 *dst, const struct vec3 *v) Normalizes a vector :param dst: Destination :param v: Vector to normalize --------------------- .. function:: void vec3_transform(struct vec3 *dst, const struct vec3 *v, const struct matrix4 *m) Transforms a vector :param dst: Destination :param v: Vector :param m: Matrix --------------------- .. function:: void vec3_rotate(struct vec3 *dst, const struct vec3 *v, const struct matrix3 *m) Rotates a vector :param dst: Destination :param v: Vector :param m: Matrix --------------------- .. function:: void vec3_rand(struct vec3 *dst, int positive_only) Generates a random vector :param dst: Destination :param positive_only: *true* if positive only, *false* otherwise