 |
CUGL 1.3
Cornell University Game Library
|
43 #ifndef __CU_POLY2_H__
44 #define __CU_POLY2_H__
138 std::vector<Vec2> _vertices;
140 std::vector<unsigned short> _indices;
147 #pragma mark Constructors
164 Poly2(
const std::vector<Vec2>& vertices) {
set(vertices); }
182 Poly2(
const std::vector<Vec2>& vertices,
const std::vector<unsigned short>& indices) {
183 set(vertices, indices);
199 Poly2(
const std::vector<float>& vertices) {
set(vertices); }
221 Poly2(
const std::vector<float>& vertices,
const std::vector<unsigned short>& indices) {
222 set(vertices, indices);
235 set(vertices, vertsize, voffset);
251 Poly2(
float* vertices,
int vertsize,
int voffset=0) {
252 set(vertices, vertsize, voffset);
275 Poly2(
Vec2* vertices,
int vertsize,
unsigned short* indices,
int indxsize,
276 int voffset=0,
int ioffset=0) {
277 set(vertices, vertsize, indices, indxsize, voffset, ioffset);
304 Poly2(
float* vertices,
int vertsize,
unsigned short* indices,
int indxsize,
305 int voffset=0,
int ioffset=0) {
306 set(vertices, vertsize, indices, indxsize, voffset, ioffset);
325 _vertices(std::move(poly._vertices)), _indices(std::move(poly._indices)),
326 _bounds(std::move(poly._bounds)), _type(poly._type) {}
352 #pragma mark Static Constructors
470 _vertices = std::move(other._vertices);
471 _indices = std::move(other._indices);
472 _bounds = std::move(other._bounds);
502 Poly2&
set(
const std::vector<Vec2>& vertices);
522 Poly2&
set(
const std::vector<Vec2>& vertices,
const std::vector<unsigned short>& indices);
539 Poly2&
set(
const std::vector<float>& vertices);
565 Poly2&
set(
const std::vector<float>& vertices,
const std::vector<unsigned short>& indices);
580 Poly2&
set(
Vec2* vertices,
int vertsize,
int voffset=0);
599 Poly2&
set(
float* vertices,
int vertsize,
int voffset=0) {
600 return set((
Vec2*)vertices, vertsize/2, voffset/2);
627 Poly2&
set(
Vec2* vertices,
int vertsize,
unsigned short* indices,
int indxsize,
628 int voffset=0,
int ioffset=0);
658 Poly2&
set(
float* vertices,
int vertsize,
unsigned short* indices,
int indxsize,
659 int voffset=0,
int ioffset=0) {
660 return set((
Vec2*)vertices, vertsize/2, indices, indxsize, voffset/2, ioffset);
711 #pragma mark Index Methods
756 Poly2&
setIndices(
unsigned short* indices,
int indxsize,
int ioffset=0);
799 #pragma mark Polygon Attributes
805 size_t size()
const {
return _vertices.size(); }
825 Vec2&
at(
int index) {
return _vertices.at(index); }
835 const std::vector<Vec2>&
getVertices()
const {
return _vertices; }
845 const std::vector<unsigned short>&
getIndices()
const {
return _indices; }
857 std::vector<unsigned short>&
getIndices() {
return _indices; }
905 #pragma mark Operators
1172 #pragma mark Geometry Methods
1220 bool incident(
const Vec2& point,
float variance=CU_MATH_EPSILON)
const;
1224 #pragma mark Internal Helper Methods
1232 void computeBounds();
1258 Vec3 getBarycentric(
const Vec2& point,
unsigned short index)
const;
Definition: CUPathOutliner.h:79
Poly2 operator+(const Vec2 &offset) const
Definition: CUPoly2.h:1119
Definition: CUCubicSplineApproximator.h:70
Type
Definition: CUPoly2.h:117
Poly2 & set(float *vertices, int vertsize, unsigned short *indices, int indxsize, int voffset=0, int ioffset=0)
Definition: CUPoly2.h:658
Poly2(const std::vector< float > &vertices, const std::vector< unsigned short > &indices)
Definition: CUPoly2.h:221
const std::vector< Vec2 > & getVertices() const
Definition: CUPoly2.h:835
static Poly2 createTriangle(const Vec2 &a, const Vec2 &b, const Vec2 &c, bool solid=true)
Poly2()
Definition: CUPoly2.h:155
const Rect & getBounds() const
Definition: CUPoly2.h:867
Poly2 & set(const std::vector< Vec2 > &vertices)
Poly2 operator*(float scale) const
Definition: CUPoly2.h:1027
Poly2 operator*(const Mat4 &transform) const
Definition: CUPoly2.h:1067
static Poly2 createEllipse(const Vec2 ¢er, const Size &size, unsigned int segments, bool solid=true)
Poly2(const std::vector< Vec2 > &vertices)
Definition: CUPoly2.h:164
friend Poly2 operator*(float scale, const Poly2 &poly)
Definition: CUPoly2.h:1155
Definition: CUAffine2.h:63
Poly2 & operator=(Poly2 &&other)
Definition: CUPoly2.h:469
Poly2(const Rect &rect, bool solid=true)
Definition: CUPoly2.h:343
Poly2 operator/(float scale) const
Definition: CUPoly2.h:1082
Poly2 & operator*=(float scale)
Poly2(const std::vector< Vec2 > &vertices, const std::vector< unsigned short > &indices)
Definition: CUPoly2.h:182
Poly2 & operator/=(float scale)
Poly2 operator/(const Vec2 &scale) const
Definition: CUPoly2.h:1097
Definition: CUPathExtruder.h:129
Poly2 operator*(const Vec2 &scale) const
Definition: CUPoly2.h:1042
Poly2 & set(float *vertices, int vertsize, int voffset=0)
Definition: CUPoly2.h:599
Poly2(float *vertices, int vertsize, int voffset=0)
Definition: CUPoly2.h:251
Poly2(const Poly2 &poly)
Definition: CUPoly2.h:317
Poly2 operator*=(const Affine2 &transform) const
Definition: CUPoly2.h:1054
friend Poly2 operator*(const Vec2 &scale, const Poly2 &poly)
Definition: CUPoly2.h:1169
bool incident(const Vec2 &point, float variance=CU_MATH_EPSILON) const
std::vector< unsigned short > & getIndices()
Definition: CUPoly2.h:857
~Poly2()
Definition: CUPoly2.h:348
std::vector< Vec2 > convexHull() const
const std::vector< unsigned short > & getIndices() const
Definition: CUPoly2.h:845
bool contains(const Vec2 &point) const
Definition: CUPoly2.h:109
size_t indexSize() const
Definition: CUPoly2.h:812
Poly2(Poly2 &&poly)
Definition: CUPoly2.h:324
Poly2 operator+(float offset) const
Definition: CUPoly2.h:1108
void setType(Type type)
Definition: CUPoly2.h:901
Poly2(Vec2 *vertices, int vertsize, unsigned short *indices, int indxsize, int voffset=0, int ioffset=0)
Definition: CUPoly2.h:275
static Poly2 createLine(const Vec2 &origin, const Vec2 &dest)
Poly2 & operator-=(float offset)
Vec2 & at(int index)
Definition: CUPoly2.h:825
Definition: CUSimpleTriangulator.h:66
size_t size() const
Definition: CUPoly2.h:805
Poly2(Vec2 *vertices, int vertsize, int voffset=0)
Definition: CUPoly2.h:234
Definition: CUDelaunayTriangulator.h:75
Poly2 & operator=(const Poly2 &other)
Definition: CUPoly2.h:460
Poly2 & setIndices(const std::vector< unsigned short > &indices)
Poly2(const std::vector< float > &vertices)
Definition: CUPoly2.h:199
Type getType() const
Definition: CUPoly2.h:884
static const Rect ZERO
Definition: CURect.h:54
Poly2 & clear()
Definition: CUPoly2.h:702
Poly2 operator-(const Vec2 &offset)
Definition: CUPoly2.h:1141
Poly2(float *vertices, int vertsize, unsigned short *indices, int indxsize, int voffset=0, int ioffset=0)
Definition: CUPoly2.h:304
Poly2 & operator+=(float offset)
Poly2 operator-(float offset)
Definition: CUPoly2.h:1130