Skip to content

Commit

Permalink
Swap origin and radius parameters in GoostGeometry2D.pixel_circle()
Browse files Browse the repository at this point in the history
For compatibility with the `circle()` method in the same class.
  • Loading branch information
Xrayez committed May 16, 2021
1 parent 836425b commit 0574c34
Show file tree
Hide file tree
Showing 6 changed files with 10 additions and 9 deletions.
2 changes: 1 addition & 1 deletion core/math/2d/geometry/goost_geometry_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ Vector<Point2i> GoostGeometry2D::pixel_line(const Point2i &p_start, const Point2
// "A Fast Bresenham Type Algorithm For Drawing Circles" by John Kennedy:
// https://web.engr.oregonstate.edu/~sllu/bcircle.pdf
//
Vector<Point2i> GoostGeometry2D::pixel_circle(const Point2i &p_origin, int p_radius) {
Vector<Point2i> GoostGeometry2D::pixel_circle(int p_radius, const Point2i &p_origin) {
ERR_FAIL_COND_V(p_radius < 0, Vector<Point2i>());

Vector<Point2i> circle;
Expand Down
2 changes: 1 addition & 1 deletion core/math/2d/geometry/goost_geometry_2d.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class GoostGeometry2D {
static Vector<Point2> circle(real_t p_radius, real_t p_max_error = 0.25);

static Vector<Point2i> pixel_line(const Point2i &p_start, const Point2i &p_end);
static Vector<Point2i> pixel_circle(const Point2i &p_origin, int p_radius);
static Vector<Point2i> pixel_circle(int p_radius, const Point2i &p_origin = Point2i(0, 0));
static Vector<Point2i> polyline_to_pixels(const Vector<Point2> &p_points);
static Vector<Point2i> polygon_to_pixels(const Vector<Point2> &p_points);
};
Expand Down
7 changes: 4 additions & 3 deletions core/math/2d/geometry/goost_geometry_2d_bind.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,8 @@ Vector<Point2> _GoostGeometry2D::pixel_line(const Point2 &p_start, const Point2
return ret;
}

Vector<Point2> _GoostGeometry2D::pixel_circle(const Point2 &p_origin, int p_radius) const {
const Vector<Point2i> &circle = GoostGeometry2D::pixel_circle(p_origin, p_radius);
Vector<Point2> _GoostGeometry2D::pixel_circle(int p_radius, const Point2 &p_origin) const {
const Vector<Point2i> &circle = GoostGeometry2D::pixel_circle(p_radius, p_origin);
Vector<Point2> ret;
for (int i = 0; i < circle.size(); ++i) {
ret.push_back(circle[i]);
Expand Down Expand Up @@ -222,8 +222,9 @@ void _GoostGeometry2D::_bind_methods() {

ClassDB::bind_method(D_METHOD("regular_polygon", "sides", "size"), &_GoostGeometry2D::regular_polygon);
ClassDB::bind_method(D_METHOD("circle", "radius", "max_error"), &_GoostGeometry2D::circle, DEFVAL(0.25));

ClassDB::bind_method(D_METHOD("pixel_line", "start", "end"), &_GoostGeometry2D::pixel_line);
ClassDB::bind_method(D_METHOD("pixel_circle", "origin", "radius"), &_GoostGeometry2D::pixel_circle);
ClassDB::bind_method(D_METHOD("pixel_circle", "radius", "origin"), &_GoostGeometry2D::pixel_circle, DEFVAL(Vector2(0, 0)));
ClassDB::bind_method(D_METHOD("polyline_to_pixels", "points"), &_GoostGeometry2D::polyline_to_pixels);
ClassDB::bind_method(D_METHOD("polygon_to_pixels", "points"), &_GoostGeometry2D::polygon_to_pixels);
}
Expand Down
2 changes: 1 addition & 1 deletion core/math/2d/geometry/goost_geometry_2d_bind.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class _GoostGeometry2D : public Object {
Vector<Point2> circle(real_t p_radius, real_t p_max_error) const;

Vector<Point2> pixel_line(const Point2 &p_start, const Point2 &p_end) const;
Vector<Point2> pixel_circle(const Point2 &p_origin, int p_radius) const;
Vector<Point2> pixel_circle(int p_radius, const Point2 &p_origin = Point2(0, 0)) const;
Vector<Point2> polyline_to_pixels(const Vector<Point2> &p_points) const;
Vector<Point2> polygon_to_pixels(const Vector<Point2> &p_points) const;

Expand Down
4 changes: 2 additions & 2 deletions doc/GoostGeometry2D.xml
Original file line number Diff line number Diff line change
Expand Up @@ -143,9 +143,9 @@
<method name="pixel_circle" qualifiers="const">
<return type="PoolVector2Array">
</return>
<argument index="0" name="origin" type="Vector2">
<argument index="0" name="radius" type="int">
</argument>
<argument index="1" name="radius" type="int">
<argument index="1" name="origin" type="Vector2" default="Vector2( 0, 0 )">
</argument>
<description>
Returns an array of 2D-dimensional raster coordinates approximating a circle using a Bresenham type algorithm.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ func test_pixel_line():


func test_pixel_circle():
var circle = GoostGeometry2D.pixel_circle(Vector2(0, 0), 16)
var circle = GoostGeometry2D.pixel_circle(16)
# for i in circle.size():
# gut.p("%s: %s" % [i, circle[i]])
assert_eq(circle.size(), 96)
Expand Down

0 comments on commit 0574c34

Please sign in to comment.