From 93648c6bfda392eb721c1c863e9e42a6adc40b27 Mon Sep 17 00:00:00 2001 From: William Boyles <40878829+wmboyles@users.noreply.github.com> Date: Sun, 8 Jul 2018 15:06:56 -0400 Subject: [PATCH 01/16] Python implementation from Graham Scan --- .../graham_scan/code/python/grahamScan.py | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 chapters/computational_geometry/gift_wrapping/graham_scan/code/python/grahamScan.py diff --git a/chapters/computational_geometry/gift_wrapping/graham_scan/code/python/grahamScan.py b/chapters/computational_geometry/gift_wrapping/graham_scan/code/python/grahamScan.py new file mode 100644 index 000000000..35c7a113d --- /dev/null +++ b/chapters/computational_geometry/gift_wrapping/graham_scan/code/python/grahamScan.py @@ -0,0 +1,57 @@ +from math import atan2 + +#Is the turn counter clockwise? +def CCW(p1, p2, p3): + return (p3[1]-p1[1])*(p2[0]-p1[0]) >= (p2[1]-p1[1])*(p3[0]-p1[0]) + + +#Find the point with least y-value. If tie, use point with least x-value. +def minYPoint(points): + minYPt = points[0] + + for point in points[1:]: + if point[1] < minYPt[1]: + minYPt = point + elif point[1] == minYPt[1] and point[0] Date: Sun, 8 Jul 2018 15:23:42 -0400 Subject: [PATCH 02/16] Included Python code in .md --- .../gift_wrapping/graham_scan/graham_scan.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md b/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md index 877e8111c..346adedbd 100644 --- a/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md +++ b/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md @@ -20,6 +20,8 @@ We can find whether a rotation is counter-clockwise with trigonometric functions [import:24-26, lang:"c_cpp"](code/c/graham.c) {% sample lang="js" %} [import:36-38, lang:"javascript"](code/javascript/graham-scan.js) +{% sample lang="py" %} +[import3-5, lang:"python"](code/python/grahamScan.py) {% endmethod %} If the output of this function is 0, the points are collinear. @@ -42,6 +44,8 @@ In the end, the code should look something like this: [import:65-95, lang:"c_cpp"](code/c/graham.c) {% sample lang="js" %} [import:1-30, lang:"javascript"](code/javascript/graham-scan.js) +{% sample lang="py" %} +[import31-44, lang:"python"](code/python/grahamScan.py) {% endmethod %} ### Bibliography From 781e986d05a870770dd149b7d9e39fcc54cfe4af Mon Sep 17 00:00:00 2001 From: William Boyles <40878829+wmboyles@users.noreply.github.com> Date: Sun, 8 Jul 2018 17:54:41 -0400 Subject: [PATCH 03/16] Compliance with pep8 This should make the code follow pep-8 standards. --- .../graham_scan/code/python/grahamScan.py | 35 +++++++------------ 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/chapters/computational_geometry/gift_wrapping/graham_scan/code/python/grahamScan.py b/chapters/computational_geometry/gift_wrapping/graham_scan/code/python/grahamScan.py index 35c7a113d..401cfc695 100644 --- a/chapters/computational_geometry/gift_wrapping/graham_scan/code/python/grahamScan.py +++ b/chapters/computational_geometry/gift_wrapping/graham_scan/code/python/grahamScan.py @@ -1,43 +1,31 @@ from math import atan2 + #Is the turn counter clockwise? -def CCW(p1, p2, p3): +def counter_Clockwise(p1, p2, p3): return (p3[1]-p1[1])*(p2[0]-p1[0]) >= (p2[1]-p1[1])*(p3[0]-p1[0]) -#Find the point with least y-value. If tie, use point with least x-value. -def minYPoint(points): - minYPt = points[0] - - for point in points[1:]: - if point[1] < minYPt[1]: - minYPt = point - elif point[1] == minYPt[1] and point[0] Date: Sun, 8 Jul 2018 17:57:39 -0400 Subject: [PATCH 04/16] Updated .md to reflect code changes --- .../gift_wrapping/graham_scan/graham_scan.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md b/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md index 346adedbd..fdd6bdfcc 100644 --- a/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md +++ b/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md @@ -21,7 +21,7 @@ We can find whether a rotation is counter-clockwise with trigonometric functions {% sample lang="js" %} [import:36-38, lang:"javascript"](code/javascript/graham-scan.js) {% sample lang="py" %} -[import3-5, lang:"python"](code/python/grahamScan.py) +[import:20, lang:"python"](code/python/grahamScan.py) {% endmethod %} If the output of this function is 0, the points are collinear. @@ -45,7 +45,7 @@ In the end, the code should look something like this: {% sample lang="js" %} [import:1-30, lang:"javascript"](code/javascript/graham-scan.js) {% sample lang="py" %} -[import31-44, lang:"python"](code/python/grahamScan.py) +[import19-32, lang:"python"](code/python/grahamScan.py) {% endmethod %} ### Bibliography From 494d0832571aba64d76f305123514e99effad1a2 Mon Sep 17 00:00:00 2001 From: William Boyles <40878829+wmboyles@users.noreply.github.com> Date: Sun, 8 Jul 2018 17:59:31 -0400 Subject: [PATCH 05/16] fixed missing ":" --- .../gift_wrapping/graham_scan/graham_scan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md b/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md index fdd6bdfcc..638b3633b 100644 --- a/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md +++ b/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md @@ -45,7 +45,7 @@ In the end, the code should look something like this: {% sample lang="js" %} [import:1-30, lang:"javascript"](code/javascript/graham-scan.js) {% sample lang="py" %} -[import19-32, lang:"python"](code/python/grahamScan.py) +[import:19-32, lang:"python"](code/python/grahamScan.py) {% endmethod %} ### Bibliography From 4839e221170a6119013df8da24cf37c211f0a963 Mon Sep 17 00:00:00 2001 From: William Boyles <40878829+wmboyles@users.noreply.github.com> Date: Sun, 8 Jul 2018 18:01:34 -0400 Subject: [PATCH 06/16] Added full example to .md --- .../gift_wrapping/graham_scan/graham_scan.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md b/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md index 638b3633b..e541e6555 100644 --- a/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md +++ b/chapters/computational_geometry/gift_wrapping/graham_scan/graham_scan.md @@ -65,7 +65,11 @@ In the end, the code should look something like this: ### C [import, lang:"c_cpp"](code/c/graham.c) {% sample lang="js" %} +### Javascript [import, lang:"javascript"](code/javascript/graham-scan.js) +{% sample lang="py" %} +### Python +[import, lang:"python"](code/python/grahamScan.py) {% endmethod %}