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);
349 #pragma mark Static Constructors
483 Poly2&
set(
const std::vector<Vec2>& vertices);
503 Poly2&
set(
const std::vector<Vec2>& vertices,
const std::vector<unsigned short>& indices);
520 Poly2&
set(
const std::vector<float>& vertices);
546 Poly2&
set(
const std::vector<float>& vertices,
const std::vector<unsigned short>& indices);
561 Poly2&
set(
Vec2* vertices,
int vertsize,
int voffset=0);
580 Poly2&
set(
float* vertices,
int vertsize,
int voffset=0) {
581 return set((
Vec2*)vertices, vertsize/2, voffset/2);
608 Poly2&
set(
Vec2* vertices,
int vertsize,
unsigned short* indices,
int indxsize,
609 int voffset=0,
int ioffset=0);
639 Poly2&
set(
float* vertices,
int vertsize,
unsigned short* indices,
int indxsize,
640 int voffset=0,
int ioffset=0) {
641 return set((
Vec2*)vertices, vertsize/2, indices, indxsize, voffset/2, ioffset);
692 #pragma mark Index Methods
737 Poly2&
setIndices(
unsigned short* indices,
int indxsize,
int ioffset=0);
780 #pragma mark Polygon Attributes
792 Vec2&
at(
int index) {
return _vertices.at(index); }
802 const std::vector<Vec2>&
getVertices()
const {
return _vertices; }
812 const std::vector<unsigned short>&
getIndices()
const {
return _indices; }
824 std::vector<unsigned short>&
getIndices() {
return _indices; }
872 #pragma mark Operators
1137 #pragma mark Geometry Methods
1185 bool incident(
const Vec2& point,
float variance=CU_MATH_EPSILON)
const;
1189 #pragma mark Internal Helper Methods
1197 void computeBounds();
1223 Vec2 getBarycentric(
const Vec2& point,
unsigned short index)
const;
static const Rect ZERO
Definition: CURect.h:54
Poly2 & operator*=(float scale)
Type
Definition: CUPoly2.h:123
Definition: CUSimpleTriangulator.h:66
Definition: CUPoly2.h:115
Vec2 & at(int index)
Definition: CUPoly2.h:792
friend Poly2 operator*(float scale, const Poly2 &poly)
Definition: CUPoly2.h:1121
Poly2 operator*(float scale) const
Definition: CUPoly2.h:994
Poly2 operator*(const Vec2 &scale) const
Definition: CUPoly2.h:1009
Poly2 operator/(const Vec2 &scale) const
Definition: CUPoly2.h:1064
Definition: CUAffine2.h:63
const Rect & getBounds() const
Definition: CUPoly2.h:834
void setType(Type type)
Definition: CUPoly2.h:868
std::vector< unsigned short > & getIndices()
Definition: CUPoly2.h:824
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:1049
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:683
Poly2 operator+(const Vec2 &offset) const
Definition: CUPoly2.h:1086
Poly2 & operator=(const Poly2 &other)
Definition: CUPoly2.h:457
bool contains(const Vec2 &point) const
Poly2 operator+(float offset) const
Definition: CUPoly2.h:1075
Poly2(float *vertices, int vertsize, int voffset=0)
Definition: CUPoly2.h:257
Type getType() const
Definition: CUPoly2.h:851
static Poly2 createLine(const Vec2 &origin, const Vec2 &dest)
Poly2 operator-(const Vec2 &offset)
Definition: CUPoly2.h:1108
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:639
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:1034
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:1097
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:812
Poly2 & set(const std::vector< Vec2 > &vertices)
~Poly2()
Definition: CUPoly2.h:345
Poly2(const std::vector< Vec2 > &vertices)
Definition: CUPoly2.h:170
const std::vector< Vec2 > & getVertices() const
Definition: CUPoly2.h:802
friend Poly2 operator*(const Vec2 &scale, const Poly2 &poly)
Definition: CUPoly2.h:1134
Definition: CUPathOutliner.h:78
Poly2 & setIndices(const std::vector< unsigned short > &indices)
Poly2 & set(float *vertices, int vertsize, int voffset=0)
Definition: CUPoly2.h:580
Definition: CUAnimationNode.h:52
Poly2 operator*=(const Affine2 &transform) const
Definition: CUPoly2.h:1021
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:340
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)