📄 ivp_compact_surface.hxx
字号:
// Copyright (C) Ipion Software GmbH 1999-2000. All rights reserved.
// IVP_EXPORT_PUBLIC
/********************************************************************************
* Filename: ivp_compact_surface.hxx
* Description: This file contains the most important class to describe an
* object's geometrical (and thus physical) shape, the COMPACT
* SURFACE.
* Classes: IVP_Compact_Surface
********************************************************************************/
#ifndef _IVP_COMPACT_SURFACE_INCLUDED
#define _IVP_COMPACT_SURFACE_INCLUDED
class IVP_Compact_Ledgetree_Node;
#define IVP_COMPACT_SURFACE_DEVIATION_STEP_SIZE (1.0f / 250.0f )
/********************************************************************************
* Class: IVP_Compact_Surface
* Description: The compact surface class is the most important class for all
* objects in the Ipion engine as it describes the geometrical
* topology and some additional basic values.
* Note: This class is just the HEADER for a far more complex (and
* internal) data structure. So DO NOT change any of these
* variables or you will certainly break the engine's neck! :-)
* Note: This structure has to be 16byte aligned!
* Note: Do not create a compact surface manually! Instead use one
* of the various builder classes to create a compact surface.
* Important: Only use "ivp_free_aligned()" to free a compact surface!
*******************************************************************************/
class IVP_Compact_Surface {
IVP_Compact_Surface(){;};
public:
IVP_U_Float_Point3 mass_center;
IVP_U_Float_Point3 rotation_inertia;
IVP_FLOAT upper_limit_radius;
unsigned int max_factor_surface_deviation:8;
int byte_size:24; // size of whole structure in bytes
int offset_ledgetree_root; // offset to root node of internal ledgetree
int dummy[3]; // 16byte memory align
/* Note: to get geom center use root node */
int get_size() const { return byte_size; };
/******************************************************************************
* Method: get_compact_ledge_tree_root
* Description: INTERNAL METHOD
*****************************************************************************/
const IVP_Compact_Ledgetree_Node *get_compact_ledge_tree_root() const {
char *base = (char *)(((int)this) + this->offset_ledgetree_root);
return((const IVP_Compact_Ledgetree_Node *)base);
}
// endian conversion support:
void byte_swap_all(IVP_BOOL swap_points = IVP_TRUE, int point_estimate = 100);
// will recurse to all children / related data (once the offsets have been byte swapped of course!)
// It will also swap all point data found if swap_points is true.
void byte_swap(); // just do this data, do not recurse to nodes
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -