Skip to content

Latest commit

 

History

History
476 lines (284 loc) · 11 KB

CHANGELOG.md

File metadata and controls

476 lines (284 loc) · 11 KB

Changelog

3.0.0-alpha.9 (Aug 10, 2024)

  • Add polliwog.segment.is_point_on_line_segment()
  • Polyline.sliced_at_points(): Avoid inserting degenerate segments

3.0.0-alpha.8 (Jan 18, 2023)

  • Support NumPy 1.24+

3.0.0-alpha.7 (Nov. 16, 2022)

  • Allow any version of numpy
  • Test in Python 3.9

3.0.0-alpha.6 (Nov. 2, 2022)

  • Polyline:
    • Fix bug in nearest() so that ret_distances and ret_t_values work as intended

3.0.0-alpha.5 (Oct. 26, 2022)

  • Polyline:
    • Add aligned_along_subsegment()
    • Add optional parameters to nearest()
      • ret_distances
      • ret_t_values
  • polliwog.polyline.closest_point_of_line_segment(): Add ret_t_values

3.0.0-alpha.4 (Jun. 22, 2022)

  • CompositeTransform: Pass through treat_input_as_vector kwarg.

3.0.0-alpha.3 (May 16, 2022)

  • Fix file not found loading schema during deserialization.

3.0.0-alpha.2 (May 11, 2022)

  • Fix bug in Polyline.with_segments_bisected().

3.0.0-alpha.1 (May 5, 2022)

  • Make Polyline immutable.
  • Change Plane constructor:
    • Match names of constructor parameters to names of properties.
    • Enforce immutability.
    • Do not normalize in the constructor. This enables idempotent serialization and deserialization.
  • Plane, Polyline: Add rounded() method.

3.0.0-alpha.0 (Apr. 8, 2022)

  • Rework serialization and deserialization
    • Publish JSON Schema and TypeScript types.
    • Change Polyline.to_dict() to Polyline.serialize().
    • Instead of serializing polyline edges, serialize is_closed.

2.4.0 (Dec. 9, 2021)

New features

  • Polyline, Plane: Add flipped_if() method.

2.3.2 (Nov. 23, 2021)

Bug fixes

  • Revert bug fix from 2.3.1.

2.3.1 (Nov. 19, 2021)

Bug fixes

  • Fix issue where flipped() creates non-contiguous arrays.

2.3.0 (Oct. 29, 2021)

New features

  • Add polliwog.segment.path_centroid().

2.2.0 (Oct. 18, 2021)

New features

  • Add polliwog.tri.surface_area() and polliwog.tri.sample().

2.1.0 (Oct. 15, 2021)

New features

  • polliwog.plane.slice_triangles_by_plane(): Optionally return mapping of new faces to old.

2.0.0 (Oct. 4, 2021)

BREAKING CHANGES

  • Functions which accept triangle face indices require the dtype to be np.int64.

While this restriction may be a little inconvenient for the caller, it improves interoperability and performance, simplifies the implementation, and produces more predictable return values. It's recommended that consuming applications store all face indices using this dtype.

1.2.0 (Oct. 4, 2021)

New features

  • polliwog.plane.slice_triangles_by_plane(): Add support for slicing a submesh.

1.1.0 (Sep. 23, 2021)

New features

  • Add polliwog.plane.slice_triangles_by_plane() function, with implementation adapted from Trimesh.

1.0.1 (Aug. 27, 2021)

Bug fixes

  • Polyline.point_along_path(): Fix issue where non-unit length segments compute the wrong point. (For segments longer than 1, the point was sometimes entirely off the polyline.)

1.0.0 (Jul. 18, 2021)

  • Upgrade vg dependency to >=2.0.

1.0.0b14 (Jun. 9, 2021)

BREAKING CHANGES

  • Remove polliwog.__version__.

Other changes

  • Upgrade vg dependency to >=1.11.1.

1.0.0b13 (Jun. 9, 2021)

New features

  • Polyline: Vectorize point_along_path() and support closed polylines.

1.0.0b12 (Apr. 15, 2021)

New features

  • Add polliwog.tri.edges_of_faces function.

1.0.0b11 (Mar. 25, 2021)

New features

  • Polyline: Add point_along_path() method.

1.0.0b10 (May 25, 2020)

New features

  • Add Polyline.sectioned().
  • Add stacked input support to polliwog.tri.tri_contains_coplanar_point() and polliwog.line.coplanar_points_are_on_same_side_of_line().

Optimizations

  • Polyline.segment_lengths: Minor optimization

1.0.0b9 (May 7, 2020)

New features

  • Add Plane.tilted().

1.0.0b8 (Apr. 22, 2020)

BREAKING CHANGES

  • Polyline.points_in_front() no longer returns points on the plane.
  • Rename polliwog.shapes.create_cube() to polliwog.shapes.cube, etc.
  • Remove polliwog.shapes.create_rectangle().
  • polliwog.transform.apply_affine_transform is renamed to polliwog.transform.apply_transform. It now accepts a single argument, a transformation matrix, which it wraps into a function which is returned. The function accepts a point or stack of points, along with two kwargs. With discard_z_coord=True, discard the z coordinate of the result. With treat_input_as_vectors=True, it does not use the homogeneous coordinate, and therefore ignores translation.

New features

  • Add Polyline.points_on_or_in_front().
  • Add Polyline.path_centroid property.
  • Add polliwog.transform.compose_transforms().
  • Add several functions in polliwog.transform for orthographic viewing transformations.

Other improvements

  • Improve docs.

1.0.0b7 (Mar. 1, 2020)

BREAKING CHANGES

  • CompositeTransform, CoordinateManager: scale() is renamed to uniform_scale().
  • polliwog.transform.transform_matrix_for_scale is renamed to polliwog.transform.transform_matrix_for_uniform_scale.

New features

  • Box: Add bounding planes.
  • CompositeTransform, CoordinateManager: Add non_uniform_scale().
  • CompositeTransform, CoordinateManager: Add flip()
  • polliwog.transform.transform_matrix_for_scale: Add allow_flipping parameter.
  • Add polliwog.transform.transform_matrix_for_non_uniform_scale.

Other improvements

  • Document point cloud functions.
  • Omit tests from wheels.

1.0.0-beta.6 (Jan. 17, 2020)

New features

  • Add polliwog.pointcloud.percentile.

1.0.0-beta.5 (Jan. 13, 2020)

BREAKING CHANGES

  • Rename arguments to polliwog.polyline.inflection_points.

New features

  • Add polliwog.polyline.point_of_max_acceleration.

1.0.0-beta.4 (Dec. 27, 2019)

New features

  • Plane: Add mirror_point().

1.0.0-beta.3 (Dec. 26, 2019)

Bug fixes

  • Correctly expose mirror_point_across_plane().

1.0.0-beta.2 (Dec. 26, 2019)

BREAKING CHANGES

  • Plane: Rename partition_by_length() -> subdivided_by_length().
  • Add mirror_point_across_plane().
  • Remove polliwog.transform.as_rotation_matrix().
  • Rename polliwog.transform.rodrigues to cv2_rodrigues(). (Better to use one of the new functions rodrigues_vector_to_rotation_matrix() or rotation_matrix_to_rodrigues_vector() instead.)

New features

  • Add rodrigues_vector_to_rotation_matrix() and rodrigues_vector_to_rotation_matrix() as clearer versions of rodrigues().

Other maintenance

  • 100% test coverage 💯 :party:
  • Publish the wheel using Python 3.
  • Add leading underscores to all private modules, causing any non-canonical imports to break.

1.0.0-beta.1 (Dec. 5, 2019)

BREAKING CHANGES

  • Reorganize entire API into a few namespaces.
  • Attach named coordinate planes to Plane class.
  • Various API changes in CompositeTransform.
  • Remove CompositeTransform.append_transform3().
  • Remove partition_segment_old().
  • Remove find_rigid_rotation() and find_rigid_transform(). They are being moved to Entente.
  • cut_open_polyline_by_plane() is now private.
  • Remove estimate_normal().

New features

  • Break out affine transformations into their own functions.
  • Plane: sign() and distance() work with single query points.
  • Box: Add contains() method.

Bug fixes

  • Fix contains_coplanar_point().

Other maintenance

  • Documentation on a single page, with sections.

0.12.0 (Nov. 25, 2019)

BREAKING CHANGES

  • Require Python 3.
  • Polyline:
    • Rename flip() to flipped().
    • Rename oriented_along() to aligned_with() and drop reverse parameter.
    • Rename bisect_edges() to with_segments_bisected().
    • Rename cut_by_plane() to sliced_by_plane().
    • Rename reindexed() to rolled().
  • CompositeTransform:
    • Require np.array inputs, not lists.
    • Rename some arguments.
    • Remove special support for lace.mesh.Mesh. This functionality can be restored as a convenience function on Mesh itself.
  • rotation_from_up_and_look(): Require np.array input, not list.
  • Consolidate tri.barycentric, tri.contains, and tri.surface_normals into tri.functions.
  • Rename tri.arity to tri.quad_faces.
  • Remove transform.translation().
  • Remove transform.composite.convert_44_to_33(). Make convert_33_to_44() private for now.

New features

  • Polyline:
    • Add index_of_vertex().
    • Add with_insertions().
    • Add sliced_at_points().
    • Add sliced_at_indices().
    • join(): Add is_closed parameter.
  • Add transform.apply_affine_transform().

Other maintenance

  • Auto-generate documentation and start to improve them. They aren't 100% but they're a good part of the way there: https://polliwog.readthedocs.io/en/latest/
  • Publish wheels for OS X.
  • Consolidate duplicate implementations plane.functions.plane_normal_from_points and tri.functions.surface_normals.
  • Replace pyflakes with flake8.
  • Refactor some array shape validation code.
  • Remove setter_property decorator.
  • Remove rotate_to_xz_plane().
  • Stop using vg.matrix which is being deprecated.
  • Replace pint with ounce.

0.11.0 (Oct. 27, 2019)

BREAKING CHANGES

  • Polyline: Rename closed property to is_closed.
  • Box: Rename shape to size.
  • Rename line_intersect() to line_intersect2() and return None instead of nan's.

New features

  • Polyline: Add oriented_along() method.
  • Polyline: Add bounding_box property.
  • Polyline: Add join() class method.

Bug fixes

  • Fix check_shape_any() error messages and add tests.

Other maintenance

  • Require vg 1.5+.
  • Omit tests from PyPI distribution.

0.10.0 (Oct. 12, 2019)

  • Polyline.cut_by_plane(): Handle vertices which lie in the plane.

0.9.0 (Oct. 6, 2019)

  • Add segment.segment.closest_point_of_line_segment()
  • Add line.functions.project_to_line()

0.8.0 (Oct. 5, 2019)

  • Polyline:
    • Add num_v and num_e properties.
    • Remove as_lines() and references to lace.
    • Refactor segment_lengths using vg.euclidean_distance().
    • Vectorize partition_by_length().
  • Fix inflection_points and add test coverage.
  • Add tri.arity.quads_to_tris() (from lace).
  • Add vectorized plane functions.
  • Improve test coverage.
  • Don't ship the tests.

0.7.0 (June 30, 2019)

  • Polyline: Add bisect_edges() method.
  • Return np.ndarrays from shapes functions.

0.6.0 (May 29, 2019)

  • Add Line primitive.
  • Add polliwog.tri.contains.planar_point.
  • Update vg dependency (now requires 1.2.0).

0.5.0 (Apr 4, 2019)

  • Update vg dependency (now requires 1.0.0)

0.4.0 (Apr 3, 2019)

  • Replace most np array coercion with shape checking.
  • Use pint for unit conversion.
  • Remove most modules from _temporary.
  • Fix erroneous in rigid_transform.

0.3.0 (Apr 3, 2019)

  • Rewrite polliwog.tri.barycentric with new function signature.
  • Improve test coverage.

0.2.1 (Mar 31, 2019)

  • Fix pip install polliwog.

0.2.0 (Mar 28, 2019)

Initial release.