6 n__aabb_8c
gullradriel edited this page 2026-10-09 00:55:18 +02:00

src/n_aabb.c

AABB3D functions. More...

Detailed Description

AABB3D functions.

Author: Castagnier Mickael

Version: 1.0

Date: 07/08/2024

Source code

/*
 * Nilorea Library
 * Copyright (C) 2005-2026 Castagnier Mickael
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License.
 *
 * SPDX-License-Identifier: Apache-2.0
 */


#include "nilorea/n_common.h"
#include "nilorea/n_log.h"
#include "nilorea/n_str.h"
#include "nilorea/n_aabb.h"

AABB3D createAABB3D(AABB_VALUE xMin, AABB_VALUE yMin, AABB_VALUE zMin, AABB_VALUE xMax, AABB_VALUE yMax, AABB_VALUE zMax) {
    AABB3D box;
    box.xMin = xMin;
    box.yMin = yMin;
    box.zMin = zMin;
    box.xMax = xMax;
    box.yMax = yMax;
    box.zMax = zMax;
    return box;
}

bool isPointInsideAABB3D(AABB3D box, AABB_VALUE x, AABB_VALUE y, AABB_VALUE z) {
    return (x >= box.xMin && x <= box.xMax &&
            y >= box.yMin && y <= box.yMax &&
            z >= box.zMin && z <= box.zMax);
}

bool doAABB3DsIntersect(AABB3D box1, AABB3D box2) {
    return (box1.xMin <= box2.xMax && box1.xMax >= box2.xMin &&
            box1.yMin <= box2.yMax && box1.yMax >= box2.yMin &&
            box1.zMin <= box2.zMax && box1.zMax >= box2.zMin);
}