summaryrefslogtreecommitdiffstats
path: root/libdimension/bvh.h
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2014-08-19 17:10:03 -0400
committerTavian Barnes <tavianator@tavianator.com>2015-10-25 11:03:56 -0400
commit7b09710392d35fb55b52031d447a542d99fc6b4b (patch)
tree270eb927ee8c52ceeb99926ebf4843704775a610 /libdimension/bvh.h
parent200c86b91ea7063d35be3bffc11c5da53c054653 (diff)
downloaddimension-7b09710392d35fb55b52031d447a542d99fc6b4b.tar.xz
Modularize the libdimension codebase.
Diffstat (limited to 'libdimension/bvh.h')
-rw-r--r--libdimension/bvh.h74
1 files changed, 0 insertions, 74 deletions
diff --git a/libdimension/bvh.h b/libdimension/bvh.h
deleted file mode 100644
index f965632..0000000
--- a/libdimension/bvh.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*************************************************************************
- * Copyright (C) 2012-2014 Tavian Barnes <tavianator@tavianator.com> *
- * *
- * This file is part of The Dimension Library. *
- * *
- * The Dimension Library is free software; you can redistribute it and/ *
- * or modify it under the terms of the GNU Lesser General Public License *
- * as published by the Free Software Foundation; either version 3 of the *
- * License, or (at your option) any later version. *
- * *
- * The Dimension Library is distributed in the hope that it will be *
- * useful, but WITHOUT ANY WARRANTY; without even the implied warranty *
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * Lesser General Public License for more details. *
- * *
- * You should have received a copy of the GNU Lesser General Public *
- * License along with this program. If not, see *
- * <http://www.gnu.org/licenses/>. *
- *************************************************************************/
-
-/**
- * @file.
- * Bounding volume hierarchy. This generic interface allows different data
- * structures to be represented in the same way, thus sharing code for their
- * traversal algorithm.
- */
-
-#include <stdbool.h>
-
-/// A bounding volume hierarchy.
-typedef struct dmnsn_bvh dmnsn_bvh;
-
-/// Available BVH implementations.
-typedef enum dmnsn_bvh_kind {
- DMNSN_BVH_NONE,
- DMNSN_BVH_PRTREE,
-} dmnsn_bvh_kind;
-
-/// Create a BVH.
-DMNSN_INTERNAL dmnsn_bvh *dmnsn_new_bvh(const dmnsn_array *objects,
- dmnsn_bvh_kind kind);
-/// Delete a BVH.
-DMNSN_INTERNAL void dmnsn_delete_bvh(dmnsn_bvh *bvh);
-
-/// Find the closest ray-object intersection in the tree.
-DMNSN_INTERNAL bool dmnsn_bvh_intersection(const dmnsn_bvh *bvh,
- dmnsn_line ray,
- dmnsn_intersection *intersection,
- bool reset);
-/// Determine whether a point is inside any object in the tree.
-DMNSN_INTERNAL bool dmnsn_bvh_inside(const dmnsn_bvh *bvh, dmnsn_vector point);
-/// Return the bounding box of the whole hierarchy.
-DMNSN_INTERNAL dmnsn_bounding_box dmnsn_bvh_bounding_box(const dmnsn_bvh *bvh);
-
-/// A non-flat BVH representation, used by BVH implementations.
-typedef struct dmnsn_bvh_node {
- dmnsn_bounding_box bounding_box; ///< The bounding box of this node.
- dmnsn_object *object; ///< The object, for leaf nodes.
- unsigned int nchildren; ///< How many children this node has.
- unsigned int max_children; ///< Maximum number of children.
- struct dmnsn_bvh_node *children[]; ///< Flexible array of children.
-} dmnsn_bvh_node;
-
-/// Create a BVH node.
-DMNSN_INTERNAL dmnsn_bvh_node *dmnsn_new_bvh_node(unsigned int max_children);
-
-/// Create a BVH leaf node.
-DMNSN_INTERNAL dmnsn_bvh_node *dmnsn_new_bvh_leaf_node(dmnsn_object *object);
-
-/// Delete a BVH node.
-DMNSN_INTERNAL void dmnsn_delete_bvh_node(dmnsn_bvh_node *node);
-
-/// Add a child to a BVH node.
-DMNSN_INTERNAL void dmnsn_bvh_node_add(dmnsn_bvh_node *parent, dmnsn_bvh_node *child);