From 4a2642ae587ec18e6b024837ddc0838c95ff49f2 Mon Sep 17 00:00:00 2001
From: Yuriy Maksymets <iurii.maksymets@gmail.com>
Date: Sun, 10 Nov 2019 17:45:35 +0000
Subject: [PATCH] Using angles instead of directions

---
 __tests__/shape.test.js | 14 +++++++-------
 src/shapes.js           | 18 ++----------------
 2 files changed, 9 insertions(+), 23 deletions(-)

diff --git a/__tests__/shape.test.js b/__tests__/shape.test.js
index db3d23f..917d617 100644
--- a/__tests__/shape.test.js
+++ b/__tests__/shape.test.js
@@ -1,4 +1,4 @@
-import recognizeFromPoints, { Shapes, LineDirections } from "../src/shapes"
+import recognizeFromPoints, { Shapes } from "../src/shapes"
 
 describe("shape recognition", () => {
   describe("general", () => {
@@ -14,21 +14,21 @@ describe("shape recognition", () => {
       const points = [[0, 0], [100, 0]]
       const result = recognizeFromPoints(points)
       expect(result.shape).toBe(Shapes.line)
-      expect(result.direction).toBe(LineDirections.h)
+      expect(result.angle).toBe(0)
     })
 
     test("should recognize a simple vertical line", () => {
       const points = [[0, 50], [0, -100]]
       const result = recognizeFromPoints(points)
       expect(result.shape).toBe(Shapes.line)
-      expect(result.direction).toBe(LineDirections.v)
+      expect(result.angle).toBe(90)
     })
 
     test("should recognize a slightly curve horizontal line", () => {
       const points = [[0, 0], [30, 5], [100, 2]]
       const result = recognizeFromPoints(points)
       expect(result.shape).toBe(Shapes.line)
-      expect(result.direction).toBe(LineDirections.h)
+      expect(result.angle).toBe(0)
     })
 
     test("should not recognize a really curved horizontal line", () => {
@@ -57,7 +57,7 @@ describe("shape recognition", () => {
       ]
       const result = recognizeFromPoints(points)
       expect(result.shape).toBe(Shapes.line)
-      expect(result.direction).toBe(LineDirections.h)
+      expect(result.angle).toBe(0)
     })
 
     test("should recognize a long vertical line", () => {
@@ -100,7 +100,7 @@ describe("shape recognition", () => {
       ]
       const result = recognizeFromPoints(points)
       expect(result.shape).toBe(Shapes.line)
-      expect(result.direction).toBe(LineDirections.v)
+      expect(result.angle).toBe(90)
     })
 
     test("should recognize a line at 20 degrees", () => {
@@ -177,7 +177,7 @@ describe("shape recognition", () => {
 
       const result = recognizeFromPoints(points)
       expect(result.shape).toBe(Shapes.line)
-      expect(result.direction).toBe(LineDirections.d20)
+      expect(result.angle).toBe(20)
     })
   })
 
diff --git a/src/shapes.js b/src/shapes.js
index 4611b73..28268de 100644
--- a/src/shapes.js
+++ b/src/shapes.js
@@ -9,7 +9,7 @@ function sin(a) {
 }
 
 const rhoStep = 5
-const angleStep = 10
+const angleStep = rhoStep * 2
 const numAngleCells = 180 / angleStep
 const rhoMax = 1000
 
@@ -63,7 +63,7 @@ function recognizeFromPoints(points) {
   if (angle !== undefined) {
     return {
       shape: Shapes.line,
-      direction: getDirection(angle),
+      angle: 90 - angle,
       points,
     }
   }
@@ -71,20 +71,6 @@ function recognizeFromPoints(points) {
   return {}
 }
 
-const dirMap = { 0: "v", 90: "h", 70: "d20" }
-
-function getDirection(angle) {
-  const map = dirMap[angle]
-  if (map == undefined) return angle
-  return LineDirections[map]
-}
-
-export const LineDirections = {
-  v: "v",
-  h: "h",
-  d20: "20",
-}
-
 export const Shapes = {
   rectangle: "rect",
   line: "line",
-- 
GitLab