예제 #1
0
 def test_collinear_segments(self):
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     b = (np.array([0., 0, 1]), np.array([0, 0, 2.]))
     self.assertAlmostEqual(ftuv.line_segments_collinearity(a, b), 1)
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     b = (np.array([0., 0, -1]), np.array([0, 0, -2.]))
     self.assertAlmostEqual(ftuv.line_segments_collinearity(a, b), 1)
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     b = (np.array([0., 0, -2]), np.array([0, 0, -1.]))
     self.assertAlmostEqual(ftuv.line_segments_collinearity(a, b), 1)
     a = (np.array([0., 0, 0]), np.array([1, 1, 1]))
     b = (np.array([2., 2, 2]), np.array([3, 3, 3.]))
     self.assertAlmostEqual(ftuv.line_segments_collinearity(a, b), 1)
     a = (np.array([0., 0, 0]), np.array([1, 1, 1]))
     b = (np.array([0.5, 0.5, 0.5]), np.array([0.7, 0.7, 0.7]))
     self.assertAlmostEqual(ftuv.line_segments_collinearity(a, b), 1)
예제 #2
0
 def test_collinear_segments(self):
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     b = (np.array([0., 0, 1]), np.array([0, 0, 2.]))
     self.assertAlmostEqual(ftuv.line_segments_collinearity(a, b), 1)
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     b = (np.array([0., 0, -1]), np.array([0, 0, -2.]))
     self.assertAlmostEqual(ftuv.line_segments_collinearity(a, b), 1)
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     b = (np.array([0., 0, -2]), np.array([0, 0, -1.]))
     self.assertAlmostEqual(ftuv.line_segments_collinearity(a, b), 1)
     a = (np.array([0., 0, 0]), np.array([1, 1, 1]))
     b = (np.array([2., 2, 2]), np.array([3, 3, 3.]))
     self.assertAlmostEqual(ftuv.line_segments_collinearity(a, b), 1)
     a = (np.array([0., 0, 0]), np.array([1, 1, 1]))
     b = (np.array([0.5, 0.5, 0.5]), np.array([0.7, 0.7, 0.7]))
     self.assertAlmostEqual(ftuv.line_segments_collinearity(a, b), 1)
예제 #3
0
 def test_normal_angle(self):
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     b = (np.array([0., 0, 1]), np.array([0., 1, 1]))
     x = np.linspace(0.01, 4, 500)
     for f in x:
         col = ftuv.line_segments_collinearity(a, (b[0] * f, b[1] * f))
         self.assertLess(col, 0.6)
         self.assertGreater(col, 0.)
예제 #4
0
 def test_normal_angle(self):
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     b = (np.array([0., 0, 1]), np.array([0., 1, 1]))
     x = np.linspace(0.01, 4, 500)
     for f in x:
         col = ftuv.line_segments_collinearity(a, (b[0] * f, b[1] * f))
         self.assertLess(col, 0.6)
         self.assertGreater(col, 0.)
예제 #5
0
 def plot_distance(self):
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     x = np.linspace(0.01, 10, 5000)
     y = []
     for d in x:
         b0 = a[1] + np.array([0, 1., 0.]) * d
         b = b0, b0 + np.array([0., 0, 1])
         y.append(ftuv.line_segments_collinearity(a, b))
     import matplotlib.pyplot as plt
     plt.title("distance")
     plt.plot(x, y)
     plt.show()
예제 #6
0
 def test_distance(self):
     #score decreases with increasing distance, but stays above 0
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     x = np.linspace(0.01, 10, 5000)
     y_old = 1
     for d in x:
         b0 = a[1] + np.array([0, 1., 0.]) * d
         b = b0, b0 + np.array([0., 0, 1])
         y = ftuv.line_segments_collinearity(a, b)
         self.assertLess(y, y_old)
         self.assertGreater(y, 0)
         y_old = y
예제 #7
0
 def plot_normal(self):
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     b = (np.array([0., 0, 1]), np.array([0., 1, 1]))
     x = np.linspace(0.01, 4, 5000)
     y = []
     for f in x:
         y.append(ftuv.line_segments_collinearity(a, (b[0] * f, b[1] * f)))
     import matplotlib.pyplot as plt
     plt.title("normal")
     plt.plot(x, y)
     plt.show()
     assert False
예제 #8
0
 def plot_distance(self):
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     x = np.linspace(0.01, 10, 5000)
     y = []
     for d in x:
         b0 = a[1] + np.array([0, 1., 0.]) * d
         b = b0, b0 + np.array([0., 0, 1])
         y.append(ftuv.line_segments_collinearity(a, b))
     import matplotlib.pyplot as plt
     plt.title("distance")
     plt.plot(x, y)
     plt.show()
예제 #9
0
 def test_distance(self):
     # score decreases with increasing distance, but stays above 0
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     x = np.linspace(0.01, 10, 5000)
     y_old = 1
     for d in x:
         b0 = a[1] + np.array([0, 1., 0.]) * d
         b = b0, b0 + np.array([0., 0, 1])
         y = ftuv.line_segments_collinearity(a, b)
         self.assertLess(y, y_old)
         self.assertGreater(y, 0)
         y_old = y
예제 #10
0
 def plot_normal(self):
     a = (np.array([0., 0, 0]), np.array([0, 0, 1]))
     b = (np.array([0., 0, 1]), np.array([0., 1, 1]))
     x = np.linspace(0.01, 4, 5000)
     y = []
     for f in x:
         y.append(ftuv.line_segments_collinearity(a, (b[0] * f, b[1] * f)))
     import matplotlib.pyplot as plt
     plt.title("normal")
     plt.plot(x, y)
     plt.show()
     assert False