Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(geometry): Adding Geometry Objects (#3)
* feat(2d): More 2D Geometries * Almost Done With All 2D Geometry ... there are just a couple of last things that I need to impelment on Mesh2D. * Finished All 2D Objects I still need to write some tests for them but all fundamental 2D objects are now complete. * Added 1D Objects in 3D Space * Finished 3D Geometries I have been doing tests in Rhino just because it is quicker so I am fairly certain that 80% of the code is working. I will begin writing pure Python tests and (likely) fixing bugs soon. * Bug Fix to Surface Class * Update README.md * More Reliable is_point_inside method * Documenting Fringe Cases * Responding to comments by @mostaphaRoudsari * Found a Better Way to Avoid Mesh Grid Fringe Cases * Cleaning Up Code I realized that one of the methods that I added previously did not do what I thought it did so I have removed it. I also added a method to automatically create a single closed polygon from a shape with a hole. I ran it through several tests in Rhino and it seems to be working well. There aren't any cases I can think of that will not work with the general calculation method and I think I can get it to work for shapes with multiple hole just by having it recurse. * Added the Capability to Have Faces with Holes ... and everything seems to be working well! * Update dev-requirements.txt * Finished Tests for Points * Finished Tests for LineSegment * Added Test for Ray2D * Finished Tests for Rays * More Polygon2D Tests * More Tests for Mesh2D * Decided to Remove the Ability to Override Checks I realized that the overhad for the checks is not that bad and things really get wonky when they can be overridden on the class. * Finished Tests for Polygon2D * Finished All 2D Tests ... and fixed a lot of bugs / poor design decisions that were discovered in the process. * Added Mesh3D Test * Finished Mesh3D Tests * Finished Tests for Plane ... and fixed a few bugs found along the way. * Started Tests for Face3D * More Face3D Tests ... and I added a method to Plane to test for co-planarity within a certain tolerance. * Finished Tests * Added Methods to Test Equivalency of Geometry This is what I think should be used for solving adjacency and it has been optimized for this purpose. * Added method to get sub faces by ratio * Added Methods to Extract Rectangles from Faces * Updated documentation * Small Bug Fix in Plane * Small Bug Fix in Face3D Sub Face Generation * Finished All Methods for Glazing by Ratio * Responded to Comments by @mostaphaRoudsari ... and I realized that I forgot to add in methods last time to split rectangular glazing vertically, which is now added. * All Geometry Objects are Now Immutable This has simplified the code a lot and makes it much easier to communicate how to interact with the ladybug_geomtry API. The only exception to the universal immutability rule is that the colors of mesh objects are set-able. * Added Methods to Tell if a Face is Inside Another * Added methods to generate contoured fins (aka. louvers) * Added Object for Polyface This should give us everything that we need to build energy model geometry in the way that we do now with honeybee legacy. There are just a few small methods left that I want to implement on the Polyface3D object to make it consistent with the other objects. * Added Transform Methods to Polyface * Added Volume Property to Polyface * Adding More Polyface tests * Realized an Important Case that Needs Solving * Polyface now has good checks for solidity * Finished Polyface3D * Fixed a Bug and Added Tests for it * Responding to @mostaphaRoudsari 's comments on _mesh.py * Changed Mesh Grid to Use a Scaled Polygon * Added a Property to Get Upper Left Counter Clockwise Vertices .. needed for export to EnergyPlus / OpenStudio * Using try/except instead of if * Update ladybug_geometry/_mesh.py Co-Authored-By: Mostapha Sadeghipour Roudsari <sadeghipour@gmail.com> * Bug Fix for Python Float Tolerance Cases * Took Out scale_world_origin method ... and I just extended the scale() method. * Adding __init__ and __repr__ to Base Classes * Removing __slots__ from Base Classes I relaized this creates issues * Typo Fix * Update README.md
- Loading branch information