v10.0 (2012)
Returns the minimum and maximum coordinates for the visible bounding box of the X3DObject.
If an input transform is specified, it is applied to the bounding box when it is calculated.
Otherwsie, the bounding box that is returned will be in the object's local coordinate space.
If the bounding box is undefined then the minimum coordinates returned will be greater
than the maximum coordinates. This could happen if the object is hidden or if the
object does not contain any geometry.
Note: Only one coordinate needs to be tested to determine if the bounding box is
undefined. (min X > max X)
Object X3DObject.GetBoundingBox( Object in_pXfoObjectToBBoxSpace, Boolean in_bRecursive ); |
oArray = X3DObject.GetBoundingBox( [Transform], [Recursive] ); |
1-dimensional Array containing six values: the minimum X, Y and Z coordinates followed by the maximum X, Y, and Z coordinates of the bounding box.
Parameter | Type | Description |
---|---|---|
Transform | SITransformation | Transform to be applied when the bounding box is calculated |
Recursive | Boolean |
If true include children, otherwise return bounding box for input X3DObject only. Default Value: False |
/* Example using no input transform */ // Create and move (rotate and translate) a torus NewScene( null, false ) ; var oTorus = ActiveSceneRoot.AddGeometry( "Torus", "MeshSurface" ) ; SelectObj( oTorus ) ; Rotate(null, 45, 0, 0, siAbsolute, siPivot, siObj, siX, null, null, null, null, null, null, null, 0, null) ; Translate(null, 3, 2, 1, siAbsolute, siPivot, siObj, siX, null, null, null, null, null, null, null, null, null, 0, null) ; // Find the bounding box var vba = new VBArray( oTorus.GetBoundingBox() ) ; var jsa = vba.toArray() ; // Report the (local) min and max Application.LogMessage( "min:" + jsa[0] + ", " + jsa[1] + ", " + jsa[2] ) ; Application.LogMessage( "max:" + jsa[3] + ", " + jsa[4] + ", " + jsa[5] ) ; |
// Example using an input transform to preserve scaling // // Create and move (rotate and translate) a torus NewScene( null, false ) ; var oTorus = ActiveSceneRoot.AddGeometry( "Torus", "MeshSurface" ) ; SelectObj( oTorus ) ; Scale(null, 0.5, 0.5, 1, siAbsolute, siGlobal, siObj, siY, null, null, null, null, null, null, null, 0, null) ; oTransform = oTorus.Kinematics.Local.Transform ; // Find the bounding box var vba = new VBArray( oTorus.GetBoundingBox(oTransform) ) ; var jsa = vba.toArray() ; // Report the min and max Application.LogMessage( "min:" + jsa[0] + ", " + jsa[1] + ", " + jsa[2] ) ; Application.LogMessage( "max:" + jsa[3] + ", " + jsa[4] + ", " + jsa[5] ) ; // Build a cube that shows the bounding box var oCube = ActiveSceneRoot.AddPrimitive("Cube") ; oCube.length = 1 ; oCube.PosX = (jsa[0]+jsa[3])/2 ; oCube.PosY = (jsa[1]+jsa[4])/2 ; oCube.PosZ = (jsa[2]+jsa[5])/2 ; oCube.sclx = jsa[3]-jsa[0] ; oCube.scly = jsa[4]-jsa[1] ; oCube.sclz = jsa[5]-jsa[2] ; |