| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /*
- * Copyright (c), Recep Aslantas.
- *
- * MIT License (MIT), http://opensource.org/licenses/MIT
- * Full license can be found in the LICENSE file
- */
- #ifndef cglms_spheres_h
- #define cglms_spheres_h
- #include "../common.h"
- #include "../types-struct.h"
- #include "../sphere.h"
- #include "mat4.h"
- /*
- Sphere Representation in cglm: [center.x, center.y, center.z, radii]
- You could use this representation or you can convert it to vec4 before call
- any function
- */
- /*!
- * @brief helper for getting sphere radius
- *
- * @param[in] s sphere
- *
- * @return returns radii
- */
- CGLM_INLINE
- float
- glms_sphere_radii(vec4s s) {
- return glm_sphere_radii(s.raw);
- }
- /*!
- * @brief apply transform to sphere, it is just wrapper for glm_mat4_mulv3
- *
- * @param[in] s sphere
- * @param[in] m transform matrix
- * @returns transformed sphere
- */
- CGLM_INLINE
- vec4s
- glms_sphere_transform(vec4s s, mat4s m) {
- vec4s r;
- glm_sphere_transform(s.raw, m.raw, r.raw);
- return r;
- }
- /*!
- * @brief merges two spheres and creates a new one
- *
- * two sphere must be in same space, for instance if one in world space then
- * the other must be in world space too, not in local space.
- *
- * @param[in] s1 sphere 1
- * @param[in] s2 sphere 2
- * returns merged/extended sphere
- */
- CGLM_INLINE
- vec4s
- glms_sphere_merge(vec4s s1, vec4s s2) {
- vec4s r;
- glm_sphere_merge(s1.raw, s2.raw, r.raw);
- return r;
- }
- /*!
- * @brief check if two sphere intersects
- *
- * @param[in] s1 sphere
- * @param[in] s2 other sphere
- */
- CGLM_INLINE
- bool
- glms_sphere_sphere(vec4s s1, vec4s s2) {
- return glm_sphere_sphere(s1.raw, s2.raw);
- }
- /*!
- * @brief check if sphere intersects with point
- *
- * @param[in] s sphere
- * @param[in] point point
- */
- CGLM_INLINE
- bool
- glms_sphere_point(vec4s s, vec3s point) {
- return glm_sphere_point(s.raw, point.raw);
- }
- #endif /* cglms_spheres_h */
|