Point Cloud Library (PCL) 1.13.0
Loading...
Searching...
No Matches
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
20class ON_NurbsSurface;
21class ON_RevSurface;
22class ON_Brep;
23
24/*
25Description:
26 ON_Cylinder is a right circular cylinder.
27*/
28class ON_CLASS ON_Cylinder
29{
30public:
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
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
64 double // linear parameter
65 ) const;
67 double // angular parameter
68 ) const;
69
70 // evaluate parameters and return point
72 double, // angular parameter [0,2pi]
73 double // linear parameter (height from base circle's plane)
74 ) const;
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
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
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
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 */
134
135public: // members left public
136 // base 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
double Height() const
ON_3dPoint ClosestPointTo(ON_3dPoint) const
bool Translate(const ON_3dVector &)
const ON_3dPoint & Center() const
ON_Line LineAt(double) const
ON_Cylinder(const ON_Circle &)
bool IsFinite() const
bool Rotate(double, double, const ON_3dVector &)
ON_Cylinder(const ON_Circle &, double)
ON_3dPoint NormalAt(double, double) const
bool Rotate(double, double, const ON_3dVector &, const ON_3dPoint &)
int GetNurbForm(ON_NurbsSurface &) const
bool Rotate(double, const ON_3dVector &, const ON_3dPoint &)
bool Create(const ON_Circle &)
const ON_3dVector & Axis() const
bool ClosestPointTo(ON_3dPoint, double *, double *) const
ON_Circle CircleAt(double) const
bool Create(const ON_Circle &, double)
ON_3dPoint PointAt(double, double) const
ON_RevSurface * RevSurfaceForm(ON_RevSurface *srf=NULL) const
bool IsValid() const
bool Rotate(double, const ON_3dVector &)