change data, mathematics, function, geometry and geometry_plot_pylab. add data_step, data_step_std and helper. add an example and more documentation.

inside the data module rename read to read_columns add add new read function to read the whole file as string. add print_list function to print one element per line. add unique_list and unique_list_hashable to reduce the list into a unique list with same order. add find_last, str_between, str_to_list functions.

inside the mathematics module for vector add normalized creating a new object (normalize will change the object), isclose and iscloseto, change ang to round internal number. for matrix improve slicing and add transposed creating a new object (transpose will change object).

inside the function module add b_spline_basis, b_spline_curve_with_knots and b_spline_knots functions. add sample_hal_open and sample_half_open_seq. add circle and ellipse.

inside the geometry module change CS init from using lists to Directions and add new constructor CS.init_xzy using lists. rename Wireframe to Polyline. add classes B_spline_curve_with_knots, Ellipse, ArcCircle, ArcEllipse, ArcBSplineCurveWithKnots. add function sample_half_open to create a list of Points.

inside the geometry_plot_pylab module change the help text.

add step_and data data_step_std module to read a step file to list and draw the content.

add helper module with context manager and decorator timeit to meassure the time for a section or function.

add example for b_spline function.
This commit is contained in:
2020-01-08 21:59:53 +01:00
parent 4b42d7b508
commit 4fc4903dc2
56 changed files with 8756 additions and 947 deletions

View File

@@ -167,14 +167,42 @@ class TestGeometry(unittest.TestCase):
len(obj),
3)
def test_vector_normalize(self):
v = vector.normalize(vector([3, 4]))
def test_vector_ang(self):
a = vector([1, 0])
b = vector([0, 1])
print(vector.ang(a,b), vector.ang(b, a))
self.assertEqual(
v,
vector.ang(a, b),
math.pi/2)
self.assertEqual(
vector.ang(b, a),
math.pi/2)
def test_vector_normalized(self):
v1 = vector([3, 4])
v2 = vector.normalized(v1)
self.assertEqual(
v2,
[0.6, 0.8])
self.assertEqual(
abs(v),
abs(v2),
1)
self.assertEqual(
v1,
[3, 4])
def test_vector_normalize(self):
v1 = vector([3, 4])
v2 = v1.normalize()
self.assertEqual(
v2,
[0.6, 0.8])
self.assertEqual(
abs(v2),
1)
self.assertEqual(
v1,
[0.6, 0.8])
def test_vector_rotate_x(self):
# rotation of vector coordinate system about x axis