text: /*
   * 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 */
  