# Add ability to construct centered boxes

XMLWordPrintable

## Details

• Type: Improvement
• Status: Done
• Resolution: Done
• Fix Version/s: None
• Component/s:
• Labels:
None
• Story Points:
2
• Sprint:
AP F18-1
• Team:

## Description

As discussed on GitHub, it would be useful if Box2I and Box2D had methods for creating boxes centered on a particular (fractional) point.

Given that the Box* classes cannot afford more constructors, and we still don't have a good way to discover functions, this capability is best implemented as static factory methods:

 Box2I Box2I::makeCenteredBox(Point2D const& center, Box2I::Extent const& size); Box2D Box2D::makeCenteredBox(Point2D const& center, Box2D::Extent const& size); 

I do not plan to add a Box2I::makeCenteredBox(Point2I, Extent) method: I'm worried that it might lead to confusion with (Point2D, Extent), and as Jim Bosch pointed out it's not clear what the best behavior is for even-sized boxes.

The desired functionality is already present in the implementation for Exposure::getCutout, so this work is just a matter of factoring the code, writing new unit tests, and being very careful about the distinctions between Box2I and Box2D.

## Activity

Hide
Krzysztof Findeisen added a comment -

Hi Jim Bosch, could you review these changes and let me know if everything fits normal Box usage? Thanks!

Show
Krzysztof Findeisen added a comment - Hi Jim Bosch , could you review these changes and let me know if everything fits normal Box usage? Thanks!
Hide
Jim Bosch added a comment -

Looks good - thanks for fixing the documentation on the existing constructors.

I think it might be best to drop the invert arg or change its defaults - more on that in the PRs.

Show
Jim Bosch added a comment - Looks good - thanks for fixing the documentation on the existing constructors. I think it might be best to drop the invert arg or change its defaults - more on that in the PRs.
Hide
Krzysztof Findeisen added a comment -

I'll wait for the re-adoption of RFC-324, and make the interface for makeCenteredBox match whatever is agreed on for the constructors.

Show
Krzysztof Findeisen added a comment - I'll wait for the re-adoption of RFC-324 , and make the interface for makeCenteredBox match whatever is agreed on for the constructors.
Hide
Krzysztof Findeisen added a comment -

Per the resolution of RFC-324, makeCenteredBox will not have an invert parameter, and will silently return the empty box when passed negative dimensions.

Show
Krzysztof Findeisen added a comment - Per the resolution of RFC-324 , makeCenteredBox will not have an invert parameter, and will silently return the empty box when passed negative dimensions.

## People

• Assignee:
Krzysztof Findeisen
Reporter:
Krzysztof Findeisen
Reviewers:
Jim Bosch
Watchers:
Jim Bosch, Krzysztof Findeisen, Russell Owen