Main Page Class List Class Members

- Main Page
- User's Guide
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

# sdk/common/NvBlastMath.h

Go to the documentation of this file.

    00001 // This code contains NVIDIA Confidential Information and is disclosed to you
    00002 // under a form of NVIDIA software license agreement provided separately to you.
    00003 //
    00004 // Notice
    00005 // NVIDIA Corporation and its licensors retain all intellectual property and
    00006 // proprietary rights in and to this software and related documentation and
    00007 // any modifications thereto. Any use, reproduction, disclosure, or
    00008 // distribution of this software and related documentation without an express
    00009 // license agreement from NVIDIA Corporation is strictly prohibited.
    00010 //
    00011 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
    00012 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
    00013 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
    00014 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
    00015 //
    00016 // Information and code furnished is believed to be accurate and reliable.
    00017 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
    00018 // information or for any infringement of patents or other rights of third parties that may
    00019 // result from its use. No license is granted by implication or otherwise under any patent
    00020 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
    00021 // This code supersedes and replaces all information previously supplied.
    00022 // NVIDIA Corporation products are not authorized for use as critical
    00023 // components in life support devices or systems without express written approval of
    00024 // NVIDIA Corporation.
    00025 //
    00026 // Copyright (c) 2016-2020 NVIDIA Corporation. All rights reserved.
    00027
    00028
    00029 #ifndef NVBLASTMATH_H
    00030 #define NVBLASTMATH_H
    00031
    00032 #include <math.h>
    00033
    00034 namespace Nv
    00035 {
    00036 namespace Blast
    00037 {
    00038
    00039 namespace VecMath
    00040 {
    00041
    00042
    00043 NV_INLINE void div(float a[3], float divisor)
    00044 {
    00045     for (int i = 0; i < 3; i++)
    00046         a[i] /= divisor;
    00047 }
    00048
    00049 NV_INLINE void mul(float a[3], float multiplier)
    00050 {
    00051     for (int i = 0; i < 3; i++)
    00052         a[i] *= multiplier;
    00053 }
    00054
    00055 NV_INLINE void add(const float a[3], float b[3])
    00056 {
    00057     for (int i = 0; i < 3; i++)
    00058         b[i] = a[i] + b[i];
    00059 }
    00060
    00061 NV_INLINE void add(const float a[3], const float b[3], float r[3])
    00062 {
    00063     for (int i = 0; i < 3; i++)
    00064         r[i] = a[i] + b[i];
    00065 }
    00066
    00067 NV_INLINE void sub(const float a[3], const float b[3], float r[3])
    00068 {
    00069     for (int i = 0; i < 3; i++)
    00070         r[i] = a[i] - b[i];
    00071 }
    00072
    00073 NV_INLINE float dot(const float a[3], const float b[3])
    00074 {
    00075     float r = 0;
    00076     for (int i = 0; i < 3; i++)
    00077         r += a[i] * b[i];
    00078     return r;
    00079 }
    00080
    00081 NV_INLINE float length(const float a[3])
    00082 {
    00083     return sqrtf(dot(a, a));
    00084 }
    00085
    00086 NV_INLINE float dist(const float a[3], const float b[3])
    00087 {
    00088     float v[3];
    00089     sub(a, b, v);
    00090     return length(v);
    00091 }
    00092
    00093 NV_INLINE float normal(const float a[3], float r[3])
    00094 {
    00095     float d = length(a);
    00096     for (int i = 0; i < 3; i++)
    00097         r[i] = a[i] / d;
    00098
    00099     return d;
    00100 }
    00101
    00102
    00103 } // namespace VecMath
    00104
    00105 } // namespace Blast
    00106 } // namespace Nv
    00107
    00108
    00109 #endif // #ifndef NVBLASTMATH_H

Copyright © 2015-2017 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com