[ https://issues.apache.org/jira/browse/GEOMETRY-29?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16791829#comment-16791829 ]
Matt Juntunen commented on GEOMETRY-29: --------------------------------------- {quote}I don't see the use cases for hashCode and equals for values based on doubles. {quote} I agree that in many situations fuzzy comparison of doubles is preferred, but I don't think that means we should not implement these methods. A situation where I might rely on these methods is when reuniting split subhyperplanes in order to generate the boundary of a BSP tree. Each subhyperplane has a hyperplane that embeds it, and there may be many subhyperplanes in the tree with exactly equal hyperplanes. In this case, I would actually use the hyperplanes as keys in a map in order to find all subhyperplanes that lie in the same hyperplane. In regard to fuzzy comparisons, the {{Vector?D}} classes allow this functionality through an overloaded {{equals}} method that takes a {{DoublePrecisionContext}}. We have not implemented this in any of the hyperplane classes since it hasn't seemed to be needed at this point. It's also a bit complicated by the fact that the hyperplane classes include their own {{DoublePrecisionContext}} so there isn't an immediately obvious method overload opportunity, not to mention the issue of which hyperplane's precision context to use when performing the comparison. > Plane API cleanup > ----------------- > > Key: GEOMETRY-29 > URL: https://issues.apache.org/jira/browse/GEOMETRY-29 > Project: Apache Commons Geometry > Issue Type: Improvement > Reporter: Matt Juntunen > Priority: Major > > The following changes should be made to the > {{o.a.c.g.euclidean.threed.Plane}} class: > * make the class immutable > * use well-named factory methods instead of constructor overloads > * provide a factory method to create a plane with user-supplied {{u}} and > {{v}} axes. The current implementation allows the normal to be provided but > chooses its own planar axes (see {{setFrame}}). > * add {{equals}}, {{hashCode}}, and {{toString}} methods. -- This message was sent by Atlassian JIRA (v7.6.3#76005)