summaryrefslogtreecommitdiffstats
path: root/src/2geom
diff options
context:
space:
mode:
Diffstat (limited to 'src/2geom')
-rw-r--r--src/2geom/circle.cpp17
-rw-r--r--src/2geom/circle.h10
2 files changed, 26 insertions, 1 deletions
diff --git a/src/2geom/circle.cpp b/src/2geom/circle.cpp
index c3cea0ae7..00b91de12 100644
--- a/src/2geom/circle.cpp
+++ b/src/2geom/circle.cpp
@@ -97,6 +97,23 @@ Circle::arc(Point const& initial, Point const& inner, Point const& final,
return e.arc(initial, inner, final, _svg_compliant);
}
+void
+Circle::getPath(std::vector<Path> &path_out) {
+ Path pb;
+
+ D2<SBasis> B;
+ Linear bo = Linear(0, 2 * M_PI);
+
+ B[0] = cos(bo,4);
+ B[1] = sin(bo,4);
+
+ B = B * m_ray + m_centre;
+
+ pb.append(SBasisCurve(B));
+
+ path_out.push_back(pb);
+}
+
} // end namespace Geom
diff --git a/src/2geom/circle.h b/src/2geom/circle.h
index 27d4fcc3f..c346b8c8f 100644
--- a/src/2geom/circle.h
+++ b/src/2geom/circle.h
@@ -38,7 +38,7 @@
#include <2geom/point.h>
#include <2geom/exception.h>
-
+#include <2geom/path.h>
namespace Geom
{
@@ -56,6 +56,11 @@ class Circle
{
}
+ Circle(Point center, double r)
+ : m_centre(center), m_ray(r)
+ {
+ }
+
Circle(double A, double B, double C, double D)
{
set(A, B, C, D);
@@ -86,6 +91,9 @@ class Circle
arc(Point const& initial, Point const& inner, Point const& final,
bool _svg_compliant = true);
+ void
+ getPath(std::vector<Path> &path_out);
+
Point center() const
{
return m_centre;