# shz_vec4_t

Source: https://sh4zam.com/api/vector/shz_vec4_t/

```c
typedef struct shz_vec4 {
    union {
        float e SHZ_SIMD(16);                 //!< <X, Y, Z, W> coordinates as an array.
        struct {
            union {
                struct {
                    float x;        //!< X coordinate
                    float y;        //!< Y coordinate
                    float z;        //!< Z coordinate
                };
                shz_vec3_t xyz;     //!< <X, Y, Z> coordinates as a 3D vector
            };
            float w;                //!< W coordinate
        };
        struct {
            shz_vec2_t xy;          //!< <X, Y> coordinates as a 2D vector
            shz_vec2_t zw;          //!< <Z, W> coordinates as a 2D vector
        };
    };
} shz_vec4_t;
```

4D Vector type

## Fields

| Field | Type | Description |
| --- | --- | --- |
| `w` | `float` | W coordinate. |
| `xyz` | `shz_vec3_t` | \<X, Y, Z> coordinates as a 3D vector |
| `x` | `float` | X coordinate. |
| `y` | `float` | Y coordinate. |
| `z` | `float` | Z coordinate. |
| `xy` | `shz_vec2_t` | \<X, Y> coordinates as a 2D vector |
| `zw` | `shz_vec2_t` | \<Z, W> coordinates as a 2D vector |

## Details

Structure for holding coordinates of a 4-dimensional vector.

## Availability

- **C++ equivalent:** [`shz::vec4`](https://sh4zam.com/api/cpp/vec4/)
- **Back-ends:** n/a (not a function)
- **Defined in:** [`sh4zam/shz_vector.h:82`](https://github.com/gyrovorbis/sh4zam/blob/ba1e30c88d49df0311870b229e1dd860ef26c477/include/sh4zam/shz_vector.h#L82)
- **Module:** [Vector](https://sh4zam.com/api/vector/), section "Types"

## See also

[`shz_vec2_t`](https://sh4zam.com/api/vector/shz_vec2_t/), [`shz_vec3_t`](https://sh4zam.com/api/vector/shz_vec3_t/)
