Point Cloud Library (PCL)
1.7.2
Main Page
Modules
Namespaces
Classes
surface
include
pcl
surface
3rdparty
opennurbs
opennurbs_cylinder.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_CYLINDER_INC_)
18
#define OPENNURBS_CYLINDER_INC_
19
20
class
ON_NurbsSurface
;
21
class
ON_RevSurface
;
22
class
ON_Brep
;
23
24
/*
25
Description:
26
ON_Cylinder is a right circular cylinder.
27
*/
28
class
ON_CLASS
ON_Cylinder
29
{
30
public
:
31
ON_Cylinder
();
// zeros all fields - cylinder is invalid
32
33
ON_Cylinder
(
// infinte cylinder
34
const
ON_Circle
&
// point on the bottom plane
35
);
36
37
ON_Cylinder
(
// infinte cylinder
38
const
ON_Circle
&,
// point on the bottom plane
39
double
// height
40
);
41
42
~
ON_Cylinder
();
43
44
bool
Create(
45
const
ON_Circle
&
// point on the bottom plane
46
);
47
48
bool
Create(
49
const
ON_Circle
&,
// point on the bottom plane
50
double
// height
51
);
52
53
bool
IsValid()
const
;
// returns true if all fields contain reasonable
54
// information and equation jibes with point and Z.
55
56
bool
IsFinite()
const
;
// returns true if the cylinder is finite
57
// (height[0] != height[1]) and false if the
58
// cylinder is infinite.
59
60
const
ON_3dVector
& Axis()
const
;
61
const
ON_3dPoint
& Center()
const
;
62
double
Height()
const
;
// returns 0 for infinite cylinder
63
ON_Circle
CircleAt(
64
double
// linear parameter
65
)
const
;
66
ON_Line
LineAt(
67
double
// angular parameter
68
)
const
;
69
70
// evaluate parameters and return point
71
ON_3dPoint
PointAt(
72
double
,
// angular parameter [0,2pi]
73
double
// linear parameter (height from base circle's plane)
74
)
const
;
75
ON_3dPoint
NormalAt(
76
double
,
// angular parameter [0,2pi]
77
double
// linear parameter (height from base circle's plane)
78
)
const
;
79
80
// returns parameters of point on cylinder that is closest to given point
81
bool
ClosestPointTo(
82
ON_3dPoint
,
83
double
*,
// angular parameter [0,2pi]
84
double
*
// linear parameter (height from base circle's plane)
85
)
const
;
86
// returns point on cylinder that is closest to given point
87
ON_3dPoint
ClosestPointTo(
88
ON_3dPoint
89
)
const
;
90
91
// For intersections see ON_Intersect();
92
93
// rotate cylinder about its origin
94
bool
Rotate(
95
double
,
// sin(angle)
96
double
,
// cos(angle)
97
const
ON_3dVector
&
// axis of rotation
98
);
99
bool
Rotate(
100
double
,
// angle in radians
101
const
ON_3dVector
&
// axis of rotation
102
);
103
104
// rotate cylinder about a point and axis
105
bool
Rotate(
106
double
,
// sin(angle)
107
double
,
// cos(angle)
108
const
ON_3dVector
&,
// axis of rotation
109
const
ON_3dPoint
&
// center of rotation
110
);
111
bool
Rotate(
112
double
,
// angle in radians
113
const
ON_3dVector
&,
// axis of rotation
114
const
ON_3dPoint
&
// center of rotation
115
);
116
117
bool
Translate(
118
const
ON_3dVector
&
119
);
120
121
// parameterization of NURBS surface does not match cylinder's transcendental paramaterization
122
int
GetNurbForm(
ON_NurbsSurface
& )
const
;
// returns 0=failure, 2=success
123
124
/*
125
Description:
126
Creates a surface of revolution definition of the cylinder.
127
Parameters:
128
srf - [in] if not NULL, then this srf is used.
129
Result:
130
A surface of revolution or NULL if the cylinder is not
131
valid or is infinite.
132
*/
133
ON_RevSurface
* RevSurfaceForm(
ON_RevSurface
* srf = NULL )
const
;
134
135
public
:
// members left public
136
// base circle
137
ON_Circle
circle
;
138
139
140
// If height[0] = height[1], the cylinder is infinite,
141
// Otherwise, height[0] < height[1] and the center of
142
// the "bottom" cap is
143
//
144
// circle.plane.origin + height[0]*circle.plane.zaxis,
145
//
146
// and the center of the top cap is
147
//
148
// circle.plane.origin + height[1]*circle.plane.zaxis.
149
double
height[2];
150
};
151
152
#endif
ON_NurbsSurface
Definition:
opennurbs_nurbssurface.h:64
ON_Cylinder
Definition:
opennurbs_cylinder.h:28
ON_Circle
Definition:
opennurbs_circle.h:33
ON_Cylinder::circle
ON_Circle circle
Definition:
opennurbs_cylinder.h:137
ON_Line
Definition:
opennurbs_line.h:20
ON_Brep
Definition:
opennurbs_brep.h:1570
ON_3dPoint
Definition:
opennurbs_point.h:418
ON_RevSurface
Definition:
opennurbs_revsurface.h:21
ON_3dVector
Definition:
opennurbs_point.h:952