def generate_plottable_points_along_line(model:LineModelND, xmin:int,xmax:int, ymin:int, ymax:int): """ Computes points along the specified line model The visual range is between xmin and xmax along X axis and between ymin and ymax along Y axis return shape is [[x1,y1],[x2,y2]] """ unit_vector=model.params[1] slope=abs(unit_vector[1]/unit_vector[0]) x_values=None y_values=None if (slope > 1): y_values=np.arange(ymin, ymax,1) x_values=model.predict_x(y_values) else: x_values=np.arange(xmin, xmax,1) y_values=model.predict_y(x_values) np_data_points=np.column_stack((x_values,y_values)) return np_data_points
def test_line_model_nd_predict(): model = LineModelND() model.params = (np.array([0, 0]), np.array([0.2, 0.8])) x = np.arange(-10, 10) y = model.predict_y(x) assert_almost_equal(x, model.predict_x(y))
def test_line_model_predict(): model = LineModelND() model.params = ((0, 0), (1, 1)) x = np.arange(-10, 10) y = model.predict_y(x) assert_almost_equal(x, model.predict_x(y))
def test_line_modelND_predict(): model = LineModelND() model.params = (np.array([0, 0]), np.array([0.2, 0.98])) x = np.arange(-10, 10) y = model.predict_y(x) assert_almost_equal(x, model.predict_x(y))