Point Cloud Library (PCL)
1.7.1
Main Page
Modules
Namespaces
Classes
surface
include
pcl
surface
3rdparty
opennurbs
opennurbs_cone.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(ON_CONE_INC_)
18
#define ON_CONE_INC_
19
20
class
ON_NurbsSurface
;
21
class
ON_Brep
;
22
23
// Description:
24
// Lightweight right circular cone. Use ON_ConeSurface if
25
// you need ON_Cone geometry as a virtual ON_Surface.
26
class
ON_CLASS
ON_Cone
27
{
28
public
:
29
30
// Creates a cone with world XY plane as the base plane,
31
// center = (0,0,0), radius = 0.0, height = 0.0.
32
ON_Cone
();
33
34
// See ON_Cone::Create.
35
ON_Cone
(
36
const
ON_Plane
& plane,
37
double
height,
38
double
radius
39
);
40
41
~
ON_Cone
();
42
43
// Description:
44
// Creates a right circular cone from a plane, height,
45
// and radius.
46
// plane - [in] The apex of cone is at plane.origin and
47
// the axis of the cone is plane.zaxis.
48
// height - [in] The center of the base is height*plane.zaxis.
49
// radius - [in] tan(cone angle) = radius/height
50
ON_BOOL32 Create(
51
const
ON_Plane
& plane,
52
double
height,
53
double
radius
54
);
55
56
// Returns true if plane is valid, height is not zero, and
57
// radius is not zero.
58
ON_BOOL32 IsValid()
const
;
59
60
// Returns:
61
// Center of base circle.
62
// Remarks:
63
// The base point is plane.origin + height*plane.zaxis.
64
ON_3dPoint
BasePoint()
const
;
65
66
// Returns:
67
// Point at the tip of the cone.
68
// Remarks:
69
// The apex point is plane.origin.
70
const
ON_3dPoint
& ApexPoint()
const
;
71
72
// Returns:
73
// Unit vector axis of cone.
74
const
ON_3dVector
& Axis()
const
;
75
76
// Returns:
77
// The angle (in radians) between the axis and the
78
// side of the cone.
79
// The angle and the height have the same sign.
80
double
AngleInRadians()
const
;
81
82
// Returns:
83
// The angle Iin degrees) between the axis and the side.
84
// The angle and the height have the same sign.
85
double
AngleInDegrees()
const
;
86
87
// evaluate parameters and return point
88
// Parameters:
89
// radial_parameter - [in] 0.0 to 2.0*ON_PI
90
// height_parameter - [in] 0 = apex, height = base
91
ON_3dPoint
PointAt(
92
double
radial_parameter,
93
double
height_parameter
94
)
const
;
95
96
// Parameters:
97
// radial_parameter - [in] (in radians) 0.0 to 2.0*ON_PI
98
// height_parameter - [in] 0 = apex, height = base
99
// Remarks:
100
// If radius>0 and height>0, then the normal points "out"
101
// when height_parameter >= 0.
102
ON_3dVector
NormalAt(
103
double
radial_parameter,
104
double
height_parameter
105
)
const
;
106
107
// Description:
108
// Get iso curve circle at a specified height.
109
// Parameters:
110
// height_parameter - [in] 0 = apex, height = base
111
ON_Circle
CircleAt(
112
double
height_parameter
113
)
const
;
114
115
// Description:
116
// Get iso curve line segment at a specified angle.
117
// Parameters:
118
// radial_parameter - [in] (in radians) 0.0 to 2.0*ON_PI
119
ON_Line
LineAt(
120
double
radial_parameter
121
)
const
;
122
123
// returns parameters of point on cone that is closest to given point
124
bool
ClosestPointTo(
125
ON_3dPoint
point,
126
double
* radial_parameter,
127
double
* height_parameter
128
)
const
;
129
130
// returns point on cone that is closest to given point
131
ON_3dPoint
ClosestPointTo(
132
ON_3dPoint
133
)
const
;
134
135
ON_BOOL32 Transform(
const
ON_Xform
& );
136
137
// rotate cone about its origin
138
ON_BOOL32 Rotate(
139
double
sin_angle,
140
double
cos_angle,
141
const
ON_3dVector
& axis_of_rotation
142
);
143
144
ON_BOOL32 Rotate(
145
double
angle_in_radians,
146
const
ON_3dVector
& axis_of_rotation
147
);
148
149
// rotate cone about a point and axis
150
ON_BOOL32 Rotate(
151
double
sin_angle,
152
double
cos_angle,
153
const
ON_3dVector
& axis_of_rotation,
154
const
ON_3dPoint
& center_of_rotation
155
);
156
ON_BOOL32 Rotate(
157
double
angle_in_radians,
158
const
ON_3dVector
& axis_of_rotation,
159
const
ON_3dPoint
& center_of_rotation
160
);
161
162
ON_BOOL32 Translate(
163
const
ON_3dVector
& delta
164
);
165
166
ON_BOOL32 GetNurbForm(
ON_NurbsSurface
& )
const
;
167
168
/*
169
Description:
170
Creates a surface of revolution definition of the cylinder.
171
Parameters:
172
srf - [in] if not NULL, then this srf is used.
173
Result:
174
A surface of revolution or NULL if the cylinder is not
175
valid or is infinite.
176
*/
177
ON_RevSurface
* RevSurfaceForm(
ON_RevSurface
* srf = NULL )
const
;
178
179
public
:
180
ON_Plane
plane
;
// apex = plane.origin, axis = plane.zaxis
181
double
height
;
// not zero
182
double
radius
;
// not zero
183
};
184
185
#endif
ON_Brep
Definition:
opennurbs_brep.h:1570
ON_Cone::radius
double radius
Definition:
opennurbs_cone.h:182
ON_NurbsSurface
Definition:
opennurbs_nurbssurface.h:64
ON_Xform
Definition:
opennurbs_xform.h:28
ON_Cone::height
double height
Definition:
opennurbs_cone.h:181
ON_Cone
Definition:
opennurbs_cone.h:26
ON_3dPoint
Definition:
opennurbs_point.h:418
ON_3dVector
Definition:
opennurbs_point.h:952
ON_Line
Definition:
opennurbs_line.h:20
ON_Circle
Definition:
opennurbs_circle.h:33
ON_Cone::plane
ON_Plane plane
Definition:
opennurbs_cone.h:180
ON_Plane
Definition:
opennurbs_plane.h:20
ON_RevSurface
Definition:
opennurbs_revsurface.h:21