Bounding volume structure, that is, volume that bounds some area, typically geometry. More...
#include <kanzi/core/legacy/util/math/kzc_matrix4x4.hpp>
#include <kanzi/core/legacy/util/math/kzc_vector3.hpp>
#include <kanzi/core/legacy/util/math/kzc_plane.hpp>
#include <kanzi/core/legacy/debug/kzs_error.hpp>
#include <kanzi/core/cpp/platform.hpp>
#include <kanzi/core/cpp/memory.hpp>
Classes | |
struct | KzuBoundingVolumeAxisAlignedBox |
Axis aligned bounding box, inherited from KzuBoundingVolume. More... | |
struct | KzuBoundingVolumeSphere |
Sphere volume, inherited from KzuBoundingVolume. More... | |
struct | KzuBoundingVolume |
Base structure for bounding volume. More... | |
struct | KzuTransformedBoundingVolume |
Bounding volume in world coordinates. More... | |
Namespaces | |
kanzi | |
Macros | |
#define | KZU_BOUNDING_BOX_CORNER_BACK_BOTTOM_LEFT |
Bounding box corners. More... | |
#define | KZU_BOUNDING_BOX_CORNER_BACK_TOP_LEFT |
Top left. More... | |
#define | KZU_BOUNDING_BOX_CORNER_BACK_TOP_RIGHT |
Top right. More... | |
#define | KZU_BOUNDING_BOX_CORNER_BACK_BOTTOM_RIGHT |
Bottom right. More... | |
#define | KZU_BOUNDING_BOX_CORNER_FRONT_BOTTOM_LEFT |
Bottom left. More... | |
#define | KZU_BOUNDING_BOX_CORNER_FRONT_TOP_LEFT |
Top left. More... | |
#define | KZU_BOUNDING_BOX_CORNER_FRONT_TOP_RIGHT |
Top right. More... | |
#define | KZU_BOUNDING_BOX_CORNER_FRONT_BOTTOM_RIGHT |
Bottom right. More... | |
Typedefs | |
typedef kanzi::shared_ptr< KzuBoundingVolume > | KzuBoundingVolumeSharedPtr |
Enumerations | |
enum | KzuBoundingVolumeType { KZU_BOUNDING_VOLUME_TYPE_AXIS_ALIGNED_BOX, KZU_BOUNDING_VOLUME_TYPE_SPHERE } |
Type of bounding volume. More... | |
Functions | |
void | kzuBoundingVolumeAssign (KzuBoundingVolume *first, const KzuBoundingVolume *second) |
KANZI_API kzsError | kzuBoundingVolumeCreate (const struct KzcMemoryManager *memoryManager, struct KzuBoundingVolume **out_boundingVolume) |
Creates an empty bounding volume. More... | |
kzsError | kzuBoundingVolumeCopy (const struct KzcMemoryManager *memoryManager, const struct KzuBoundingVolume *sourceBoundingVolume, struct KzuBoundingVolume **out_targetBoundingVolume) |
Creates copy of bounding volume. More... | |
KANZI_API kzsError | kzuBoundingVolumeDelete (struct KzuBoundingVolume *boundingVolume) |
Deletes a bounding volume. More... | |
KANZI_API void | kzuBoundingVolumeCalculateTransformedBoundingVolume (const struct KzuBoundingVolume *boundingVolume, const struct KzcMatrix4x4 *worldTransformation, struct KzuTransformedBoundingVolume *out_transformedBoundingVolume) |
Calculates world transformed bounding volume from bounding volume and world transformation. More... | |
void | kzuAxisAlignedBoundingBoxFromTransformedAABB (const struct KzcVector3 *aabbMin, const struct KzcVector3 *aabbMax, const struct KzcMatrix4x4 *transform, struct KzcVector3 *out_aabbMin, struct KzcVector3 *out_aabbMax) |
Transforms an AABB and calculates a new AABB. More... | |
void | kzuTransformedBoundingVolumeCreateFromAABB (const struct KzcVector3 *aabbMin, const struct KzcVector3 *aabbMax, const struct KzcMatrix4x4 *worldTransformation, struct KzuTransformedBoundingVolume *out_transformedBoundingVolume) |
Creates a transformed bounding volume from an axis aligned bounding box. More... | |
void | kzuTransformedBoundingVolumeGetAABB (const struct KzuTransformedBoundingVolume *transformedBoundingVolume, struct KzcVector3 *out_minimum, struct KzcVector3 *out_maximum) |
Gets axis-aligned bounding box values (minimum & maximum) from transformed bounding volume. More... | |
kzBool | kzuTransformedBoundingVolumeIsAbovePlane (const struct KzuTransformedBoundingVolume *transformedBoundingVolume, const struct KzcPlane *plane) |
Checks if transformed bounding volume is above plane. More... | |
KANZI_API struct KzcVector3 | kzuTransformedBoundingVolumeBoxGetCornerPoint (const struct KzuTransformedBoundingVolume *boundingVolume, kzUint cornerIndex) |
Gets corner point from transformed bounding box. More... | |
void | kzuTransformedBoundingVolumeSetMargin (struct KzuTransformedBoundingVolume *transformedBoundingVolume, kzFloat margin) |
Sets margin to transformed bounding volume. More... | |
kzFloat | kzuTransformedBoundingVolumeGetMargin (const struct KzuTransformedBoundingVolume *transformedBoundingVolume) |
Gets margin from transformed bounding volume. More... | |
KANZI_API void | kzuBoundingVolumeSetVolume (struct KzuBoundingVolume *boundingVolume, const kanzi::Box &volume) |
Sets bounding volume from volume. More... | |
KANZI_API const struct KzuBoundingVolumeAxisAlignedBox * | kzuBoundingVolumeGetAxisAlignedBox (const struct KzuBoundingVolume *boundingVolume) |
Gets axis aligned box from bounding volume. More... | |
const struct KzuBoundingVolumeSphere * | kzuBoundingVolumeGetSphere (const struct KzuBoundingVolume *boundingVolume) |
Gets sphere from bounding volume. More... | |
KANZI_API struct KzcVector3 | kzuBoundingVolumeAxisAlignedBoxGetMinimumCorner (const struct KzuBoundingVolumeAxisAlignedBox *boundingVolume) |
Gets minimum corner from axis aligned box. More... | |
KANZI_API struct KzcVector3 | kzuBoundingVolumeAxisAlignedBoxGetMaximumCorner (const struct KzuBoundingVolumeAxisAlignedBox *boundingVolume) |
Gets maximum corner from axis aligned box. More... | |
kzFloat | kzuBoundingVolumeSphereGetRadius (const struct KzuBoundingVolumeSphere *boundingVolume) |
Gets radius of bounding volume sphere. More... | |
Bounding volume structure, that is, volume that bounds some area, typically geometry.
Copyright 2008-2017 by Rightware. All rights reserved.
#define KZU_BOUNDING_BOX_CORNER_BACK_BOTTOM_LEFT |
Bounding box corners.
Bottom left.
#define KZU_BOUNDING_BOX_CORNER_BACK_TOP_LEFT |
Top left.
#define KZU_BOUNDING_BOX_CORNER_BACK_TOP_RIGHT |
Top right.
#define KZU_BOUNDING_BOX_CORNER_BACK_BOTTOM_RIGHT |
Bottom right.
#define KZU_BOUNDING_BOX_CORNER_FRONT_BOTTOM_LEFT |
Bottom left.
#define KZU_BOUNDING_BOX_CORNER_FRONT_TOP_LEFT |
Top left.
#define KZU_BOUNDING_BOX_CORNER_FRONT_TOP_RIGHT |
Top right.
#define KZU_BOUNDING_BOX_CORNER_FRONT_BOTTOM_RIGHT |
Bottom right.
typedef kanzi::shared_ptr<KzuBoundingVolume> KzuBoundingVolumeSharedPtr |
void kzuBoundingVolumeAssign | ( | KzuBoundingVolume * | first, |
const KzuBoundingVolume * | second | ||
) |
KANZI_API kzsError kzuBoundingVolumeCreate | ( | const struct KzcMemoryManager * | memoryManager, |
struct KzuBoundingVolume ** | out_boundingVolume | ||
) |
Creates an empty bounding volume.
kzsError kzuBoundingVolumeCopy | ( | const struct KzcMemoryManager * | memoryManager, |
const struct KzuBoundingVolume * | sourceBoundingVolume, | ||
struct KzuBoundingVolume ** | out_targetBoundingVolume | ||
) |
Creates copy of bounding volume.
KANZI_API kzsError kzuBoundingVolumeDelete | ( | struct KzuBoundingVolume * | boundingVolume | ) |
Deletes a bounding volume.
KANZI_API void kzuBoundingVolumeCalculateTransformedBoundingVolume | ( | const struct KzuBoundingVolume * | boundingVolume, |
const struct KzcMatrix4x4 * | worldTransformation, | ||
struct KzuTransformedBoundingVolume * | out_transformedBoundingVolume | ||
) |
Calculates world transformed bounding volume from bounding volume and world transformation.
void kzuAxisAlignedBoundingBoxFromTransformedAABB | ( | const struct KzcVector3 * | aabbMin, |
const struct KzcVector3 * | aabbMax, | ||
const struct KzcMatrix4x4 * | transform, | ||
struct KzcVector3 * | out_aabbMin, | ||
struct KzcVector3 * | out_aabbMax | ||
) |
Transforms an AABB and calculates a new AABB.
void kzuTransformedBoundingVolumeCreateFromAABB | ( | const struct KzcVector3 * | aabbMin, |
const struct KzcVector3 * | aabbMax, | ||
const struct KzcMatrix4x4 * | worldTransformation, | ||
struct KzuTransformedBoundingVolume * | out_transformedBoundingVolume | ||
) |
Creates a transformed bounding volume from an axis aligned bounding box.
void kzuTransformedBoundingVolumeGetAABB | ( | const struct KzuTransformedBoundingVolume * | transformedBoundingVolume, |
struct KzcVector3 * | out_minimum, | ||
struct KzcVector3 * | out_maximum | ||
) |
Gets axis-aligned bounding box values (minimum & maximum) from transformed bounding volume.
kzBool kzuTransformedBoundingVolumeIsAbovePlane | ( | const struct KzuTransformedBoundingVolume * | transformedBoundingVolume, |
const struct KzcPlane * | plane | ||
) |
Checks if transformed bounding volume is above plane.
Used in frustum culling.
KANZI_API struct KzcVector3 kzuTransformedBoundingVolumeBoxGetCornerPoint | ( | const struct KzuTransformedBoundingVolume * | boundingVolume, |
kzUint | cornerIndex | ||
) |
Gets corner point from transformed bounding box.
void kzuTransformedBoundingVolumeSetMargin | ( | struct KzuTransformedBoundingVolume * | transformedBoundingVolume, |
kzFloat | margin | ||
) |
Sets margin to transformed bounding volume.
kzFloat kzuTransformedBoundingVolumeGetMargin | ( | const struct KzuTransformedBoundingVolume * | transformedBoundingVolume | ) |
Gets margin from transformed bounding volume.
KANZI_API void kzuBoundingVolumeSetVolume | ( | struct KzuBoundingVolume * | boundingVolume, |
const kanzi::Box & | volume | ||
) |
Sets bounding volume from volume.
KANZI_API const struct KzuBoundingVolumeAxisAlignedBox* kzuBoundingVolumeGetAxisAlignedBox | ( | const struct KzuBoundingVolume * | boundingVolume | ) |
Gets axis aligned box from bounding volume.
const struct KzuBoundingVolumeSphere* kzuBoundingVolumeGetSphere | ( | const struct KzuBoundingVolume * | boundingVolume | ) |
Gets sphere from bounding volume.
KANZI_API struct KzcVector3 kzuBoundingVolumeAxisAlignedBoxGetMinimumCorner | ( | const struct KzuBoundingVolumeAxisAlignedBox * | boundingVolume | ) |
Gets minimum corner from axis aligned box.
KANZI_API struct KzcVector3 kzuBoundingVolumeAxisAlignedBoxGetMaximumCorner | ( | const struct KzuBoundingVolumeAxisAlignedBox * | boundingVolume | ) |
Gets maximum corner from axis aligned box.
kzFloat kzuBoundingVolumeSphereGetRadius | ( | const struct KzuBoundingVolumeSphere * | boundingVolume | ) |
Gets radius of bounding volume sphere.