Editing User:3bhady

From BRL-CAD

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 11: Line 11:
 
# Tomorrow I'll take a look at SVGNest and compare how they implement the NFP with what the paper suggests. Today I'm studying for my final exams in my University tomorrow.
 
# Tomorrow I'll take a look at SVGNest and compare how they implement the NFP with what the paper suggests. Today I'm studying for my final exams in my University tomorrow.
 
# Finished Reading the required papers and took notes to start summarizing them.
 
# Finished Reading the required papers and took notes to start summarizing them.
= Coding Period =
+
== Coding Period ==
== May 27-June 15 ==
+
=== May 27-June 15 ===
=== Required ===
+
==== Required ====
 
Final Exams period.
 
Final Exams period.
 
* Delivering summary on the related papers. (O)
 
* Delivering summary on the related papers. (O)
 
* Investigating SVGNest JS library (structure, utilities).
 
* Investigating SVGNest JS library (structure, utilities).
=== Activity Log For This Period ===
+
==== Activity Log For This Period ====
 
From 27/5 to 2/6 is my final exams week so my productivity won't be much and I'm making up for this time in the weekends and by working extra hours after 2/6. Deliverables won't be affected as I'm following the timeline for each period.
 
From 27/5 to 2/6 is my final exams week so my productivity won't be much and I'm making up for this time in the weekends and by working extra hours after 2/6. Deliverables won't be affected as I'm following the timeline for each period.
 
# Investigated SVGNest C and JS code to find out what has changed between these two projects and if I can make use of the C implementation.
 
# Investigated SVGNest C and JS code to find out what has changed between these two projects and if I can make use of the C implementation.
Line 34: Line 34:
 
# Forked the SVGNest repo and commenting on it [https://github.com/3bhady/svgnest here]
 
# Forked the SVGNest repo and commenting on it [https://github.com/3bhady/svgnest here]
  
== June 15-June 20 ==
+
=== June 15-June 20 ===
=== Required ===
+
==== Required ====
 
* Extract useful functions from SVGnest JS.
 
* Extract useful functions from SVGnest JS.
 
* Write skeleton for unit tests for extracted functions.(T)
 
* Write skeleton for unit tests for extracted functions.(T)
=== Activity Log For This Period ===
+
==== Activity Log For This Period ====
* NFP (No Fit Polygon) is the core of the polygon packing algorithm but it makes more sense to start with implementing it now and port helper functions along the way to understand the functions being ported more as Their use appears instead of porting helper functions by themselves.
+
* NFP is the core of the polygon packing algorithm but it makes more sense to start with implementing it now and port helper functions along the way to understand the functions being ported more as Their use appears instead of porting helper functions by themselves.
 
# Creating the basics of the NFP function.
 
# Creating the basics of the NFP function.
 
# Continuing porting NFP function and useful functions which are required for it to run.
 
# Continuing porting NFP function and useful functions which are required for it to run.
 
# Calculated the touching edges for polygons to help creating the NFP.
 
# Calculated the touching edges for polygons to help creating the NFP.
# Generated the translation vectors for orbiting shape to slide alongside the stationary shape.
 
  
== June 20 -June 28 ==
+
=== June 20 -June 28 ===
=== Required ===
+
==== Required ====
 
* Write unit test for the geometry functions to be used.(T)
 
* Write unit test for the geometry functions to be used.(T)
 
* Implement the geometry utility functions.(C)
 
* Implement the geometry utility functions.(C)
=== Activity Log For This Period ===
+
==== Activity Log For This Period ====
* All the following functions are utility functions used in the NFP function which is the core of the packing algorithm this was supposed to be implemented next month but it makes sense to start with it and porting each helper function along the way.
+
N/A
# Started rejecting the translation vectors which will cause intersection.
+
=== June 28-July 4 ===
# Wrote a skeleton code for a function to calculate the maximum distance a polygon can slide in a given direction without intersecting with another polygon.
+
==== Required ====  
# Created a function that takes two edges and finds the maximum distance one edge can travel in a given direction without intersection.
 
# Found each possible arrangement for the edges to be in without intersecting with each other.
 
# Created a function to calculate the maximum distance a vertex can travel in a given direction.
 
# Finished calculating the maximum sliding distance for each translation vector.
 
# Day off studying for a job interview wish me luck.
 
 
 
== June 28-July 4 ==
 
=== Required ===
 
 
* Writing unit test skeleton for placement algorithm.(T)
 
* Writing unit test skeleton for placement algorithm.(T)
=== Activity Log For This Period ===
+
==== Activity Log For This Period ====
# Fixing the flow in the NFP function as it wasn't working correctly.
+
N/A
# Development laptop got stuck in a login loop after installing CUDA so I spent the whole day trying to fix it.
+
=== July 4- July 21 ===
# Continued modifying and fixing the NFP function.
+
==== Required ====  
# Debugging and fixing issues with the placement algorithm. ( the NFP had very large values )
 
 
 
== July 4- July 21 ==
 
=== Required ===
 
 
* Implementing unit testing for placement algorithm.(T)
 
* Implementing unit testing for placement algorithm.(T)
 
* Implementing placement algorithm.(C)
 
* Implementing placement algorithm.(C)
 
* Parallelizing the placement algorithm.(C)
 
* Parallelizing the placement algorithm.(C)
=== Activity Log For This Period ===
+
==== Activity Log For This Period ====
* Taking two days off to finish my graduation project. (I've already started working on this period's work 2 weeks ago).
+
N/A
* Debugging and tracing the placement algorithm.
+
=== July 21-July 26 ===
* Fixing issues with the Point and Pointf in the placement algorithm as what everything should be.
+
==== Required ====  
* Fixed issues with trimming the vectors as it wasn't working correctly.
 
* Designed test case for the placement algorithm.
 
* Continued working on the placement algorithm and fixed issues with sliding as it wasn't moving correctly.
 
* Solved couple of issues as it was producing some garbage values.
 
* Looked for a way to visualize it's output to understand the results better.
 
* Fixed multiple issues where the variables names were wrong like replacing next_A_index with prev_A_index which were causing wrong results.
 
* Fixed issue with the starting point.
 
* Fixed issues with polygon slide distance.
 
* Fixed issues with segment distance.
 
* Created NFP for convex shapes.
 
* Working on moving the objects to a point on the NFP.
 
* Finished moving objects and now they are packed close to each other.
 
* Found an interesting method which takes a simpler and much faster approach to the NFP problem but needs at least one of the shapes to be convex which fits perfectly to our problem as we're starting with a convex hull for each shape.
 
 
 
== July 21-July 26 ==
 
=== Required ===  
 
 
* Design skeleton code for unit testing optimization algorithm.(T)
 
* Design skeleton code for unit testing optimization algorithm.(T)
=== Activity Log For This Period ===
+
==== Activity Log For This Period ====
* Continued working on the placement algorithm as I took a new simpler approach and read multiple papers with simpler and faster approaches than the orbiting polygon with sliding edges presented in the SVGNest library.
+
N/A
# [http://www.diva-portal.org/smash/get/diva2:699750/FULLTEXT01.pdf "JONAS LINDMARK Thesis at CSC"]
+
=== July 26-Aug 9 ===
# "A comprehensive and robust procedure for obtaining the nofit polygon using Minkowski sums" Which I thank [https://www.researchgate.net/profile/Julia_Bennell JULIA A BENNELL] for providing me with the full text when I requested it.
+
==== Required ====  
# Fixed the IFP with orbital approach.
 
 
 
== July 26-Aug 9 ==
 
=== Required ===  
 
 
* Implementing unit testing for optimization algorithm. (T)
 
* Implementing unit testing for optimization algorithm. (T)
 
* Implementing optimization algorithm.(C)
 
* Implementing optimization algorithm.(C)
 
* Determining threshold for when to stop optimizing.
 
* Determining threshold for when to stop optimizing.
 
* Adding needed buttons in GUI for allowing user to specify threshold for stopping optimization. (C)
 
* Adding needed buttons in GUI for allowing user to specify threshold for stopping optimization. (C)
=== Activity Log For This Period ===
+
==== Activity Log For This Period ====
 
N/A
 
N/A
== Aug 9-Aug 19 ==
+
=== Aug 9-Aug 19 ===
=== Required ===
+
==== Required ====  
 
* Testing the whole auto-arranging module against SVGnest library and fixing bugs if the outputs are not identical. (T)
 
* Testing the whole auto-arranging module against SVGnest library and fixing bugs if the outputs are not identical. (T)
 
* Testing the output through the perl GUI. (T)
 
* Testing the output through the perl GUI. (T)
=== Activity Log For This Period ===
+
==== Activity Log For This Period ====
 
N/A
 
N/A
  
Line 121: Line 88:
 
* Tests are marked as (T).
 
* Tests are marked as (T).
 
* Others are marked as (O).
 
* Others are marked as (O).
 
Code and comments on existing code can be found on my forks [https://github.com/3bhady/Slic3r Slic3r] [https://github.com/3bhady/SVGnest SVGNest].
 

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)