# API documentation¶

Some functions may exist twice, once for their namespace and once for global namespace to make easier to write very common functions

For instance, in general we use `glm_vec3_dot`

to get dot product
of two **vec3**. Now we can also do this with `glm_dot`

,
same for *_cross* and so on…

The original function stays where it is, the function in global namespace
of same name is just an alias, so there is no call version of those functions.
e.g there is no func like `glmc_dot`

because *glm_dot* is just alias for
`glm_vec3_dot`

By including **cglm/cglm.h** header you will include all inline version
of functions. Since functions in this header[s] are inline you don’t need to
build or link *cglm* against your project.

But by including **cglm/call.h** header you will include all *non-inline*
version of functions. You need to build *cglm* and link it.
Follow the Building cglm documentation for this

- affine transforms
- affine transform matrix (specialized functions)
- camera
- frustum
- axis aligned bounding box (AABB)
- quaternions
- euler angles
- mat4
- mat3
- vec3
- vec3 extra
- vec4
- vec4 extra
- color
- plane
- Project / UnProject
- utils / helpers
- io (input / output e.g. print)
- precompiled functions (call)
- Sphere
- Curve
- Bezier