GetBoundingBox
When the transformationMatrix is left empty and both startVector and endVector are
given the boundingbox without transformation is calculated and returned.
Syntax
// // Strong typing definition // bool GetBoundingBox( OwlInstance owlInstance, double * transformationMatrix, double * startVector, double * endVector ); static inline bool GetBoundingBox( OwlInstance owlInstance, double * startVector, double * endVector ) { return GetBoundingBox( owlInstance, nullptr, // transformationMatrix startVector, endVector ); } // // Weak typing definition // bool __declspec(dllexport) __stdcall GetBoundingBox( int64_t owlInstance, double * transformationMatrix, double * startVector, double * endVector ); static inline bool GetBoundingBox( int64_t owlInstance, double * startVector, double * endVector ) { return GetBoundingBox( owlInstance, nullptr, // transformationMatrix startVector, endVector ); }
Property owlInstance
Size: 64 bit / 8 byte (value)Property transformationMatrix
Size: 64 bit / 8 byte (reference)Property startVector
Size: 64 bit / 8 byte (reference)Property endVector
Size: 64 bit / 8 byte (reference)
Example (based on pure API calls)
Here you can find code snippits that show how the API call GetBoundingBox can be used.
#include "./include/engine.h" #include <assert.h> void main() { int64_t model = CreateModel(); if (model) { // // Classes // int64_t classBox = GetClassByName(model, "Box"); // // Datatype Properties (attributes) // int64_t propertyLength = GetPropertyByName(model, "length"), propertyWidth = GetPropertyByName(model, "width"), propertyHeight = GetPropertyByName(model, "height"); // // Instances (creating) // int64_t instanceBox = CreateInstance(classBox, nullptr); double length = 2.8, width = 1.3, height = 1.4; SetDatatypeProperty(instanceBox, propertyLength, &length, 1); SetDatatypeProperty(instanceBox, propertyWidth, &width, 1); SetDatatypeProperty(instanceBox, propertyHeight, &height, 1); double transformationMatrix[12], startVector[3], endVector[3]; GetBoundingBox(instanceBox, transformationMatrix, startVector, endVector); assert(endVector[0] == 2.8); length = 4.1; SetDatatypeProperty(instanceBox, propertyLength, &length, 1); assert(endVector[0] == 2.8); GetBoundingBox(instanceBox, transformationMatrix, startVector, endVector); assert(endVector[0] == 4.1); // // Next to the minimum bounding box also the AABB can be retrieved through startVector / endVector // GetBoundingBox(instanceBox, nullptr, startVector, endVector); // // The resulting model can be viewed in 3D-Editor.exe // SaveModel(model, "c:\\created\\myFile.bin"); CloseModel(model); } }