- Add
polliwog.segment.is_point_on_line_segment()
Polyline.sliced_at_points()
: Avoid inserting degenerate segments
- Support NumPy 1.24+
- Allow any version of numpy
- Test in Python 3.9
- Polyline:
- Fix bug in
nearest()
so thatret_distances
andret_t_values
work as intended
- Fix bug in
- Polyline:
- Add
aligned_along_subsegment()
- Add optional parameters to
nearest()
ret_distances
ret_t_values
- Add
polliwog.polyline.closest_point_of_line_segment()
: Addret_t_values
- CompositeTransform: Pass through
treat_input_as_vector
kwarg.
- Fix file not found loading schema during deserialization.
- Fix bug in
Polyline.with_segments_bisected()
.
- 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.
- Rework serialization and deserialization
- Publish JSON Schema and TypeScript types.
- Change
Polyline.to_dict()
toPolyline.serialize()
. - Instead of serializing polyline edges, serialize
is_closed
.
- Polyline, Plane: Add
flipped_if()
method.
- Revert bug fix from 2.3.1.
- Fix issue where
flipped()
creates non-contiguous arrays.
- Add
polliwog.segment.path_centroid()
.
- Add
polliwog.tri.surface_area()
andpolliwog.tri.sample()
.
polliwog.plane.slice_triangles_by_plane()
: Optionally return mapping of new faces to old.
- 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.
polliwog.plane.slice_triangles_by_plane()
: Add support for slicing a submesh.
- Add
polliwog.plane.slice_triangles_by_plane()
function, with implementation adapted from Trimesh.
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.)
- Upgrade
vg
dependency to>=2.0
.
- Remove
polliwog.__version__
.
- Upgrade
vg
dependency to>=1.11.1
.
- Polyline: Vectorize
point_along_path()
and support closed polylines.
- Add
polliwog.tri.edges_of_faces
function.
- Polyline: Add
point_along_path()
method.
- Add
Polyline.sectioned()
. - Add stacked input support to
polliwog.tri.tri_contains_coplanar_point()
andpolliwog.line.coplanar_points_are_on_same_side_of_line()
.
Polyline.segment_lengths
: Minor optimization
- Add
Plane.tilted()
.
Polyline.points_in_front()
no longer returns points on the plane.- Rename
polliwog.shapes.create_cube()
topolliwog.shapes.cube
, etc. - Remove
polliwog.shapes.create_rectangle()
. polliwog.transform.apply_affine_transform
is renamed topolliwog.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. Withdiscard_z_coord=True
, discard the z coordinate of the result. Withtreat_input_as_vectors=True
, it does not use the homogeneous coordinate, and therefore ignores translation.
- 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.
- Improve docs.
- CompositeTransform, CoordinateManager:
scale()
is renamed touniform_scale()
. polliwog.transform.transform_matrix_for_scale
is renamed topolliwog.transform.transform_matrix_for_uniform_scale
.
- Box: Add bounding planes.
- CompositeTransform, CoordinateManager: Add
non_uniform_scale()
. - CompositeTransform, CoordinateManager: Add
flip()
polliwog.transform.transform_matrix_for_scale
: Addallow_flipping
parameter.- Add
polliwog.transform.transform_matrix_for_non_uniform_scale
.
- Document point cloud functions.
- Omit tests from wheels.
- Add
polliwog.pointcloud.percentile
.
- Rename arguments to
polliwog.polyline.inflection_points
.
- Add
polliwog.polyline.point_of_max_acceleration
.
- Plane: Add
mirror_point()
.
- Correctly expose
mirror_point_across_plane()
.
- Plane: Rename
partition_by_length()
->subdivided_by_length()
. - Add
mirror_point_across_plane()
. - Remove
polliwog.transform.as_rotation_matrix()
. - Rename
polliwog.transform.rodrigues
tocv2_rodrigues()
. (Better to use one of the new functionsrodrigues_vector_to_rotation_matrix()
orrotation_matrix_to_rodrigues_vector()
instead.)
- Add
rodrigues_vector_to_rotation_matrix()
androdrigues_vector_to_rotation_matrix()
as clearer versions ofrodrigues()
.
- 100% test coverage 💯 :party:
- Publish the wheel using Python 3.
- Add leading underscores to all private modules, causing any non-canonical imports to break.
- 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()
andfind_rigid_transform()
. They are being moved to Entente. cut_open_polyline_by_plane()
is now private.- Remove
estimate_normal()
.
- Break out affine transformations into their own functions.
- Plane:
sign()
anddistance()
work with single query points. - Box: Add
contains()
method.
- Fix
contains_coplanar_point()
.
- Documentation on a single page, with sections.
- Require Python 3.
- Polyline:
- Rename
flip()
toflipped()
. - Rename
oriented_along()
toaligned_with()
and dropreverse
parameter. - Rename
bisect_edges()
towith_segments_bisected()
. - Rename
cut_by_plane()
tosliced_by_plane()
. - Rename
reindexed()
torolled()
.
- Rename
- 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.
- Require
rotation_from_up_and_look()
: Requirenp.array
input, not list.- Consolidate
tri.barycentric
,tri.contains
, andtri.surface_normals
intotri.functions
. - Rename
tri.arity
totri.quad_faces
. - Remove
transform.translation()
. - Remove
transform.composite.convert_44_to_33()
. Makeconvert_33_to_44()
private for now.
- Polyline:
- Add
index_of_vertex()
. - Add
with_insertions()
. - Add
sliced_at_points()
. - Add
sliced_at_indices()
. join()
: Addis_closed
parameter.
- Add
- Add
transform.apply_affine_transform()
.
- 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
andtri.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.
- Polyline: Rename
closed
property tois_closed
. - Box: Rename
shape
tosize
. - Rename
line_intersect()
toline_intersect2()
and return None instead of nan's.
- Polyline: Add
oriented_along()
method. - Polyline: Add
bounding_box
property. - Polyline: Add
join()
class method.
- Fix
check_shape_any()
error messages and add tests.
- Require
vg
1.5+. - Omit tests from PyPI distribution.
Polyline.cut_by_plane()
: Handle vertices which lie in the plane.
- Add
segment.segment.closest_point_of_line_segment()
- Add
line.functions.project_to_line()
- Polyline:
- Add
num_v
andnum_e
properties. - Remove
as_lines()
and references to lace. - Refactor
segment_lengths
usingvg.euclidean_distance()
. - Vectorize
partition_by_length()
.
- Add
- 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.
- Polyline: Add
bisect_edges()
method. - Return
np.ndarray
s from shapes functions.
- Add Line primitive.
- Add
polliwog.tri.contains.planar_point
. - Update vg dependency (now requires 1.2.0).
- Update vg dependency (now requires 1.0.0)
- Replace most np array coercion with shape checking.
- Use pint for unit conversion.
- Remove most modules from _temporary.
- Fix erroneous in rigid_transform.
- Rewrite
polliwog.tri.barycentric
with new function signature. - Improve test coverage.
- Fix
pip install polliwog
.
Initial release.