1//
2// Redistribution and use in source and binary forms, with or without
3// modification, are permitted provided that the following conditions
4// are met:
5// * Redistributions of source code must retain the above copyright
6// notice, this list of conditions and the following disclaimer.
7// * Redistributions in binary form must reproduce the above copyright
8// notice, this list of conditions and the following disclaimer in the
9// documentation and/or other materials provided with the distribution.
10// * Neither the name of NVIDIA CORPORATION nor the names of its
11// contributors may be used to endorse or promote products derived
12// from this software without specific prior written permission.
13//
14// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
15// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
18// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25//
26// Copyright (c) 2008-2021 NVIDIA Corporation. All rights reserved.
27// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
28// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
29
30#ifndef GU_INTERSECTION_TRIANGLE_BOX_H
31#define GU_INTERSECTION_TRIANGLE_BOX_H
32
33#include "foundation/PxMat33.h"
34#include "common/PxPhysXCommonConfig.h"
35#include "CmPhysXCommon.h"
36
37namespace physx
38{
39namespace Gu
40{
41 class Box;
42 class BoxPadded;
43
44 /**
45 Tests if a triangle overlaps a box (AABB). This is the reference non-SIMD code.
46
47 \param center [in] the box center
48 \param extents [in] the box extents
49 \param p0 [in] triangle's first point
50 \param p1 [in] triangle's second point
51 \param p2 [in] triangle's third point
52 \return true if triangle overlaps box
53 */
54 PX_PHYSX_COMMON_API Ps::IntBool intersectTriangleBox_ReferenceCode(const PxVec3& center, const PxVec3& extents, const PxVec3& p0, const PxVec3& p1, const PxVec3& p2);
55
56 /**
57 Tests if a triangle overlaps a box (AABB). This is the optimized SIMD code.
58
59 WARNING: the function has various SIMD requirements, left to the calling code:
60 - function will load 4 bytes after 'center'. Make sure it's safe to load from there.
61 - function will load 4 bytes after 'extents'. Make sure it's safe to load from there.
62 - function will load 4 bytes after 'p0'. Make sure it's safe to load from there.
63 - function will load 4 bytes after 'p1'. Make sure it's safe to load from there.
64 - function will load 4 bytes after 'p2'. Make sure it's safe to load from there.
65 If you can't guarantee these requirements, please use the non-SIMD reference code instead.
66
67 \param center [in] the box center.
68 \param extents [in] the box extents
69 \param p0 [in] triangle's first point
70 \param p1 [in] triangle's second point
71 \param p2 [in] triangle's third point
72 \return true if triangle overlaps box
73 */
74 PX_PHYSX_COMMON_API Ps::IntBool intersectTriangleBox_Unsafe(const PxVec3& center, const PxVec3& extents, const PxVec3& p0, const PxVec3& p1, const PxVec3& p2);
75
76 /**
77 Tests if a triangle overlaps a box (OBB).
78
79 There are currently no SIMD-related requirements for p0, p1, p2.
80
81 \param box [in] the box
82 \param p0 [in] triangle's first point
83 \param p1 [in] triangle's second point
84 \param p2 [in] triangle's third point
85 \return true if triangle overlaps box
86 */
87 PX_PHYSX_COMMON_API Ps::IntBool intersectTriangleBox(const BoxPadded& box, const PxVec3& p0, const PxVec3& p1, const PxVec3& p2);
88} // namespace Gu
89}
90
91#endif
92

source code of qtquick3dphysics/src/3rdparty/PhysX/source/geomutils/include/GuIntersectionTriangleBox.h