Point Cloud Library (PCL)
1.7.0
Main Page
Modules
Namespaces
Classes
surface
include
pcl
surface
3rdparty
opennurbs
opennurbs_pointgrid.h
1
/* $NoKeywords: $ */
2
/*
3
//
4
// Copyright (c) 1993-2012 Robert McNeel & Associates. All rights reserved.
5
// OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert
6
// McNeel & Associates.
7
//
8
// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
9
// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
10
// MERCHANTABILITY ARE HEREBY DISCLAIMED.
11
//
12
// For complete openNURBS copyright information see <http://www.opennurbs.org>.
13
//
14
////////////////////////////////////////////////////////////////
15
*/
16
17
#if !defined(OPENNURBS_POINT_GRID_INC_)
18
#define OPENNURBS_POINT_GRID_INC_
19
20
class
ON_CLASS
ON_PointGrid
:
public
ON_Geometry
21
{
22
public
:
23
ON_PointGrid
();
24
ON_PointGrid
(
const
ON_PointGrid
&);
25
ON_PointGrid
(
26
int
,
// point count0 (>=1)
27
int
// point count1 (>=1)
28
);
29
30
void
Initialize(
void
);
// zeros all fields
31
32
ON_BOOL32 Create(
33
int
,
// point count0 (>=1)
34
int
// point count1 (>=1)
35
);
36
37
void
Destroy();
38
39
virtual
~
ON_PointGrid
();
40
void
EmergencyDestroy
();
// call if memory used by point grid becomes invalid
41
42
ON_PointGrid
&
operator=
(
const
ON_PointGrid
&);
43
44
// point_grid[i][j] returns GetPoint(i,j)
45
ON_3dPoint
* operator[](
int
);
// 0 <= index < PointCount(0)
46
const
ON_3dPoint
* operator[](
int
)
const
;
// 0 <= index < PointCount(0)
47
48
/////////////////////////////////////////////////////////////////
49
// ON_Object overrides
50
51
/*
52
Description:
53
Tests an object to see if its data members are correctly
54
initialized.
55
Parameters:
56
text_log - [in] if the object is not valid and text_log
57
is not NULL, then a brief englis description of the
58
reason the object is not valid is appened to the log.
59
The information appended to text_log is suitable for
60
low-level debugging purposes by programmers and is
61
not intended to be useful as a high level user
62
interface tool.
63
Returns:
64
@untitled table
65
true object is valid
66
false object is invalid, uninitialized, etc.
67
Remarks:
68
Overrides virtual ON_Object::IsValid
69
*/
70
ON_BOOL32
IsValid
(
ON_TextLog
* text_log = NULL )
const
;
71
72
void
Dump
(
ON_TextLog
& )
const
;
// for debugging
73
74
ON_BOOL32
Write
(
75
ON_BinaryArchive
&
// open binary file
76
)
const
;
77
78
ON_BOOL32
Read
(
79
ON_BinaryArchive
&
// open binary file
80
);
81
82
ON::object_type
ObjectType
()
const
;
83
84
/////////////////////////////////////////////////////////////////
85
// ON_Geometry overrides
86
87
int
Dimension
()
const
;
88
89
ON_BOOL32
GetBBox
(
// returns true if successful
90
double
*,
// minimum
91
double
*,
// maximum
92
ON_BOOL32 =
false
// true means grow box
93
)
const
;
94
95
/*
96
Description:
97
Get tight bounding box of the point grid.
98
Parameters:
99
tight_bbox - [in/out] tight bounding box
100
bGrowBox -[in] (default=false)
101
If true and the input tight_bbox is valid, then returned
102
tight_bbox is the union of the input tight_bbox and the
103
tight bounding box of the point grid.
104
xform -[in] (default=NULL)
105
If not NULL, the tight bounding box of the transformed
106
point grid is calculated. The point grid is not modified.
107
Returns:
108
True if the returned tight_bbox is set to a valid
109
bounding box.
110
*/
111
bool
GetTightBoundingBox
(
112
ON_BoundingBox
& tight_bbox,
113
int
bGrowBox =
false
,
114
const
ON_Xform
* xform = 0
115
)
const
;
116
117
ON_BOOL32
Transform
(
118
const
ON_Xform
&
119
);
120
121
// virtual ON_Geometry::IsDeformable() override
122
bool
IsDeformable
()
const
;
123
124
// virtual ON_Geometry::MakeDeformable() override
125
bool
MakeDeformable
();
126
127
ON_BOOL32
SwapCoordinates
(
128
int
,
int
// indices of coords to swap
129
);
130
131
/////////////////////////////////////////////////////////////////
132
// Interface
133
134
ON_BOOL32 IsClosed(
135
int
// dir
136
)
const
;
137
138
int
PointCount(
// number of points in grid direction
139
int
// dir 0 = "s", 1 = "t"
140
)
const
;
141
142
int
PointCount(
// total number of points in grid
143
void
144
)
const
;
145
146
ON_3dPoint
& Point(
147
int
,
int
// point index ( 0 <= i <= PointCount(0), 0 <= j <= PointCount(1)
148
);
149
150
ON_3dPoint
Point(
151
int
,
int
// point index ( 0 <= i <= PointCount(0), 0 <= j <= PointCount(1)
152
)
const
;
153
154
double
* PointArray();
155
156
const
double
* PointArray()
const
;
157
158
int
PointArrayStride(
// point stride in grid direction
159
int
// dir 0 = "s", 1 = "t"
160
)
const
;
161
162
ON_BOOL32 SetPoint(
// set a single point
163
int
,
int
,
// point index ( 0 <= i <= PointCount(0), 0 <= j <= PointCount(1)
164
const
ON_3dPoint
&
// value of point
165
);
166
167
ON_BOOL32 GetPoint(
// get a single control vertex
168
int
,
int
,
// CV index ( 0 <= i <= CVCount(0), 0 <= j <= CVCount(1)
169
ON_3dPoint
&
// gets euclidean cv when NURBS is rational
170
)
const
;
171
172
ON_BOOL32 Reverse(
// reverse grid order
173
int
// dir 0 = "s", 1 = "t"
174
);
175
176
ON_BOOL32 Transpose();
// transpose grid points
177
178
/////////////////////////////////////////////////////////////////
179
// Implementation
180
protected
:
181
182
int
m_point_count[2];
// number of points (>=1)
183
int
m_point_stride0
;
// >= m_point_count[1]
184
ON_3dPointArray
m_point
;
185
// point[i][j] = m_point[i*m_point_stride0+j]
186
187
private
:
188
static
ON_3dPoint
m_no_point;
// prevent crashes when sizes are 0
189
190
ON_OBJECT_DECLARE(
ON_PointGrid
);
191
};
192
193
194
#endif