Changelog
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
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
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 :100: :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.ndarray
s 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.