1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-10 18:51:21 +03:00
occt/src/Voxel/Voxel_OctBoolDS.cdl
bugmaster b311480ed5 0023024: Update headers of OCCT files
Added appropriate copyright and license information in source files
2012-03-21 19:43:04 +04:00

145 lines
5.5 KiB
Plaintext
Executable File

-- Created on: 2008-08-26
-- Created by: Vladislav ROMASHKO
-- Copyright (c) 2008-2012 OPEN CASCADE SAS
--
-- The content of this file is subject to the Open CASCADE Technology Public
-- License Version 6.5 (the "License"). You may not use the content of this file
-- except in compliance with the License. Please obtain a copy of the License
-- at http://www.opencascade.org and read it completely before using this file.
--
-- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
--
-- The Original Code and all software distributed under the License is
-- distributed on an "AS IS" basis, without warranty of any kind, and the
-- Initial Developer hereby disclaims all such warranties, including without
-- limitation, any warranties of merchantability, fitness for a particular
-- purpose or non-infringement. Please see the License for the specific terms
-- and conditions governing the rights and limitations under the License.
class OctBoolDS from Voxel inherits DS from Voxel
---Purpose: A 3D voxel model keeping a boolean flag (1 or 0)
-- value for each voxel, and having an opportunity to split each voxel
-- into 8 sub-voxels.
is
Create
---Purpose: An empty constructor.
returns OctBoolDS from Voxel;
Create(x : Real from Standard;
y : Real from Standard;
z : Real from Standard;
x_len : Real from Standard;
y_len : Real from Standard;
z_len : Real from Standard;
nb_x : Integer from Standard;
nb_y : Integer from Standard;
nb_z : Integer from Standard)
---Purpose: A constructor initializing the voxel model.
-- (x, y, z) - the start point of the box.
-- (x_len, y_len, z_len) - lengths in x, y and z directions along axes of a co-ordinate system.
-- (nb_x, nb_y, nb_z) - number of splits (voxels) along x, y and z directions.
returns OctBoolDS from Voxel;
Init(me : in out;
x : Real from Standard;
y : Real from Standard;
z : Real from Standard;
x_len : Real from Standard;
y_len : Real from Standard;
z_len : Real from Standard;
nb_x : Integer from Standard;
nb_y : Integer from Standard;
nb_z : Integer from Standard)
---Purpose: Initialization of the voxel model.
-- (x, y, z) - the start point of the box.
-- (x_len, y_len, z_len) - lengths in x, y and z directions along axes of a co-ordinate system.
-- (nb_x, nb_y, nb_z) - number of splits (voxels) along x, y and z directions.
is redefined virtual;
Destroy(me : in out);
---C++: alias ~
---Purpose: A destructor of the voxel model.
SetZero(me : in out);
---Purpose: The method sets all values equal to 0 (false) and
-- releases the memory.
OptimizeMemory(me : in out);
---Purpose: The method searches voxels with equal-value of sub-voxels
-- and removes them (remaining the value for the voxel).
Set(me : in out;
ix : Integer from Standard;
iy : Integer from Standard;
iz : Integer from Standard;
data : Boolean from Standard);
---Purpose: Defines a value for voxel with co-ordinates (ix, iy, iz).
-- If the voxel is split into 8 sub-voxels, the split disappears.
-- Initial state of the model is so that all voxels have value 0 (false),
-- and this data doesn't occupy memory.
-- Memory for data is allocating during setting non-zero values (true).
Set(me : in out;
ix : Integer from Standard;
iy : Integer from Standard;
iz : Integer from Standard;
ioct : Integer from Standard;
data : Boolean from Standard);
---Purpose: Defines a value for a sub-voxel of a voxel with co-ordinates (ix, iy, iz).
-- If the voxel is not split into 8 sub-voxels yet, this method splits the voxel.
-- Range of sub-voxels is 0 - 7.
Get(me;
ix : Integer from Standard;
iy : Integer from Standard;
iz : Integer from Standard)
---Purpose: Returns the value of voxel with co-ordinates (ix, iy, iz).
-- Warning!: the returned value may not coincide with the value of its 8 sub-voxels.
-- Use the method ::IsSplit() to check whether a voxel has sub-voxels.
returns Boolean from Standard;
Get(me;
ix : Integer from Standard;
iy : Integer from Standard;
iz : Integer from Standard;
ioct : Integer from Standard)
---Purpose: Returns the value of a sub-voxel of a voxel with co-ordinates (ix, iy, iz).
-- If the voxel is not split, it returns the value of the voxel.
-- Range of sub-voxels is 0 - 7.
returns Boolean from Standard;
IsSplit(me;
ix : Integer from Standard;
iy : Integer from Standard;
iz : Integer from Standard)
---Purpose: Returns true if the voxel is split into 8 sub-voxels.
returns Boolean from Standard;
---Category: Private area
-- ============
Split(me : in out;
ix : Integer from Standard;
iy : Integer from Standard;
iz : Integer from Standard)
is private;
UnSplit(me : in out;
ix : Integer from Standard;
iy : Integer from Standard;
iz : Integer from Standard)
is private;
fields
mySubVoxels : Address from Standard;
end OctBoolDS;