Core: Move Vector2i to its own `vector2i.h` header
Also reduce interdependencies and clean up a bit.
This commit is contained in:
parent
5f56d385b0
commit
e223bad86d
|
@ -32,6 +32,7 @@
|
|||
#define DELAUNAY_2D_H
|
||||
|
||||
#include "core/math/rect2.h"
|
||||
#include "core/templates/vector.h"
|
||||
|
||||
class Delaunay2D {
|
||||
public:
|
||||
|
|
|
@ -32,7 +32,11 @@
|
|||
#define GEOMETRY_2D_H
|
||||
|
||||
#include "core/math/delaunay_2d.h"
|
||||
#include "core/math/math_funcs.h"
|
||||
#include "core/math/triangulate.h"
|
||||
#include "core/math/vector2.h"
|
||||
#include "core/math/vector2i.h"
|
||||
#include "core/math/vector3.h"
|
||||
#include "core/math/vector3i.h"
|
||||
#include "core/templates/vector.h"
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#ifndef RECT2_H
|
||||
#define RECT2_H
|
||||
|
||||
#include "core/error/error_macros.h"
|
||||
#include "core/math/vector2.h"
|
||||
|
||||
class String;
|
||||
|
|
|
@ -31,7 +31,8 @@
|
|||
#ifndef RECT2I_H
|
||||
#define RECT2I_H
|
||||
|
||||
#include "core/math/vector2.h"
|
||||
#include "core/error/error_macros.h"
|
||||
#include "core/math/vector2i.h"
|
||||
|
||||
class String;
|
||||
struct Rect2;
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "core/math/math_funcs.h"
|
||||
#include "core/math/rect2.h"
|
||||
#include "core/math/vector2.h"
|
||||
#include "core/templates/vector.h"
|
||||
|
||||
class String;
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#define TRIANGULATE_H
|
||||
|
||||
#include "core/math/vector2.h"
|
||||
#include "core/templates/vector.h"
|
||||
|
||||
/*
|
||||
https://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
|
||||
#include "vector2.h"
|
||||
|
||||
#include "core/math/vector2i.h"
|
||||
#include "core/string/ustring.h"
|
||||
|
||||
real_t Vector2::angle() const {
|
||||
return Math::atan2(y, x);
|
||||
}
|
||||
|
@ -202,91 +205,6 @@ Vector2::operator String() const {
|
|||
return "(" + String::num_real(x, false) + ", " + String::num_real(y, false) + ")";
|
||||
}
|
||||
|
||||
/* Vector2i */
|
||||
|
||||
Vector2i Vector2i::clamp(const Vector2i &p_min, const Vector2i &p_max) const {
|
||||
return Vector2i(
|
||||
CLAMP(x, p_min.x, p_max.x),
|
||||
CLAMP(y, p_min.y, p_max.y));
|
||||
}
|
||||
|
||||
int64_t Vector2i::length_squared() const {
|
||||
return x * (int64_t)x + y * (int64_t)y;
|
||||
}
|
||||
|
||||
double Vector2i::length() const {
|
||||
return Math::sqrt((double)length_squared());
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator+(const Vector2i &p_v) const {
|
||||
return Vector2i(x + p_v.x, y + p_v.y);
|
||||
}
|
||||
|
||||
void Vector2i::operator+=(const Vector2i &p_v) {
|
||||
x += p_v.x;
|
||||
y += p_v.y;
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator-(const Vector2i &p_v) const {
|
||||
return Vector2i(x - p_v.x, y - p_v.y);
|
||||
}
|
||||
|
||||
void Vector2i::operator-=(const Vector2i &p_v) {
|
||||
x -= p_v.x;
|
||||
y -= p_v.y;
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator*(const Vector2i &p_v1) const {
|
||||
return Vector2i(x * p_v1.x, y * p_v1.y);
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator*(const int32_t &rvalue) const {
|
||||
return Vector2i(x * rvalue, y * rvalue);
|
||||
}
|
||||
|
||||
void Vector2i::operator*=(const int32_t &rvalue) {
|
||||
x *= rvalue;
|
||||
y *= rvalue;
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator/(const Vector2i &p_v1) const {
|
||||
return Vector2i(x / p_v1.x, y / p_v1.y);
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator/(const int32_t &rvalue) const {
|
||||
return Vector2i(x / rvalue, y / rvalue);
|
||||
}
|
||||
|
||||
void Vector2i::operator/=(const int32_t &rvalue) {
|
||||
x /= rvalue;
|
||||
y /= rvalue;
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator%(const Vector2i &p_v1) const {
|
||||
return Vector2i(x % p_v1.x, y % p_v1.y);
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator%(const int32_t &rvalue) const {
|
||||
return Vector2i(x % rvalue, y % rvalue);
|
||||
}
|
||||
|
||||
void Vector2i::operator%=(const int32_t &rvalue) {
|
||||
x %= rvalue;
|
||||
y %= rvalue;
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator-() const {
|
||||
return Vector2i(-x, -y);
|
||||
}
|
||||
|
||||
bool Vector2i::operator==(const Vector2i &p_vec2) const {
|
||||
return x == p_vec2.x && y == p_vec2.y;
|
||||
}
|
||||
|
||||
bool Vector2i::operator!=(const Vector2i &p_vec2) const {
|
||||
return x != p_vec2.x || y != p_vec2.y;
|
||||
}
|
||||
|
||||
Vector2i::operator String() const {
|
||||
return "(" + itos(x) + ", " + itos(y) + ")";
|
||||
Vector2::operator Vector2i() const {
|
||||
return Vector2i(x, y);
|
||||
}
|
||||
|
|
|
@ -32,8 +32,8 @@
|
|||
#define VECTOR2_H
|
||||
|
||||
#include "core/math/math_funcs.h"
|
||||
#include "core/string/ustring.h"
|
||||
|
||||
class String;
|
||||
struct Vector2i;
|
||||
|
||||
struct _NO_DISCARD_ Vector2 {
|
||||
|
@ -167,6 +167,7 @@ struct _NO_DISCARD_ Vector2 {
|
|||
real_t aspect() const { return width / height; }
|
||||
|
||||
operator String() const;
|
||||
operator Vector2i() const;
|
||||
|
||||
_FORCE_INLINE_ Vector2() {}
|
||||
_FORCE_INLINE_ Vector2(const real_t p_x, const real_t p_y) {
|
||||
|
@ -282,113 +283,4 @@ Vector2 Vector2::direction_to(const Vector2 &p_to) const {
|
|||
typedef Vector2 Size2;
|
||||
typedef Vector2 Point2;
|
||||
|
||||
/* INTEGER STUFF */
|
||||
|
||||
struct _NO_DISCARD_ Vector2i {
|
||||
enum Axis {
|
||||
AXIS_X,
|
||||
AXIS_Y,
|
||||
};
|
||||
|
||||
union {
|
||||
int32_t x = 0;
|
||||
int32_t width;
|
||||
};
|
||||
union {
|
||||
int32_t y = 0;
|
||||
int32_t height;
|
||||
};
|
||||
|
||||
_FORCE_INLINE_ int32_t &operator[](int p_idx) {
|
||||
return p_idx ? y : x;
|
||||
}
|
||||
_FORCE_INLINE_ const int32_t &operator[](int p_idx) const {
|
||||
return p_idx ? y : x;
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Vector2i::Axis min_axis_index() const {
|
||||
return x < y ? Vector2i::AXIS_X : Vector2i::AXIS_Y;
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Vector2i::Axis max_axis_index() const {
|
||||
return x < y ? Vector2i::AXIS_Y : Vector2i::AXIS_X;
|
||||
}
|
||||
|
||||
Vector2i min(const Vector2i &p_vector2i) const {
|
||||
return Vector2(MIN(x, p_vector2i.x), MIN(y, p_vector2i.y));
|
||||
}
|
||||
|
||||
Vector2i max(const Vector2i &p_vector2i) const {
|
||||
return Vector2(MAX(x, p_vector2i.x), MAX(y, p_vector2i.y));
|
||||
}
|
||||
|
||||
Vector2i operator+(const Vector2i &p_v) const;
|
||||
void operator+=(const Vector2i &p_v);
|
||||
Vector2i operator-(const Vector2i &p_v) const;
|
||||
void operator-=(const Vector2i &p_v);
|
||||
Vector2i operator*(const Vector2i &p_v1) const;
|
||||
|
||||
Vector2i operator*(const int32_t &rvalue) const;
|
||||
void operator*=(const int32_t &rvalue);
|
||||
|
||||
Vector2i operator/(const Vector2i &p_v1) const;
|
||||
Vector2i operator/(const int32_t &rvalue) const;
|
||||
void operator/=(const int32_t &rvalue);
|
||||
|
||||
Vector2i operator%(const Vector2i &p_v1) const;
|
||||
Vector2i operator%(const int32_t &rvalue) const;
|
||||
void operator%=(const int32_t &rvalue);
|
||||
|
||||
Vector2i operator-() const;
|
||||
bool operator<(const Vector2i &p_vec2) const { return (x == p_vec2.x) ? (y < p_vec2.y) : (x < p_vec2.x); }
|
||||
bool operator>(const Vector2i &p_vec2) const { return (x == p_vec2.x) ? (y > p_vec2.y) : (x > p_vec2.x); }
|
||||
|
||||
bool operator<=(const Vector2i &p_vec2) const { return x == p_vec2.x ? (y <= p_vec2.y) : (x < p_vec2.x); }
|
||||
bool operator>=(const Vector2i &p_vec2) const { return x == p_vec2.x ? (y >= p_vec2.y) : (x > p_vec2.x); }
|
||||
|
||||
bool operator==(const Vector2i &p_vec2) const;
|
||||
bool operator!=(const Vector2i &p_vec2) const;
|
||||
|
||||
int64_t length_squared() const;
|
||||
double length() const;
|
||||
|
||||
real_t aspect() const { return width / (real_t)height; }
|
||||
Vector2i sign() const { return Vector2i(SIGN(x), SIGN(y)); }
|
||||
Vector2i abs() const { return Vector2i(ABS(x), ABS(y)); }
|
||||
Vector2i clamp(const Vector2i &p_min, const Vector2i &p_max) const;
|
||||
|
||||
operator String() const;
|
||||
|
||||
operator Vector2() const { return Vector2(x, y); }
|
||||
|
||||
inline Vector2i() {}
|
||||
inline Vector2i(const Vector2 &p_vec2) {
|
||||
x = (int32_t)p_vec2.x;
|
||||
y = (int32_t)p_vec2.y;
|
||||
}
|
||||
inline Vector2i(const int32_t p_x, const int32_t p_y) {
|
||||
x = p_x;
|
||||
y = p_y;
|
||||
}
|
||||
};
|
||||
|
||||
_FORCE_INLINE_ Vector2i operator*(const int32_t &p_scalar, const Vector2i &p_vector) {
|
||||
return p_vector * p_scalar;
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Vector2i operator*(const int64_t &p_scalar, const Vector2i &p_vector) {
|
||||
return p_vector * p_scalar;
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Vector2i operator*(const float &p_scalar, const Vector2i &p_vector) {
|
||||
return p_vector * p_scalar;
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Vector2i operator*(const double &p_scalar, const Vector2i &p_vector) {
|
||||
return p_vector * p_scalar;
|
||||
}
|
||||
|
||||
typedef Vector2i Size2i;
|
||||
typedef Vector2i Point2i;
|
||||
|
||||
#endif // VECTOR2_H
|
||||
|
|
|
@ -0,0 +1,125 @@
|
|||
/*************************************************************************/
|
||||
/* vector2i.cpp */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* https://godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
|
||||
/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
|
||||
#include "vector2i.h"
|
||||
|
||||
#include "core/math/vector2.h"
|
||||
#include "core/string/ustring.h"
|
||||
|
||||
Vector2i Vector2i::clamp(const Vector2i &p_min, const Vector2i &p_max) const {
|
||||
return Vector2i(
|
||||
CLAMP(x, p_min.x, p_max.x),
|
||||
CLAMP(y, p_min.y, p_max.y));
|
||||
}
|
||||
|
||||
int64_t Vector2i::length_squared() const {
|
||||
return x * (int64_t)x + y * (int64_t)y;
|
||||
}
|
||||
|
||||
double Vector2i::length() const {
|
||||
return Math::sqrt((double)length_squared());
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator+(const Vector2i &p_v) const {
|
||||
return Vector2i(x + p_v.x, y + p_v.y);
|
||||
}
|
||||
|
||||
void Vector2i::operator+=(const Vector2i &p_v) {
|
||||
x += p_v.x;
|
||||
y += p_v.y;
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator-(const Vector2i &p_v) const {
|
||||
return Vector2i(x - p_v.x, y - p_v.y);
|
||||
}
|
||||
|
||||
void Vector2i::operator-=(const Vector2i &p_v) {
|
||||
x -= p_v.x;
|
||||
y -= p_v.y;
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator*(const Vector2i &p_v1) const {
|
||||
return Vector2i(x * p_v1.x, y * p_v1.y);
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator*(const int32_t &rvalue) const {
|
||||
return Vector2i(x * rvalue, y * rvalue);
|
||||
}
|
||||
|
||||
void Vector2i::operator*=(const int32_t &rvalue) {
|
||||
x *= rvalue;
|
||||
y *= rvalue;
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator/(const Vector2i &p_v1) const {
|
||||
return Vector2i(x / p_v1.x, y / p_v1.y);
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator/(const int32_t &rvalue) const {
|
||||
return Vector2i(x / rvalue, y / rvalue);
|
||||
}
|
||||
|
||||
void Vector2i::operator/=(const int32_t &rvalue) {
|
||||
x /= rvalue;
|
||||
y /= rvalue;
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator%(const Vector2i &p_v1) const {
|
||||
return Vector2i(x % p_v1.x, y % p_v1.y);
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator%(const int32_t &rvalue) const {
|
||||
return Vector2i(x % rvalue, y % rvalue);
|
||||
}
|
||||
|
||||
void Vector2i::operator%=(const int32_t &rvalue) {
|
||||
x %= rvalue;
|
||||
y %= rvalue;
|
||||
}
|
||||
|
||||
Vector2i Vector2i::operator-() const {
|
||||
return Vector2i(-x, -y);
|
||||
}
|
||||
|
||||
bool Vector2i::operator==(const Vector2i &p_vec2) const {
|
||||
return x == p_vec2.x && y == p_vec2.y;
|
||||
}
|
||||
|
||||
bool Vector2i::operator!=(const Vector2i &p_vec2) const {
|
||||
return x != p_vec2.x || y != p_vec2.y;
|
||||
}
|
||||
|
||||
Vector2i::operator String() const {
|
||||
return "(" + itos(x) + ", " + itos(y) + ")";
|
||||
}
|
||||
|
||||
Vector2i::operator Vector2() const {
|
||||
return Vector2((int32_t)x, (int32_t)y);
|
||||
}
|
|
@ -0,0 +1,141 @@
|
|||
/*************************************************************************/
|
||||
/* vector2i.h */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* https://godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
|
||||
/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
|
||||
#ifndef VECTOR2I_H
|
||||
#define VECTOR2I_H
|
||||
|
||||
#include "core/math/math_funcs.h"
|
||||
|
||||
class String;
|
||||
struct Vector2;
|
||||
|
||||
struct _NO_DISCARD_ Vector2i {
|
||||
enum Axis {
|
||||
AXIS_X,
|
||||
AXIS_Y,
|
||||
};
|
||||
|
||||
union {
|
||||
int32_t x = 0;
|
||||
int32_t width;
|
||||
};
|
||||
union {
|
||||
int32_t y = 0;
|
||||
int32_t height;
|
||||
};
|
||||
|
||||
_FORCE_INLINE_ int32_t &operator[](int p_idx) {
|
||||
return p_idx ? y : x;
|
||||
}
|
||||
_FORCE_INLINE_ const int32_t &operator[](int p_idx) const {
|
||||
return p_idx ? y : x;
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Vector2i::Axis min_axis_index() const {
|
||||
return x < y ? Vector2i::AXIS_X : Vector2i::AXIS_Y;
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Vector2i::Axis max_axis_index() const {
|
||||
return x < y ? Vector2i::AXIS_Y : Vector2i::AXIS_X;
|
||||
}
|
||||
|
||||
Vector2i min(const Vector2i &p_vector2i) const {
|
||||
return Vector2i(MIN(x, p_vector2i.x), MIN(y, p_vector2i.y));
|
||||
}
|
||||
|
||||
Vector2i max(const Vector2i &p_vector2i) const {
|
||||
return Vector2i(MAX(x, p_vector2i.x), MAX(y, p_vector2i.y));
|
||||
}
|
||||
|
||||
Vector2i operator+(const Vector2i &p_v) const;
|
||||
void operator+=(const Vector2i &p_v);
|
||||
Vector2i operator-(const Vector2i &p_v) const;
|
||||
void operator-=(const Vector2i &p_v);
|
||||
Vector2i operator*(const Vector2i &p_v1) const;
|
||||
|
||||
Vector2i operator*(const int32_t &rvalue) const;
|
||||
void operator*=(const int32_t &rvalue);
|
||||
|
||||
Vector2i operator/(const Vector2i &p_v1) const;
|
||||
Vector2i operator/(const int32_t &rvalue) const;
|
||||
void operator/=(const int32_t &rvalue);
|
||||
|
||||
Vector2i operator%(const Vector2i &p_v1) const;
|
||||
Vector2i operator%(const int32_t &rvalue) const;
|
||||
void operator%=(const int32_t &rvalue);
|
||||
|
||||
Vector2i operator-() const;
|
||||
bool operator<(const Vector2i &p_vec2) const { return (x == p_vec2.x) ? (y < p_vec2.y) : (x < p_vec2.x); }
|
||||
bool operator>(const Vector2i &p_vec2) const { return (x == p_vec2.x) ? (y > p_vec2.y) : (x > p_vec2.x); }
|
||||
|
||||
bool operator<=(const Vector2i &p_vec2) const { return x == p_vec2.x ? (y <= p_vec2.y) : (x < p_vec2.x); }
|
||||
bool operator>=(const Vector2i &p_vec2) const { return x == p_vec2.x ? (y >= p_vec2.y) : (x > p_vec2.x); }
|
||||
|
||||
bool operator==(const Vector2i &p_vec2) const;
|
||||
bool operator!=(const Vector2i &p_vec2) const;
|
||||
|
||||
int64_t length_squared() const;
|
||||
double length() const;
|
||||
|
||||
real_t aspect() const { return width / (real_t)height; }
|
||||
Vector2i sign() const { return Vector2i(SIGN(x), SIGN(y)); }
|
||||
Vector2i abs() const { return Vector2i(ABS(x), ABS(y)); }
|
||||
Vector2i clamp(const Vector2i &p_min, const Vector2i &p_max) const;
|
||||
|
||||
operator String() const;
|
||||
operator Vector2() const;
|
||||
|
||||
inline Vector2i() {}
|
||||
inline Vector2i(const int32_t p_x, const int32_t p_y) {
|
||||
x = p_x;
|
||||
y = p_y;
|
||||
}
|
||||
};
|
||||
|
||||
_FORCE_INLINE_ Vector2i operator*(const int32_t &p_scalar, const Vector2i &p_vector) {
|
||||
return p_vector * p_scalar;
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Vector2i operator*(const int64_t &p_scalar, const Vector2i &p_vector) {
|
||||
return p_vector * p_scalar;
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Vector2i operator*(const float &p_scalar, const Vector2i &p_vector) {
|
||||
return p_vector * p_scalar;
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Vector2i operator*(const double &p_scalar, const Vector2i &p_vector) {
|
||||
return p_vector * p_scalar;
|
||||
}
|
||||
|
||||
typedef Vector2i Size2i;
|
||||
typedef Vector2i Point2i;
|
||||
|
||||
#endif // VECTOR2I_H
|
|
@ -44,6 +44,7 @@
|
|||
#include "core/math/transform_2d.h"
|
||||
#include "core/math/transform_3d.h"
|
||||
#include "core/math/vector2.h"
|
||||
#include "core/math/vector2i.h"
|
||||
#include "core/math/vector3.h"
|
||||
#include "core/math/vector3i.h"
|
||||
#include "core/object/object_id.h"
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
|
||||
#include "editor_atlas_packer.h"
|
||||
|
||||
#include "core/math/vector2.h"
|
||||
#include "core/math/vector2i.h"
|
||||
|
||||
void EditorAtlasPacker::_plot_triangle(Ref<BitMap> p_bitmap, Vector2i *vertices) {
|
||||
int width = p_bitmap->get_size().width;
|
||||
int height = p_bitmap->get_size().height;
|
||||
|
|
|
@ -31,11 +31,12 @@
|
|||
#ifndef EDITOR_ATLAS_PACKER_H
|
||||
#define EDITOR_ATLAS_PACKER_H
|
||||
|
||||
#include "core/math/vector2.h"
|
||||
|
||||
#include "core/templates/vector.h"
|
||||
#include "scene/resources/bit_map.h"
|
||||
|
||||
struct Vector2;
|
||||
struct Vector2i;
|
||||
|
||||
class EditorAtlasPacker {
|
||||
public:
|
||||
struct Chart {
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
#include "core/variant/variant.h"
|
||||
|
||||
#include "core/math/vector2.h"
|
||||
#include "core/math/vector2i.h"
|
||||
#include "core/math/vector3i.h"
|
||||
|
||||
static_assert(sizeof(godot_packed_byte_array) == sizeof(PackedByteArray), "PackedByteArray size mismatch");
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
#include "core/math/rect2.h"
|
||||
#include "core/math/rect2i.h"
|
||||
#include "core/os/memory.h"
|
||||
|
||||
static_assert(sizeof(godot_rect2) == sizeof(Rect2), "Rect2 size mismatch");
|
||||
static_assert(sizeof(godot_rect2i) == sizeof(Rect2i), "Rect2i size mismatch");
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "gdnative/transform2d.h"
|
||||
|
||||
#include "core/math/transform_2d.h"
|
||||
#include "core/os/memory.h"
|
||||
|
||||
static_assert(sizeof(godot_transform2d) == sizeof(Transform2D), "Transform2D size mismatch");
|
||||
|
||||
|
|
|
@ -31,6 +31,8 @@
|
|||
#include "gdnative/vector2.h"
|
||||
|
||||
#include "core/math/vector2.h"
|
||||
#include "core/math/vector2i.h"
|
||||
#include "core/os/memory.h"
|
||||
|
||||
static_assert(sizeof(godot_vector2) == sizeof(Vector2), "Vector2 size mismatch");
|
||||
static_assert(sizeof(godot_vector2i) == sizeof(Vector2i), "Vector2i size mismatch");
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#define TEST_VECTOR2_H
|
||||
|
||||
#include "core/math/vector2.h"
|
||||
#include "core/math/vector2i.h"
|
||||
#include "tests/test_macros.h"
|
||||
|
||||
namespace TestVector2 {
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#define TEST_VECTOR2I_H
|
||||
|
||||
#include "core/math/vector2.h"
|
||||
#include "core/math/vector2i.h"
|
||||
#include "tests/test_macros.h"
|
||||
|
||||
namespace TestVector2i {
|
||||
|
|
|
@ -1,19 +1,16 @@
|
|||
diff --git a/thirdparty/misc/polypartition.cpp b/thirdparty/misc/polypartition.cpp
|
||||
index 3a8a6efa83..5e94793b79 100644
|
||||
index 3a8a6efa83..8c5409bf24 100644
|
||||
--- a/thirdparty/misc/polypartition.cpp
|
||||
+++ b/thirdparty/misc/polypartition.cpp
|
||||
@@ -23,10 +23,7 @@
|
||||
|
||||
#include "polypartition.h"
|
||||
|
||||
-#include <math.h>
|
||||
-#include <string.h>
|
||||
@@ -26,7 +26,6 @@
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
#include <algorithm>
|
||||
-#include <vector>
|
||||
|
||||
TPPLPoly::TPPLPoly() {
|
||||
hole = false;
|
||||
@@ -186,7 +183,7 @@ int TPPLPartition::Intersects(TPPLPoint &p11, TPPLPoint &p12, TPPLPoint &p21, TP
|
||||
@@ -186,7 +185,7 @@ int TPPLPartition::Intersects(TPPLPoint &p11, TPPLPoint &p12, TPPLPoint &p21, TP
|
||||
// Removes holes from inpolys by merging them with non-holes.
|
||||
int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
TPPLPolyList polys;
|
||||
|
@ -22,7 +19,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
long i, i2, holepointindex, polypointindex;
|
||||
TPPLPoint holepoint, polypoint, bestpolypoint;
|
||||
TPPLPoint linep1, linep2;
|
||||
@@ -198,15 +195,15 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
@@ -198,15 +197,15 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
|
||||
// Check for the trivial case of no holes.
|
||||
hasholes = false;
|
||||
|
@ -42,7 +39,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -216,8 +213,8 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
@@ -216,8 +215,8 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
while (1) {
|
||||
// Find the hole point with the largest x.
|
||||
hasholes = false;
|
||||
|
@ -53,7 +50,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
continue;
|
||||
}
|
||||
|
||||
@@ -227,8 +224,8 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
@@ -227,8 +226,8 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
holepointindex = 0;
|
||||
}
|
||||
|
||||
|
@ -64,7 +61,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
holeiter = iter;
|
||||
holepointindex = i;
|
||||
}
|
||||
@@ -237,24 +234,24 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
@@ -237,24 +236,24 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
if (!hasholes) {
|
||||
break;
|
||||
}
|
||||
|
@ -98,7 +95,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
if (pointfound) {
|
||||
v1 = Normalize(polypoint - holepoint);
|
||||
v2 = Normalize(bestpolypoint - holepoint);
|
||||
@@ -263,13 +260,13 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
@@ -263,13 +262,13 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
}
|
||||
}
|
||||
pointvisible = true;
|
||||
|
@ -117,7 +114,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
if (Intersects(holepoint, polypoint, linep1, linep2)) {
|
||||
pointvisible = false;
|
||||
break;
|
||||
@@ -292,18 +289,18 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
@@ -292,18 +291,18 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -142,7 +139,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
i2++;
|
||||
}
|
||||
|
||||
@@ -312,8 +309,8 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
@@ -312,8 +311,8 @@ int TPPLPartition::RemoveHoles(TPPLPolyList *inpolys, TPPLPolyList *outpolys) {
|
||||
polys.push_back(newpoly);
|
||||
}
|
||||
|
||||
|
@ -153,7 +150,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
}
|
||||
|
||||
return 1;
|
||||
@@ -524,13 +521,13 @@ int TPPLPartition::Triangulate_EC(TPPLPoly *poly, TPPLPolyList *triangles) {
|
||||
@@ -524,13 +523,13 @@ int TPPLPartition::Triangulate_EC(TPPLPoly *poly, TPPLPolyList *triangles) {
|
||||
|
||||
int TPPLPartition::Triangulate_EC(TPPLPolyList *inpolys, TPPLPolyList *triangles) {
|
||||
TPPLPolyList outpolys;
|
||||
|
@ -170,7 +167,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -543,7 +540,7 @@ int TPPLPartition::ConvexPartition_HM(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
@@ -543,7 +542,7 @@ int TPPLPartition::ConvexPartition_HM(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
}
|
||||
|
||||
TPPLPolyList triangles;
|
||||
|
@ -179,7 +176,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
TPPLPoly *poly1 = NULL, *poly2 = NULL;
|
||||
TPPLPoly newpoly;
|
||||
TPPLPoint d1, d2, p1, p2, p3;
|
||||
@@ -578,19 +575,19 @@ int TPPLPartition::ConvexPartition_HM(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
@@ -578,19 +577,19 @@ int TPPLPartition::ConvexPartition_HM(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -203,7 +200,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
|
||||
for (i21 = 0; i21 < poly2->GetNumPoints(); i21++) {
|
||||
if ((d2.x != poly2->GetPoint(i21).x) || (d2.y != poly2->GetPoint(i21).y)) {
|
||||
@@ -660,16 +657,16 @@ int TPPLPartition::ConvexPartition_HM(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
@@ -660,16 +659,16 @@ int TPPLPartition::ConvexPartition_HM(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
}
|
||||
|
||||
triangles.erase(iter2);
|
||||
|
@ -224,7 +221,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
}
|
||||
|
||||
return 1;
|
||||
@@ -677,13 +674,13 @@ int TPPLPartition::ConvexPartition_HM(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
@@ -677,13 +676,13 @@ int TPPLPartition::ConvexPartition_HM(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
|
||||
int TPPLPartition::ConvexPartition_HM(TPPLPolyList *inpolys, TPPLPolyList *parts) {
|
||||
TPPLPolyList outpolys;
|
||||
|
@ -241,7 +238,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -824,8 +821,8 @@ int TPPLPartition::Triangulate_OPT(TPPLPoly *poly, TPPLPolyList *triangles) {
|
||||
@@ -824,8 +823,8 @@ int TPPLPartition::Triangulate_OPT(TPPLPoly *poly, TPPLPolyList *triangles) {
|
||||
newdiagonal.index1 = 0;
|
||||
newdiagonal.index2 = n - 1;
|
||||
diagonals.push_back(newdiagonal);
|
||||
|
@ -252,7 +249,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
diagonals.pop_front();
|
||||
bestvertex = dpstates[diagonal.index2][diagonal.index1].bestvertex;
|
||||
if (bestvertex == -1) {
|
||||
@@ -873,10 +870,10 @@ void TPPLPartition::UpdateState(long a, long b, long w, long i, long j, DPState2
|
||||
@@ -873,10 +872,10 @@ void TPPLPartition::UpdateState(long a, long b, long w, long i, long j, DPState2
|
||||
pairs->push_front(newdiagonal);
|
||||
dpstates[a][b].weight = w;
|
||||
} else {
|
||||
|
@ -265,7 +262,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
pairs->pop_front();
|
||||
}
|
||||
pairs->push_front(newdiagonal);
|
||||
@@ -885,7 +882,7 @@ void TPPLPartition::UpdateState(long a, long b, long w, long i, long j, DPState2
|
||||
@@ -885,7 +884,7 @@ void TPPLPartition::UpdateState(long a, long b, long w, long i, long j, DPState2
|
||||
|
||||
void TPPLPartition::TypeA(long i, long j, long k, PartitionVertex *vertices, DPState2 **dpstates) {
|
||||
DiagonalList *pairs = NULL;
|
||||
|
@ -274,7 +271,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
long top;
|
||||
long w;
|
||||
|
||||
@@ -902,23 +899,23 @@ void TPPLPartition::TypeA(long i, long j, long k, PartitionVertex *vertices, DPS
|
||||
@@ -902,23 +901,23 @@ void TPPLPartition::TypeA(long i, long j, long k, PartitionVertex *vertices, DPS
|
||||
}
|
||||
if (j - i > 1) {
|
||||
pairs = &(dpstates[i][j].pairs);
|
||||
|
@ -305,7 +302,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
}
|
||||
}
|
||||
}
|
||||
@@ -927,7 +924,7 @@ void TPPLPartition::TypeA(long i, long j, long k, PartitionVertex *vertices, DPS
|
||||
@@ -927,7 +926,7 @@ void TPPLPartition::TypeA(long i, long j, long k, PartitionVertex *vertices, DPS
|
||||
|
||||
void TPPLPartition::TypeB(long i, long j, long k, PartitionVertex *vertices, DPState2 **dpstates) {
|
||||
DiagonalList *pairs = NULL;
|
||||
|
@ -314,7 +311,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
long top;
|
||||
long w;
|
||||
|
||||
@@ -946,21 +943,21 @@ void TPPLPartition::TypeB(long i, long j, long k, PartitionVertex *vertices, DPS
|
||||
@@ -946,21 +945,21 @@ void TPPLPartition::TypeB(long i, long j, long k, PartitionVertex *vertices, DPS
|
||||
if (k - j > 1) {
|
||||
pairs = &(dpstates[j][k].pairs);
|
||||
|
||||
|
@ -343,7 +340,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
}
|
||||
} else {
|
||||
w++;
|
||||
@@ -981,11 +978,11 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
@@ -981,11 +980,11 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
DiagonalList diagonals, diagonals2;
|
||||
Diagonal diagonal, newdiagonal;
|
||||
DiagonalList *pairs = NULL, *pairs2 = NULL;
|
||||
|
@ -358,7 +355,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
bool ijreal, jkreal;
|
||||
|
||||
n = poly->GetNumPoints();
|
||||
@@ -1110,35 +1107,35 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
@@ -1110,35 +1109,35 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
newdiagonal.index1 = 0;
|
||||
newdiagonal.index2 = n - 1;
|
||||
diagonals.push_front(newdiagonal);
|
||||
|
@ -403,7 +400,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
pairs2->pop_back();
|
||||
} else {
|
||||
break;
|
||||
@@ -1153,21 +1150,21 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
@@ -1153,21 +1152,21 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
diagonals.push_front(newdiagonal);
|
||||
}
|
||||
} else {
|
||||
|
@ -431,7 +428,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
pairs2->pop_front();
|
||||
} else {
|
||||
break;
|
||||
@@ -1197,8 +1194,8 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
@@ -1197,8 +1196,8 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
newdiagonal.index1 = 0;
|
||||
newdiagonal.index2 = n - 1;
|
||||
diagonals.push_front(newdiagonal);
|
||||
|
@ -442,7 +439,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
diagonals.pop_front();
|
||||
if ((diagonal.index2 - diagonal.index1) <= 1) {
|
||||
continue;
|
||||
@@ -1210,8 +1207,8 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
@@ -1210,8 +1209,8 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
indices.push_back(diagonal.index2);
|
||||
diagonals2.push_front(diagonal);
|
||||
|
||||
|
@ -453,7 +450,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
diagonals2.pop_front();
|
||||
if ((diagonal.index2 - diagonal.index1) <= 1) {
|
||||
continue;
|
||||
@@ -1220,16 +1217,16 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
@@ -1220,16 +1219,16 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
jkreal = true;
|
||||
pairs = &(dpstates[diagonal.index1][diagonal.index2].pairs);
|
||||
if (!vertices[diagonal.index1].isConvex) {
|
||||
|
@ -476,7 +473,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
jkreal = false;
|
||||
}
|
||||
}
|
||||
@@ -1253,11 +1250,12 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
@@ -1253,11 +1252,12 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
indices.push_back(j);
|
||||
}
|
||||
|
||||
|
@ -492,7 +489,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
k++;
|
||||
}
|
||||
parts->push_back(newpoly);
|
||||
@@ -1281,7 +1279,7 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
@@ -1281,7 +1281,7 @@ int TPPLPartition::ConvexPartition_OPT(TPPLPoly *poly, TPPLPolyList *parts) {
|
||||
// "Computational Geometry: Algorithms and Applications"
|
||||
// by Mark de Berg, Otfried Cheong, Marc van Kreveld, and Mark Overmars.
|
||||
int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monotonePolys) {
|
||||
|
@ -501,7 +498,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
MonotoneVertex *vertices = NULL;
|
||||
long i, numvertices, vindex, vindex2, newnumvertices, maxnumvertices;
|
||||
long polystartindex, polyendindex;
|
||||
@@ -1291,11 +1289,8 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
@@ -1291,11 +1291,8 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
bool error = false;
|
||||
|
||||
numvertices = 0;
|
||||
|
@ -515,7 +512,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
}
|
||||
|
||||
maxnumvertices = numvertices * 3;
|
||||
@@ -1303,8 +1298,8 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
@@ -1303,8 +1300,8 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
newnumvertices = numvertices;
|
||||
|
||||
polystartindex = 0;
|
||||
|
@ -526,7 +523,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
polyendindex = polystartindex + poly->GetNumPoints() - 1;
|
||||
for (i = 0; i < poly->GetNumPoints(); i++) {
|
||||
vertices[i + polystartindex].p = poly->GetPoint(i);
|
||||
@@ -1360,14 +1355,14 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
@@ -1360,14 +1357,14 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
// Note that while set doesn't actually have to be implemented as
|
||||
// a tree, complexity requirements for operations are the same as
|
||||
// for the balanced binary search tree.
|
||||
|
@ -546,7 +543,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
}
|
||||
|
||||
// For each vertex.
|
||||
@@ -1387,13 +1382,14 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
@@ -1387,13 +1384,14 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
newedge.p1 = v->p;
|
||||
newedge.p2 = vertices[v->next].p;
|
||||
newedge.index = vindex;
|
||||
|
@ -564,7 +561,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
error = true;
|
||||
break;
|
||||
}
|
||||
@@ -1412,29 +1408,30 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
@@ -1412,29 +1410,30 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
newedge.p1 = v->p;
|
||||
newedge.p2 = v->p;
|
||||
edgeIter = edgeTree.lower_bound(newedge);
|
||||
|
@ -601,7 +598,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
error = true;
|
||||
break;
|
||||
}
|
||||
@@ -1452,25 +1449,25 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
@@ -1452,25 +1451,25 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
newedge.p1 = v->p;
|
||||
newedge.p2 = v->p;
|
||||
edgeIter = edgeTree.lower_bound(newedge);
|
||||
|
@ -632,7 +629,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
error = true;
|
||||
break;
|
||||
}
|
||||
@@ -1488,27 +1485,28 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
@@ -1488,27 +1487,28 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
newedge.p1 = v2->p;
|
||||
newedge.p2 = vertices[v2->next].p;
|
||||
newedge.index = vindex2;
|
||||
|
@ -668,7 +665,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
}
|
||||
break;
|
||||
}
|
||||
@@ -1569,8 +1567,8 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
@@ -1569,8 +1569,8 @@ int TPPLPartition::MonotonePartition(TPPLPolyList *inpolys, TPPLPolyList *monoto
|
||||
|
||||
// Adds a diagonal to the doubly-connected list of vertices.
|
||||
void TPPLPartition::AddDiagonal(MonotoneVertex *vertices, long *numvertices, long index1, long index2,
|
||||
|
@ -679,7 +676,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
long newindex1, newindex2;
|
||||
|
||||
newindex1 = *numvertices;
|
||||
@@ -1597,14 +1595,14 @@ void TPPLPartition::AddDiagonal(MonotoneVertex *vertices, long *numvertices, lon
|
||||
@@ -1597,14 +1597,14 @@ void TPPLPartition::AddDiagonal(MonotoneVertex *vertices, long *numvertices, lon
|
||||
vertextypes[newindex1] = vertextypes[index1];
|
||||
edgeTreeIterators[newindex1] = edgeTreeIterators[index1];
|
||||
helpers[newindex1] = helpers[index1];
|
||||
|
@ -698,7 +695,7 @@ index 3a8a6efa83..5e94793b79 100644
|
|||
}
|
||||
}
|
||||
|
||||
@@ -1830,13 +1828,13 @@ int TPPLPartition::TriangulateMonotone(TPPLPoly *inPoly, TPPLPolyList *triangles
|
||||
@@ -1830,13 +1830,13 @@ int TPPLPartition::TriangulateMonotone(TPPLPoly *inPoly, TPPLPolyList *triangles
|
||||
|
||||
int TPPLPartition::Triangulate_MONO(TPPLPolyList *inpolys, TPPLPolyList *triangles) {
|
||||
TPPLPolyList monotone;
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
|
||||
#include "polypartition.h"
|
||||
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
#include <algorithm>
|
||||
|
||||
TPPLPoly::TPPLPoly() {
|
||||
|
|
Loading…
Reference in New Issue