43 #ifndef __CU_POLY2_H__
44 #define __CU_POLY2_H__
144 std::vector<Vec2> _vertices;
146 std::vector<unsigned short> _indices;
153 #pragma mark Constructors
170 Poly2(
const std::vector<Vec2>& vertices) {
set(vertices); }
188 Poly2(
const std::vector<Vec2>& vertices,
const std::vector<unsigned short>& indices) {
189 set(vertices, indices);
205 Poly2(
const std::vector<float>& vertices) {
set(vertices); }
227 Poly2(
const std::vector<float>& vertices,
const std::vector<unsigned short>& indices) {
228 set(vertices, indices);
241 set(vertices, vertsize, voffset);
257 Poly2(
float* vertices,
int vertsize,
int voffset=0) {
258 set(vertices, vertsize, voffset);
281 Poly2(
Vec2* vertices,
int vertsize,
unsigned short* indices,
int indxsize,
282 int voffset=0,
int ioffset=0) {
283 set(vertices, vertsize, indices, indxsize, voffset, ioffset);
310 Poly2(
float* vertices,
int vertsize,
unsigned short* indices,
int indxsize,
311 int voffset=0,
int ioffset=0) {
312 set(vertices, vertsize, indices, indxsize, voffset, ioffset);
331 _vertices(std::move(poly._vertices)), _indices(std::move(poly._indices)),
332 _bounds(std::move(poly._bounds)), _type(poly._type) {}
358 #pragma mark Static Constructors
476 _vertices = std::move(other._vertices);
477 _indices = std::move(other._indices);
478 _bounds = std::move(other._bounds);
508 Poly2&
set(
const std::vector<Vec2>& vertices);
528 Poly2&
set(
const std::vector<Vec2>& vertices,
const std::vector<unsigned short>& indices);
545 Poly2&
set(
const std::vector<float>& vertices);
571 Poly2&
set(
const std::vector<float>& vertices,
const std::vector<unsigned short>& indices);
586 Poly2&
set(
Vec2* vertices,
int vertsize,
int voffset=0);
605 Poly2&
set(
float* vertices,
int vertsize,
int voffset=0) {
606 return set((
Vec2*)vertices, vertsize/2, voffset/2);
633 Poly2&
set(
Vec2* vertices,
int vertsize,
unsigned short* indices,
int indxsize,
634 int voffset=0,
int ioffset=0);
664 Poly2&
set(
float* vertices,
int vertsize,
unsigned short* indices,
int indxsize,
665 int voffset=0,
int ioffset=0) {
666 return set((
Vec2*)vertices, vertsize/2, indices, indxsize, voffset/2, ioffset);
717 #pragma mark Index Methods
762 Poly2&
setIndices(
unsigned short* indices,
int indxsize,
int ioffset=0);
805 #pragma mark Polygon Attributes
811 size_t size()
const {
return _vertices.size(); }
831 Vec2&
at(
int index) {
return _vertices.at(index); }
841 const std::vector<Vec2>&
getVertices()
const {
return _vertices; }
851 const std::vector<unsigned short>&
getIndices()
const {
return _indices; }
863 std::vector<unsigned short>&
getIndices() {
return _indices; }
911 #pragma mark Operators
1176 #pragma mark Geometry Methods
1224 bool incident(
const Vec2& point,
float variance=CU_MATH_EPSILON)
const;
1228 #pragma mark Internal Helper Methods
1236 void computeBounds();
1262 Vec3 getBarycentric(
const Vec2& point,
unsigned short index)
const;
size_t indexSize() const
Definition: CUPoly2.h:818
static const Rect ZERO
Definition: CURect.h:54
Poly2 & operator*=(float scale)
Type
Definition: CUPoly2.h:123
Definition: CUSimpleTriangulator.h:66
Definition: CUDelaunayTriangulator.h:75
Definition: CUPoly2.h:115
Vec2 & at(int index)
Definition: CUPoly2.h:831
friend Poly2 operator*(float scale, const Poly2 &poly)
Definition: CUPoly2.h:1160
Poly2 operator*(float scale) const
Definition: CUPoly2.h:1033
Poly2 operator*(const Vec2 &scale) const
Definition: CUPoly2.h:1048
Poly2 operator/(const Vec2 &scale) const
Definition: CUPoly2.h:1103
Definition: CUAffine2.h:63
const Rect & getBounds() const
Definition: CUPoly2.h:873
void setType(Type type)
Definition: CUPoly2.h:907
Poly2(Poly2 &&poly)
Definition: CUPoly2.h:330
std::vector< unsigned short > & getIndices()
Definition: CUPoly2.h:863
Poly2 & operator/=(float scale)
Poly2(const Poly2 &poly)
Definition: CUPoly2.h:323
Poly2(const std::vector< float > &vertices, const std::vector< unsigned short > &indices)
Definition: CUPoly2.h:227
Poly2 & operator-=(float offset)
Poly2 operator/(float scale) const
Definition: CUPoly2.h:1088
Poly2(const std::vector< float > &vertices)
Definition: CUPoly2.h:205
Poly2(Vec2 *vertices, int vertsize, unsigned short *indices, int indxsize, int voffset=0, int ioffset=0)
Definition: CUPoly2.h:281
Poly2 & clear()
Definition: CUPoly2.h:708
Poly2 operator+(const Vec2 &offset) const
Definition: CUPoly2.h:1125
Poly2 & operator=(const Poly2 &other)
Definition: CUPoly2.h:466
bool contains(const Vec2 &point) const
Poly2 operator+(float offset) const
Definition: CUPoly2.h:1114
Poly2(float *vertices, int vertsize, int voffset=0)
Definition: CUPoly2.h:257
Type getType() const
Definition: CUPoly2.h:890
static Poly2 createLine(const Vec2 &origin, const Vec2 &dest)
Poly2 operator-(const Vec2 &offset)
Definition: CUPoly2.h:1147
Poly2()
Definition: CUPoly2.h:161
Poly2 & set(float *vertices, int vertsize, unsigned short *indices, int indxsize, int voffset=0, int ioffset=0)
Definition: CUPoly2.h:664
size_t size() const
Definition: CUPoly2.h:811
Definition: CUPathExtruder.h:129
std::vector< Vec2 > convexHull() const
bool incident(const Vec2 &point, float variance=CU_MATH_EPSILON) const
Poly2 operator*(const Mat4 &transform) const
Definition: CUPoly2.h:1073
Poly2(float *vertices, int vertsize, unsigned short *indices, int indxsize, int voffset=0, int ioffset=0)
Definition: CUPoly2.h:310
Poly2 operator-(float offset)
Definition: CUPoly2.h:1136
Poly2 & operator+=(float offset)
Poly2(Vec2 *vertices, int vertsize, int voffset=0)
Definition: CUPoly2.h:240
const std::vector< unsigned short > & getIndices() const
Definition: CUPoly2.h:851
Poly2 & set(const std::vector< Vec2 > &vertices)
~Poly2()
Definition: CUPoly2.h:354
Poly2(const std::vector< Vec2 > &vertices)
Definition: CUPoly2.h:170
const std::vector< Vec2 > & getVertices() const
Definition: CUPoly2.h:841
friend Poly2 operator*(const Vec2 &scale, const Poly2 &poly)
Definition: CUPoly2.h:1173
Definition: CUPathOutliner.h:79
Poly2 & setIndices(const std::vector< unsigned short > &indices)
Poly2 & set(float *vertices, int vertsize, int voffset=0)
Definition: CUPoly2.h:605
Definition: CUAction.h:51
Poly2 operator*=(const Affine2 &transform) const
Definition: CUPoly2.h:1060
static Poly2 createTriangle(const Vec2 &a, const Vec2 &b, const Vec2 &c, bool solid=true)
Poly2(const Rect &rect, bool solid=true)
Definition: CUPoly2.h:349
Poly2(const std::vector< Vec2 > &vertices, const std::vector< unsigned short > &indices)
Definition: CUPoly2.h:188
Definition: CUCubicSplineApproximator.h:70
static Poly2 createEllipse(const Vec2 ¢er, const Size &size, unsigned int segments, bool solid=true)
Poly2 & operator=(Poly2 &&other)
Definition: CUPoly2.h:475