{"action":"created","comment":{"url":"https://api.github.com/repos/DGtal-team/DGtal/pulls/comments/38743683","id":38743683,"diff_hunk":"@@ -0,0 +1,587 @@\n+/**\n+ *  This program is free software: you can redistribute it and/or modify\n+ *  it under the terms of the GNU Lesser General Public License as\n+ *  published by the Free Software Foundation, either version 3 of the\n+ *  License, or  (at your option) any later version.\n+ *\n+ *  This program is distributed in the hope that it will be useful,\n+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ *  GNU General Public License for more details.\n+ *\n+ *  You should have received a copy of the GNU General Public License\n+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.\n+ *\n+ **/\n+\n+/**\n+ * @file Naive3DDSSComputer.ih\n+ * @author Kacper Pluta (\\c kacper.pluta@esiee.fr )\n+ * Laboratoire d'Informatique Gaspard-Monge - LIGM, A3SI, France\n+ *\n+ * @date 2014/10/07\n+ *\n+ * Implementation of inline methods defined in Naive3DDSSComputer.h\n+ *\n+ * This file is part of the DGtal library.\n+ */\n+\n+///////////////////////////////////////////////////////////////////////////////\n+// IMPLEMENTATION of inline methods.\n+///////////////////////////////////////////////////////////////////////////////\n+\n+//////////////////////////////////////////////////////////////////////////////\n+#include <cstdlib>\n+#include <boost/math/common_factor_rt.hpp>\n+#include \"DGtal/io/Color.h\"\n+//////////////////////////////////////////////////////////////////////////////\n+\n+\n+\n+///////////////////////////////////////////////////////////////////////////////\n+// Implementation of inline methods                                          //\n+/**\n+ * Default constructor.\n+ * not valid\n+ */\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::Naive3DDSSComputer()\n+{\n+  //projections\n+  std::vector<DGtal::Dimension> v1,v2,v3;\n+  v1.push_back(0);\n+  v1.push_back(1);\n+  v2.push_back(0);\n+  v2.push_back(2);\n+  v3.push_back(1);\n+  v3.push_back(2);\n+  myProjXY.init(v1.begin(),v1.end());\n+  myProjXZ.init(v2.begin(),v2.end());\n+  myProjYZ.init(v3.begin(),v3.end());\n+  blockXY = blockXZ = blockYZ = false;\n+  lenXY = lenXZ = lenYZ = 0;\n+}\n+\n+/**\n+ * Constructor with initialisation\n+ */\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::Naive3DDSSComputer(const ConstIterator& it)\n+{\n+  //projections\n+  std::vector<DGtal::Dimension> v1,v2,v3;\n+  v1.push_back(0);\n+  v1.push_back(1);\n+  v2.push_back(0);\n+  v2.push_back(2);\n+  v3.push_back(1);\n+  v3.push_back(2);\n+  myProjXY.init(v1.begin(),v1.end());\n+  myProjXZ.init(v2.begin(),v2.end());\n+  myProjYZ.init(v3.begin(),v3.end());\n+\n+  init(it);\n+}\n+\n+/**\n+ * Initialisation.\n+ * @param it an iterator on a sequence of points\n+ */\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+void DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::init ( const ConstIterator& it )\n+{\n+  //begin and end iterators\n+  myBegin = it;\n+  myEnd = it;\n+  myEnd++;\n+  //adapters and projections\n+  IteratorAdapter XYit(it,myProjXY);\n+  myXYalgo.init(XYit);\n+  IteratorAdapter XZit(it,myProjXZ);\n+  myXZalgo.init(XZit);\n+  IteratorAdapter YZit(it,myProjYZ);\n+  myYZalgo.init(YZit);\n+  blockXY = blockXZ = blockYZ = false;\n+  lenXY = lenXZ = lenYZ = 0;\n+}\n+\n+/**\n+ * Copy constructor.\n+ * @param other the object to clone.\n+ * Forbidden by default.\n+ */\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::Naive3DDSSComputer (\n+                                          const Naive3DDSSComputer<TIterator,TInteger,connectivity> & other ) :\n+  myProjXY(other.myProjXY), myProjXZ(other.myProjXZ), myProjYZ(other.myProjYZ),\n+  myXYalgo(other.myXYalgo), myXZalgo(other.myXZalgo), myYZalgo(other.myYZalgo),\n+  myBegin(other.myBegin), myEnd(other.myEnd)\n+{\n+    blockXY = other.blockXY;\n+    blockXZ = other.blockXZ;\n+    blockYZ = other.blockYZ;\n+    lenXY = other.lenXY;\n+    lenXZ = other.lenXZ;\n+    lenYZ = other.lenYZ;\n+}\n+\n+/**\n+ * Assignment.\n+ * @param other the object to copy.\n+ * @return a reference on 'this'.\n+ * Forbidden by default.\n+ */\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity> &\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::operator= (\n+                                      const Naive3DDSSComputer<TIterator,TInteger,connectivity> & other )\n+{\n+  myProjXY = other.myProjXY;\n+  myProjXZ = other.myProjXZ;\n+  myProjYZ = other.myProjYZ;\n+  myXYalgo = other.myXYalgo;\n+  myXZalgo = other.myXZalgo;\n+  myYZalgo = other.myYZalgo;\n+  myBegin = other.myBegin;\n+  myEnd = other.myEnd;\n+  blockXY = other.blockXY;\n+  blockXZ = other.blockXZ;\n+  blockYZ = other.blockYZ;\n+  lenXY = other.lenXY;\n+  lenXZ = other.lenXZ;\n+  lenYZ = other.lenYZ;\n+  return *this;\n+}\n+\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+typename DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::Self\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::getSelf() const {\n+  return Self();\n+}\n+\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+typename DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::Reverse\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::getReverse() const {\n+  return Reverse();\n+}\n+\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+bool\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::isInDSS ( const Point3d & point) const {\n+  short test = 0;\n+  if ( myXYalgo.isInDSS ( myProjXY ( point ) ) )\n+      test++;\n+  if ( myXZalgo.isInDSS ( myProjXZ ( point ) ) )\n+      test++;\n+  if ( myYZalgo.isInDSS ( myProjYZ ( point ) ) )\n+      test++;\n+\n+  return test >= 2 ? true : false;\n+}\n+\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+bool\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::isInDSS ( const ConstIterator & it) const {\n+  short test = 0;\n+  if ( myXYalgo.isInDSS ( myProjXY ( *it ) ) )\n+     test++;\n+  if ( myXZalgo.isInDSS ( myProjXZ ( *it ) ) )\n+      test++;\n+  if ( myYZalgo.isInDSS ( myProjYZ ( *it ) ) )\n+      test++;\n+\n+  return test >= 2 ? true : false;\n+}\n+\n+/**\n+ * Equality operator.\n+ * @param other the object to compare with.\n+ * @return 'true' either if the points perfectly match\n+ * or if the first points match to the last ones\n+ * (same DSS scanned in the conversed way)\n+ * and 'false' otherwise\n+ */\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+bool\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::operator==(\n+                                      const Naive3DDSSComputer<TIterator,TInteger,connectivity>& other ) const\n+{\n+  return (  (\tmyXYalgo == other.myXYalgo ) &&\n+            (\tmyXZalgo == other.myXZalgo ) &&\n+            (\tmyYZalgo == other.myYZalgo ) &&\n+            (*myBegin == *other.myBegin) &&\n+            (*myEnd == *other.myEnd) );\n+}\n+\n+/**\n+ * Difference operator.\n+ * @param other the object to compare with.\n+ * @return 'false' if equal\n+ * 'true' otherwise\n+ */\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+bool\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::operator!=(\n+                                      const Naive3DDSSComputer<TIterator,TInteger,connectivity> & other ) const\n+{\n+  return (!(*this == other));\n+}\n+\n+/**\n+ * Tests whether the union between a point\n+ * (add to the front of the DSS\n+ * with respect to the scan orientation)\n+ * and a DSS is a DSS.\n+ * Computes the parameters of the new DSS\n+ * with the added point if true.\n+ * @param it an iterator on a sequence of points\n+ * @return 'true' if the union is a DSS, 'false' otherwise.\n+ */\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+bool\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::extendFront()\n+{\n+    if ( !isExtendableFront() ) return false;\n+\n+    short test = 0;\n+    if ( myXYalgo.isExtendableFront() && !blockXY )\n+    {\n+        Point2d txy = myXYalgo.front();\n+        myXYalgo.extendFront();\n+        if ( myXYalgo.front() != txy )\n+        {\n+            test++;\n+            lenXY++;\n+        }\n+        else\n+\t{\n+\t    myXYalgo.retractFront();\n+            blockXY = true;\n+\t}\n+    }\n+    if ( myXZalgo.isExtendableFront() && !blockXZ )\n+    {\n+        Point2d txz = myXZalgo.front();\n+        myXZalgo.extendFront();\n+        if ( myXZalgo.front() != txz )\n+        {\n+            test++;\n+            lenXZ++;\n+        }\n+        else\n+\t{\n+\t    myXZalgo.retractFront();\n+            blockXZ = true;\n+\t}\n+    }\n+    if ( myYZalgo.isExtendableFront() && !blockYZ )\n+    {\n+        Point2d tyz = myYZalgo.front();\n+        myYZalgo.extendFront();\n+        if ( myYZalgo.front() != tyz )\n+        {\n+            test++;\n+            lenYZ++;\n+        }\n+        else\n+\t{\n+\t    myYZalgo.retractFront();\n+            blockYZ = true;\n+\t}\n+    }\n+    if ( test >= 2 )\n+    {\n+        myEnd++;\n+        return true;\n+    }\n+    else return false;\n+}\n+\n+/** Tests whether the 3D DSS can be extended at the front.\n+ *\n+ * @return 'true' if yes, 'false' otherwise\n+ */\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+bool\n+DGtal::Naive3DDSSComputer<TIterator, TInteger,connectivity>::isExtendableFront()\n+{\n+    //projection on xy-plane\n+    short test = 0;\n+    if ( myXYalgo.isExtendableFront() && !blockXY )\n+        test++;\n+    //projection on xz-plane\n+    if ( myXZalgo.isExtendableFront() && !blockXZ )\n+        test++;\n+    //projection on yz-plane\n+    if ( myYZalgo.isExtendableFront() && !blockYZ )\n+        test++;\n+    if ( test >= 2 )\n+        return true;\n+    else return false;\n+}\n+\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+TIterator\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::begin() const {\n+  return myBegin;\n+}\n+\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+TIterator\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::end() const {\n+  return myEnd;\n+}\n+\n+//-----------------------------------------------------------------\n+/**\n+ * Checks the validity/consistency of the object.\n+ * @return 'true' if the object is valid, 'false' otherwise.\n+ */\n+\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+bool\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>::isValid() const\n+{\n+  return ( ( myXYalgo.isValid() ) &&\n+           ( myXZalgo.isValid() ) &&\n+           ( myYZalgo.isValid() ) );\n+}\n+\n+/**\n+ * Computes the parameters\n+ * (direction, intercept, thickness)\n+ * of the DSS\n+ * @param direction\n+ * @param intercept\n+ * @param thickness\n+ */\n+template <typename TIterator, typename TInteger, int connectivity>\n+inline\n+void\n+DGtal::Naive3DDSSComputer<TIterator,TInteger,connectivity>\n+::getParameters ( Point3d& direction, PointD3d& intercept, PointD3d& thickness ) const\n+{\n+    if ( lenXY > lenYZ && lenXZ > lenYZ ) { //XY-plane, XZ-plane\n+\n+        Integer a1 = myXYalgo.b();\n+        Integer b1 = myXYalgo.a();\n+        Integer a2 = myXZalgo.b();\n+        Integer c1 = myXZalgo.a();\n+\n+        if ( c1 == 0 || ( a1 == 0 && a2 == 0 ) )\n+            direction = Point3d ( a1, b1, c1 );\n+        else\n+        {\n+            if ( b1 == 0  )\n+                direction = Point3d ( a2, b1, c1 );\n+            else\n+            {\n+                direction = Point3d ( a1 * a2 , a2 * b1 , a1 * c1 );\n+            }\n+        }\n+\n+        Integer mu1 = myXYalgo.mu();\n+        Integer mu2 = myXZalgo.mu();\n+        double y = (double) -NumberTraits<TInteger>::castToInt64_t(mu1) / a1;","path":"src/DGtal/geometry/curves/Naive3DDSSComputer.ih","position":401,"original_position":401,"commit_id":"3f1ab53c87f3b3b727bd5cf7d6a6d3cf04cb1b1d","original_commit_id":"3f1ab53c87f3b3b727bd5cf7d6a6d3cf04cb1b1d","user":{"login":"JacquesOlivierLachaud","id":793707,"avatar_url":"https://avatars.githubusercontent.com/u/793707?v=3","gravatar_id":"","url":"https://api.github.com/users/JacquesOlivierLachaud","html_url":"https://github.com/JacquesOlivierLachaud","followers_url":"https://api.github.com/users/JacquesOlivierLachaud/followers","following_url":"https://api.github.com/users/JacquesOlivierLachaud/following{/other_user}","gists_url":"https://api.github.com/users/JacquesOlivierLachaud/gists{/gist_id}","starred_url":"https://api.github.com/users/JacquesOlivierLachaud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JacquesOlivierLachaud/subscriptions","organizations_url":"https://api.github.com/users/JacquesOlivierLachaud/orgs","repos_url":"https://api.github.com/users/JacquesOlivierLachaud/repos","events_url":"https://api.github.com/users/JacquesOlivierLachaud/events{/privacy}","received_events_url":"https://api.github.com/users/JacquesOlivierLachaud/received_events","type":"User","site_admin":false},"body":"Suggest () around numerator and ((double) ...) around denominator so that it is obvious that you want a floating-point division.","created_at":"2015-09-04T11:48:18Z","updated_at":"2015-09-04T11:48:18Z","html_url":"https://github.com/DGtal-team/DGtal/pull/1021#discussion_r38743683","pull_request_url":"https://api.github.com/repos/DGtal-team/DGtal/pulls/1021","_links":{"self":{"href":"https://api.github.com/repos/DGtal-team/DGtal/pulls/comments/38743683"},"html":{"href":"https://github.com/DGtal-team/DGtal/pull/1021#discussion_r38743683"},"pull_request":{"href":"https://api.github.com/repos/DGtal-team/DGtal/pulls/1021"}}},"pull_request":{"url":"https://api.github.com/repos/DGtal-team/DGtal/pulls/1021","id":38440889,"html_url":"https://github.com/DGtal-team/DGtal/pull/1021","diff_url":"https://github.com/DGtal-team/DGtal/pull/1021.diff","patch_url":"https://github.com/DGtal-team/DGtal/pull/1021.patch","issue_url":"https://api.github.com/repos/DGtal-team/DGtal/issues/1021","number":1021,"state":"open","locked":false,"title":"* Lambda-MST 2D/3D tangent estimator","user":{"login":"copyme","id":456607,"avatar_url":"https://avatars.githubusercontent.com/u/456607?v=3","gravatar_id":"","url":"https://api.github.com/users/copyme","html_url":"https://github.com/copyme","followers_url":"https://api.github.com/users/copyme/followers","following_url":"https://api.github.com/users/copyme/following{/other_user}","gists_url":"https://api.github.com/users/copyme/gists{/gist_id}","starred_url":"https://api.github.com/users/copyme/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/copyme/subscriptions","organizations_url":"https://api.github.com/users/copyme/orgs","repos_url":"https://api.github.com/users/copyme/repos","events_url":"https://api.github.com/users/copyme/events{/privacy}","received_events_url":"https://api.github.com/users/copyme/received_events","type":"User","site_admin":false},"body":"* Naive3DDSSComputer - DSS computer which uses only valid projections\r\n* Another related changes","created_at":"2015-06-24T13:21:41Z","updated_at":"2015-09-04T11:48:18Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a856b61c5e6456fc736c85b8f8e17b5e645aa68a","assignee":null,"milestone":{"url":"https://api.github.com/repos/DGtal-team/DGtal/milestones/9","html_url":"https://github.com/DGtal-team/DGtal/milestones/0.9","labels_url":"https://api.github.com/repos/DGtal-team/DGtal/milestones/9/labels","id":776797,"number":9,"title":"0.9","description":"","creator":{"login":"dcoeurjo","id":700165,"avatar_url":"https://avatars.githubusercontent.com/u/700165?v=3","gravatar_id":"","url":"https://api.github.com/users/dcoeurjo","html_url":"https://github.com/dcoeurjo","followers_url":"https://api.github.com/users/dcoeurjo/followers","following_url":"https://api.github.com/users/dcoeurjo/following{/other_user}","gists_url":"https://api.github.com/users/dcoeurjo/gists{/gist_id}","starred_url":"https://api.github.com/users/dcoeurjo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dcoeurjo/subscriptions","organizations_url":"https://api.github.com/users/dcoeurjo/orgs","repos_url":"https://api.github.com/users/dcoeurjo/repos","events_url":"https://api.github.com/users/dcoeurjo/events{/privacy}","received_events_url":"https://api.github.com/users/dcoeurjo/received_events","type":"User","site_admin":false},"open_issues":23,"closed_issues":23,"state":"open","created_at":"2014-09-03T13:26:56Z","updated_at":"2015-09-02T12:38:26Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/DGtal-team/DGtal/pulls/1021/commits","review_comments_url":"https://api.github.com/repos/DGtal-team/DGtal/pulls/1021/comments","review_comment_url":"https://api.github.com/repos/DGtal-team/DGtal/pulls/comments{/number}","comments_url":"https://api.github.com/repos/DGtal-team/DGtal/issues/1021/comments","statuses_url":"https://api.github.com/repos/DGtal-team/DGtal/statuses/3f1ab53c87f3b3b727bd5cf7d6a6d3cf04cb1b1d","head":{"label":"copyme:LambdaMST","ref":"LambdaMST","sha":"3f1ab53c87f3b3b727bd5cf7d6a6d3cf04cb1b1d","user":{"login":"copyme","id":456607,"avatar_url":"https://avatars.githubusercontent.com/u/456607?v=3","gravatar_id":"","url":"https://api.github.com/users/copyme","html_url":"https://github.com/copyme","followers_url":"https://api.github.com/users/copyme/followers","following_url":"https://api.github.com/users/copyme/following{/other_user}","gists_url":"https://api.github.com/users/copyme/gists{/gist_id}","starred_url":"https://api.github.com/users/copyme/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/copyme/subscriptions","organizations_url":"https://api.github.com/users/copyme/orgs","repos_url":"https://api.github.com/users/copyme/repos","events_url":"https://api.github.com/users/copyme/events{/privacy}","received_events_url":"https://api.github.com/users/copyme/received_events","type":"User","site_admin":false},"repo":{"id":19267623,"name":"DGtal","full_name":"copyme/DGtal","owner":{"login":"copyme","id":456607,"avatar_url":"https://avatars.githubusercontent.com/u/456607?v=3","gravatar_id":"","url":"https://api.github.com/users/copyme","html_url":"https://github.com/copyme","followers_url":"https://api.github.com/users/copyme/followers","following_url":"https://api.github.com/users/copyme/following{/other_user}","gists_url":"https://api.github.com/users/copyme/gists{/gist_id}","starred_url":"https://api.github.com/users/copyme/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/copyme/subscriptions","organizations_url":"https://api.github.com/users/copyme/orgs","repos_url":"https://api.github.com/users/copyme/repos","events_url":"https://api.github.com/users/copyme/events{/privacy}","received_events_url":"https://api.github.com/users/copyme/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/copyme/DGtal","description":"Digital Geometry Tools and Algorithm Library","fork":true,"url":"https://api.github.com/repos/copyme/DGtal","forks_url":"https://api.github.com/repos/copyme/DGtal/forks","keys_url":"https://api.github.com/repos/copyme/DGtal/keys{/key_id}","collaborators_url":"https://api.github.com/repos/copyme/DGtal/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/copyme/DGtal/teams","hooks_url":"https://api.github.com/repos/copyme/DGtal/hooks","issue_events_url":"https://api.github.com/repos/copyme/DGtal/issues/events{/number}","events_url":"https://api.github.com/repos/copyme/DGtal/events","assignees_url":"https://api.github.com/repos/copyme/DGtal/assignees{/user}","branches_url":"https://api.github.com/repos/copyme/DGtal/branches{/branch}","tags_url":"https://api.github.com/repos/copyme/DGtal/tags","blobs_url":"https://api.github.com/repos/copyme/DGtal/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/copyme/DGtal/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/copyme/DGtal/git/refs{/sha}","trees_url":"https://api.github.com/repos/copyme/DGtal/git/trees{/sha}","statuses_url":"https://api.github.com/repos/copyme/DGtal/statuses/{sha}","languages_url":"https://api.github.com/repos/copyme/DGtal/languages","stargazers_url":"https://api.github.com/repos/copyme/DGtal/stargazers","contributors_url":"https://api.github.com/repos/copyme/DGtal/contributors","subscribers_url":"https://api.github.com/repos/copyme/DGtal/subscribers","subscription_url":"https://api.github.com/repos/copyme/DGtal/subscription","commits_url":"https://api.github.com/repos/copyme/DGtal/commits{/sha}","git_commits_url":"https://api.github.com/repos/copyme/DGtal/git/commits{/sha}","comments_url":"https://api.github.com/repos/copyme/DGtal/comments{/number}","issue_comment_url":"https://api.github.com/repos/copyme/DGtal/issues/comments{/number}","contents_url":"https://api.github.com/repos/copyme/DGtal/contents/{+path}","compare_url":"https://api.github.com/repos/copyme/DGtal/compare/{base}...{head}","merges_url":"https://api.github.com/repos/copyme/DGtal/merges","archive_url":"https://api.github.com/repos/copyme/DGtal/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/copyme/DGtal/downloads","issues_url":"https://api.github.com/repos/copyme/DGtal/issues{/number}","pulls_url":"https://api.github.com/repos/copyme/DGtal/pulls{/number}","milestones_url":"https://api.github.com/repos/copyme/DGtal/milestones{/number}","notifications_url":"https://api.github.com/repos/copyme/DGtal/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/copyme/DGtal/labels{/name}","releases_url":"https://api.github.com/repos/copyme/DGtal/releases{/id}","created_at":"2014-04-29T07:24:17Z","updated_at":"2014-06-26T08:23:45Z","pushed_at":"2015-09-02T09:17:58Z","git_url":"git://github.com/copyme/DGtal.git","ssh_url":"git@github.com:copyme/DGtal.git","clone_url":"https://github.com/copyme/DGtal.git","svn_url":"https://github.com/copyme/DGtal","homepage":"http://libdgtal.org","size":141498,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"DGtal-team:master","ref":"master","sha":"a8a1ae2c49ac15a7cbb8d2bea5789d37e0523a96","user":{"login":"DGtal-team","id":1013900,"avatar_url":"https://avatars.githubusercontent.com/u/1013900?v=3","gravatar_id":"","url":"https://api.github.com/users/DGtal-team","html_url":"https://github.com/DGtal-team","followers_url":"https://api.github.com/users/DGtal-team/followers","following_url":"https://api.github.com/users/DGtal-team/following{/other_user}","gists_url":"https://api.github.com/users/DGtal-team/gists{/gist_id}","starred_url":"https://api.github.com/users/DGtal-team/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DGtal-team/subscriptions","organizations_url":"https://api.github.com/users/DGtal-team/orgs","repos_url":"https://api.github.com/users/DGtal-team/repos","events_url":"https://api.github.com/users/DGtal-team/events{/privacy}","received_events_url":"https://api.github.com/users/DGtal-team/received_events","type":"Organization","site_admin":false},"repo":{"id":1709095,"name":"DGtal","full_name":"DGtal-team/DGtal","owner":{"login":"DGtal-team","id":1013900,"avatar_url":"https://avatars.githubusercontent.com/u/1013900?v=3","gravatar_id":"","url":"https://api.github.com/users/DGtal-team","html_url":"https://github.com/DGtal-team","followers_url":"https://api.github.com/users/DGtal-team/followers","following_url":"https://api.github.com/users/DGtal-team/following{/other_user}","gists_url":"https://api.github.com/users/DGtal-team/gists{/gist_id}","starred_url":"https://api.github.com/users/DGtal-team/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DGtal-team/subscriptions","organizations_url":"https://api.github.com/users/DGtal-team/orgs","repos_url":"https://api.github.com/users/DGtal-team/repos","events_url":"https://api.github.com/users/DGtal-team/events{/privacy}","received_events_url":"https://api.github.com/users/DGtal-team/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/DGtal-team/DGtal","description":"Digital Geometry Tools and Algorithm Library","fork":false,"url":"https://api.github.com/repos/DGtal-team/DGtal","forks_url":"https://api.github.com/repos/DGtal-team/DGtal/forks","keys_url":"https://api.github.com/repos/DGtal-team/DGtal/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DGtal-team/DGtal/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DGtal-team/DGtal/teams","hooks_url":"https://api.github.com/repos/DGtal-team/DGtal/hooks","issue_events_url":"https://api.github.com/repos/DGtal-team/DGtal/issues/events{/number}","events_url":"https://api.github.com/repos/DGtal-team/DGtal/events","assignees_url":"https://api.github.com/repos/DGtal-team/DGtal/assignees{/user}","branches_url":"https://api.github.com/repos/DGtal-team/DGtal/branches{/branch}","tags_url":"https://api.github.com/repos/DGtal-team/DGtal/tags","blobs_url":"https://api.github.com/repos/DGtal-team/DGtal/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DGtal-team/DGtal/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DGtal-team/DGtal/git/refs{/sha}","trees_url":"https://api.github.com/repos/DGtal-team/DGtal/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DGtal-team/DGtal/statuses/{sha}","languages_url":"https://api.github.com/repos/DGtal-team/DGtal/languages","stargazers_url":"https://api.github.com/repos/DGtal-team/DGtal/stargazers","contributors_url":"https://api.github.com/repos/DGtal-team/DGtal/contributors","subscribers_url":"https://api.github.com/repos/DGtal-team/DGtal/subscribers","subscription_url":"https://api.github.com/repos/DGtal-team/DGtal/subscription","commits_url":"https://api.github.com/repos/DGtal-team/DGtal/commits{/sha}","git_commits_url":"https://api.github.com/repos/DGtal-team/DGtal/git/commits{/sha}","comments_url":"https://api.github.com/repos/DGtal-team/DGtal/comments{/number}","issue_comment_url":"https://api.github.com/repos/DGtal-team/DGtal/issues/comments{/number}","contents_url":"https://api.github.com/repos/DGtal-team/DGtal/contents/{+path}","compare_url":"https://api.github.com/repos/DGtal-team/DGtal/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DGtal-team/DGtal/merges","archive_url":"https://api.github.com/repos/DGtal-team/DGtal/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DGtal-team/DGtal/downloads","issues_url":"https://api.github.com/repos/DGtal-team/DGtal/issues{/number}","pulls_url":"https://api.github.com/repos/DGtal-team/DGtal/pulls{/number}","milestones_url":"https://api.github.com/repos/DGtal-team/DGtal/milestones{/number}","notifications_url":"https://api.github.com/repos/DGtal-team/DGtal/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DGtal-team/DGtal/labels{/name}","releases_url":"https://api.github.com/repos/DGtal-team/DGtal/releases{/id}","created_at":"2011-05-06T00:20:52Z","updated_at":"2015-08-24T19:21:26Z","pushed_at":"2015-09-03T09:31:47Z","git_url":"git://github.com/DGtal-team/DGtal.git","ssh_url":"git@github.com:DGtal-team/DGtal.git","clone_url":"https://github.com/DGtal-team/DGtal.git","svn_url":"https://github.com/DGtal-team/DGtal","homepage":"http://dgtal.org","size":198822,"stargazers_count":31,"watchers_count":31,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":39,"mirror_url":null,"open_issues_count":42,"forks":39,"open_issues":42,"watchers":31,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/DGtal-team/DGtal/pulls/1021"},"html":{"href":"https://github.com/DGtal-team/DGtal/pull/1021"},"issue":{"href":"https://api.github.com/repos/DGtal-team/DGtal/issues/1021"},"comments":{"href":"https://api.github.com/repos/DGtal-team/DGtal/issues/1021/comments"},"review_comments":{"href":"https://api.github.com/repos/DGtal-team/DGtal/pulls/1021/comments"},"review_comment":{"href":"https://api.github.com/repos/DGtal-team/DGtal/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/DGtal-team/DGtal/pulls/1021/commits"},"statuses":{"href":"https://api.github.com/repos/DGtal-team/DGtal/statuses/3f1ab53c87f3b3b727bd5cf7d6a6d3cf04cb1b1d"}}}}