https://wiki.octave.org/wiki/api.php?action=feedcontributions&user=PiyushJain&feedformat=atomOctave - User contributions [en]2022-10-04T22:21:23ZUser contributionsMediaWiki 1.35.6https://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10459Geometry package:GSoC172017-08-02T18:00:09Z<p>PiyushJain: /* Syncing matGeom and geometry */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
3. Improve the already implemented scripts ispolyccw, poly2ccw, poly2cw, polyjoin, polysplit, and ensure that they are compatible with MATLAB.<br />
4. Devise an automated way to ensure that the functions which are in geometry package repo are synced with those in [https://github.com/kakila/matGeom matGeom].<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
===Details of proposed work===<br />
<br />
This section describes the overall idea of implementation and the workplan for the implementation of the new algorithm[http://www4.ujaen.es/~fmartin/bool_op.html algorithm] which is based on the [http://www.cs.ucr.edu/~vbz/cs230papers/martinez_boolean.pdf paper] by F. Martínez, A.J. Rueda, F.R. Feito.<br />
* '''Basic structure of the program for boolean operations :'''<br />
<br />
1. Take the polygons in standard input form of Octave (NaN separated or Cell arrays) and convert it into the required input format of the algorithm (the way it is implemeted). This part will be handled by m script.<br />
<br />
2. Implement .cc file which will return the resultant polygons. This will also contain input validation. <br />
<br />
3. oct-interface will be created for this file.<br />
<br />
4. The output of the cpp code will be passed onto the m script which will handle the necessary processings before returning it as final result.<br />
<br />
* '''Expected Challenges : '''<br />
<br />
1. Handling '''overlapping edges''' seems to be a bit tedious with this algorithm. It will surely be a challenge.<br />
<br />
===Syncing matGeom and geometry===<br />
The goal is to devise a somewhat automated way to ensure that the functions which are there in geometry are synced with those in matGeom without manually checking the edits.<br />
<br />
To achieve this, first a workaround is implemented on a dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom]. Its master branch is matGeom (dummy) and there is another branch (named geometry) is created which contains geometry package (dummy).<br />
To test the entire procedure, go to the dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom] , pull both branches in different folders, say "dummyMatGeom" for master branch and "dummyGeom" for geometry branch.<br />
Then follow the given steps.<br />
<br />
1. go to the local dummyMatGeom directory (named dummyMatGeom) and pull upstream (dummy matGeom) using these commands :<br />
- git fetch origin master<br />
- git reset --hard FETCH_HEAD<br />
- git clean -df<br />
This will ensure that your local repo is exactly same as your current version of matGeom. Here, we are doing hard reset because when we apply folder structure change script (next step), it might have changed its structure.<br />
<br />
2. run the following octave command.<br />
- rmdir("dummyGeom/deprecated","s");<br />
- copyfile("dummyMatGeom/matGeom/deprecated","dummyGeom/");<br />
- copyfile("dummyMatGeom/matGeom", "dummyGeom/");<br />
- rmdir("dummyGeom/inst","s");<br />
- rename("dummyGeom/matGeom","dummyGeom/inst"); <br />
This will simply replace the scripts of geometry with those of matGeom. Don't worry, we are not going to push this whole matGeom script folder onto our geometry repo.We'll now commit and push only those scripts which have been modified and the rest of scripts will remain as it is, in the remote repository(geometry branch).<br />
<br />
3. Now, go to local geometry directory (dummyGeom) and run following command.<br />
- git diff --name-only --diff-filter=M | xargs git add<br />
- git commit -m "synced with matGeom"<br />
- git push origin master:geometry<br />
This will sync the scripts which were already present in the geometry branch with those of the matGeom branch without disturbing other scripts. <br />
<br />
4. Now, update your local geometry repo by resetting it from the remote geometry branch.<br />
- git fetch origin geometry<br />
- git reset --hard origin/geometry<br />
<br />
<br />
<br />
* '''Challenges : '''<br />
Clearly, the above procedure will only sync the script of the function, not it's tests and demo, which are in separate folders in a Matlab package structure. Even if we try to concatenate their corresponding test/demo scripts with the function scripts (as it is in an octave package structure), there will be discrepancies because the notion or writing tests for octave and matlab packages are quite different. The way octave allows tests to work is unique to octave as explained [http://wiki.octave.org/FAQ#What_features_are_unique_to_Octave.3F here]. SO, we can't simply concatenate the Matlab test scripts with the functions.<br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion''' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10458Geometry package:GSoC172017-08-02T16:57:49Z<p>PiyushJain: /* Syncing matGeom and geometry */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
3. Improve the already implemented scripts ispolyccw, poly2ccw, poly2cw, polyjoin, polysplit, and ensure that they are compatible with MATLAB.<br />
4. Devise an automated way to ensure that the functions which are in geometry package repo are synced with those in [https://github.com/kakila/matGeom matGeom].<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
===Details of proposed work===<br />
<br />
This section describes the overall idea of implementation and the workplan for the implementation of the new algorithm[http://www4.ujaen.es/~fmartin/bool_op.html algorithm] which is based on the [http://www.cs.ucr.edu/~vbz/cs230papers/martinez_boolean.pdf paper] by F. Martínez, A.J. Rueda, F.R. Feito.<br />
* '''Basic structure of the program for boolean operations :'''<br />
<br />
1. Take the polygons in standard input form of Octave (NaN separated or Cell arrays) and convert it into the required input format of the algorithm (the way it is implemeted). This part will be handled by m script.<br />
<br />
2. Implement .cc file which will return the resultant polygons. This will also contain input validation. <br />
<br />
3. oct-interface will be created for this file.<br />
<br />
4. The output of the cpp code will be passed onto the m script which will handle the necessary processings before returning it as final result.<br />
<br />
* '''Expected Challenges : '''<br />
<br />
1. Handling '''overlapping edges''' seems to be a bit tedious with this algorithm. It will surely be a challenge.<br />
<br />
===Syncing matGeom and geometry===<br />
The goal is to devise a somewhat automated way to ensure that the functions which are there in geometry are synced with those in matGeom without manually checking the edits.<br />
<br />
To achieve this, first a workaround is implemented on a dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom]. Its master branch is matGeom (dummy) and there is another branch (named geometry) is created which contains geometry package (dummy).<br />
To test the entire procedure, go to the dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom] , pull both branches in different folders, say "dummyMatGeom" for master branch and "dummyGeom" for geometry branch.<br />
Then follow the given steps.<br />
<br />
1. go to the local dummyMatGeom directory (named dummyMatGeom) and pull upstream (dummy matGeom) using these commands :<br />
- git fetch origin master<br />
- git reset --hard FETCH_HEAD<br />
- git clean -df<br />
This will ensure that your local repo is exactly same as your current version of matGeom. Here, we are doing hard reset because when we apply folder structure change script (next step), it might have changed its structure.<br />
<br />
2. run the following octave command.<br />
- rmdir("dummyGeom/deprecated","s");<br />
- movefile("dummyMatGeom/matGeom/deprecated","dummyGeom/");<br />
- movefile("dummyMatGeom/matGeom", "dummyGeom/");<br />
- rmdir("dummyGeom/inst","s");<br />
- rename("dummyGeom/matGeom","dummyGeom/inst"); <br />
This will simply replace the scripts of geometry with those of matGeom. Don't worry, we are not going to push this whole matGeom script folder onto our geometry repo.We'll now commit and push only those scripts which have been modified and the rest of scripts will remain as it is, in the remote repository(geometry branch).<br />
<br />
3. Now, go to local geometry directory (dummyGeom) and run following command.<br />
- git diff --name-only --diff-filter=M | xargs git add<br />
- git commit -m "synced with matGeom"<br />
- git push origin master:geometry<br />
This will sync the scripts which were already present in the geometry branch with those of the matGeom branch without disturbing other scripts. <br />
<br />
4. Now, update your local geometry repo by resetting it from the remote geometry branch.<br />
- git fetch origin geometry<br />
- git reset --hard origin/geometry<br />
<br />
<br />
<br />
* '''Challenges : '''<br />
Clearly, the above procedure will only sync the script of the function, not it's tests and demo, which are in separate folders in a Matlab package structure. Even if we try to concatenate their corresponding test/demo scripts with the function scripts (as it is in an octave package structure), there will be discrepancies because the notion or writing tests for octave and matlab packages are quite different. The way octave allows tests to work is unique to octave as explained [http://wiki.octave.org/FAQ#What_features_are_unique_to_Octave.3F here]. SO, we can't simply concatenate the Matlab test scripts with the functions.<br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion''' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10457Geometry package:GSoC172017-08-02T16:42:37Z<p>PiyushJain: /* Syncing matGeom and geometry */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
3. Improve the already implemented scripts ispolyccw, poly2ccw, poly2cw, polyjoin, polysplit, and ensure that they are compatible with MATLAB.<br />
4. Devise an automated way to ensure that the functions which are in geometry package repo are synced with those in [https://github.com/kakila/matGeom matGeom].<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
===Details of proposed work===<br />
<br />
This section describes the overall idea of implementation and the workplan for the implementation of the new algorithm[http://www4.ujaen.es/~fmartin/bool_op.html algorithm] which is based on the [http://www.cs.ucr.edu/~vbz/cs230papers/martinez_boolean.pdf paper] by F. Martínez, A.J. Rueda, F.R. Feito.<br />
* '''Basic structure of the program for boolean operations :'''<br />
<br />
1. Take the polygons in standard input form of Octave (NaN separated or Cell arrays) and convert it into the required input format of the algorithm (the way it is implemeted). This part will be handled by m script.<br />
<br />
2. Implement .cc file which will return the resultant polygons. This will also contain input validation. <br />
<br />
3. oct-interface will be created for this file.<br />
<br />
4. The output of the cpp code will be passed onto the m script which will handle the necessary processings before returning it as final result.<br />
<br />
* '''Expected Challenges : '''<br />
<br />
1. Handling '''overlapping edges''' seems to be a bit tedious with this algorithm. It will surely be a challenge.<br />
<br />
===Syncing matGeom and geometry===<br />
The goal is to devise a somewhat automated way to ensure that the functions which are there in geometry are synced with those in matGeom without manually checking the edits.<br />
<br />
To achieve this, first a workaround is implemented on a dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom]. Its master branch is matGeom (dummy) and there is another branch (named geometry) is created which contains geometry package (dummy).<br />
To test the entire procedure, go to the dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom] , pull both branches in different folders, say "dummyMatGeom" for master branch and "dummyGeom" for geometry branch.<br />
Then follow the given steps.<br />
<br />
1. go to the local dummyMatGeom directory (named dummyMatGeom) and pull upstream (dummy matGeom) using these commands :<br />
- git fetch origin master<br />
- git reset --hard FETCH_HEAD<br />
- git clean -df<br />
This will ensure that your local repo is exactly same as your current version of matGeom. Here, we are doing hard reset because when we apply folder structure change script (next step), it might have changed its structure.<br />
<br />
2. run the following octave command.<br />
- rmdir("dummyGeom/deprecated","s");<br />
- movefile("dummyMatGeom/matGeom/deprecated","dummyGeom/");<br />
- movefile("dummyMatGeom/matGeom", "dummyGeom/");<br />
- rmdir("dummyGeom/inst","s");<br />
- rename("dummyGeom/matGeom","dummyGeom/inst"); <br />
This will simply replace the scripts of geometry with those of matGeom. Don't worry, we are not going to push this whole matGeom script folder onto our geometry repo.We'll now commit and push only those scripts which have been modified and the rest of scripts will remain as it is, in the remote repository(geometry branch).<br />
<br />
3. Now, go to local geometry directory (dummyGeom) and run following command.<br />
- git diff --name-only --diff-filter=M | xargs git add<br />
- git commit -m "synced with matGeom"<br />
- git push origin master:geometry<br />
This will sync the scripts which were already present in the geometry branch with those of the matGeom branch without disturbing other scripts. <br />
<br />
4. Now, update your local geometry repo by resetting it from the remote geometry branch.<br />
- git reset --hard origin/geometry<br />
<br />
<br />
<br />
* '''Challenges : '''<br />
Clearly, the above procedure will only sync the script of the function, not it's tests and demo, which are in separate folders in a Matlab package structure. Even if we try to concatenate their corresponding test/demo scripts with the function scripts (as it is in an octave package structure), there will be discrepancies because the notion or writing tests for octave and matlab packages are quite different. The way octave allows tests to work is unique to octave as explained [http://wiki.octave.org/FAQ#What_features_are_unique_to_Octave.3F here]. SO, we can't simply concatenate the Matlab test scripts with the functions.<br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion''' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10456Geometry package:GSoC172017-08-02T16:41:54Z<p>PiyushJain: /* Syncing matGeom and geometry */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
3. Improve the already implemented scripts ispolyccw, poly2ccw, poly2cw, polyjoin, polysplit, and ensure that they are compatible with MATLAB.<br />
4. Devise an automated way to ensure that the functions which are in geometry package repo are synced with those in [https://github.com/kakila/matGeom matGeom].<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
===Details of proposed work===<br />
<br />
This section describes the overall idea of implementation and the workplan for the implementation of the new algorithm[http://www4.ujaen.es/~fmartin/bool_op.html algorithm] which is based on the [http://www.cs.ucr.edu/~vbz/cs230papers/martinez_boolean.pdf paper] by F. Martínez, A.J. Rueda, F.R. Feito.<br />
* '''Basic structure of the program for boolean operations :'''<br />
<br />
1. Take the polygons in standard input form of Octave (NaN separated or Cell arrays) and convert it into the required input format of the algorithm (the way it is implemeted). This part will be handled by m script.<br />
<br />
2. Implement .cc file which will return the resultant polygons. This will also contain input validation. <br />
<br />
3. oct-interface will be created for this file.<br />
<br />
4. The output of the cpp code will be passed onto the m script which will handle the necessary processings before returning it as final result.<br />
<br />
* '''Expected Challenges : '''<br />
<br />
1. Handling '''overlapping edges''' seems to be a bit tedious with this algorithm. It will surely be a challenge.<br />
<br />
===Syncing matGeom and geometry===<br />
The goal is to devise a somewhat automated way to ensure that the functions which are there in geometry are synced with those in matGeom without manually checking the edits.<br />
<br />
To achieve this, first a workaround is implemented on a dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom]. Its master branch is matGeom (dummy) and there is another branch (named geometry) is created which contains geometry package (dummy).<br />
To test the entire procedure, go to the dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom] , pull both branches in different folders, say "dummyMatGeom" for master branch and "dummyGeom" for geometry branch.<br />
Then follow the given steps.<br />
<br />
1. go to the local dummyMatGeom directory (named dummyMatGeom) and pull upstream (dummy matGeom) using these commands :<br />
- git fetch origin master<br />
- git reset --hard FETCH_HEAD<br />
- git clean -df<br />
This will ensure that your local repo is exactly same as your current version of matGeom. Here, we are doing hard reset because when we apply folder structure change script (next step), it might have changed its structure.<br />
<br />
2. run the following octave command.<br />
- rmdir("dummyGeom/deprecated","s");<br />
- movefile("dummyMatGeom/matGeom/deprecated","dummyGeom/");<br />
- movefile("dummyMatGeom/matGeom", "dummyGeom/");<br />
- rmdir("dummyGeom/inst","s");<br />
- rename("dummyGeom/matGeom","dummyGeom/inst"); <br />
This will simply replace the scripts of geometry with those of matGeom. Don't worry, we are not going to push this whole matGeom script folder onto our geometry repo.We'll now commit and push only those scripts which have been modified and the rest of scripts will remain as it is, in the remote repository(geometry branch).<br />
<br />
3. Now, go to local geometry directory (dummyGeom) and run following command.<br />
- git diff --name-only --diff-filter=M | xargs git add<br />
- git commit -m "synced with matGeom"<br />
- git push origin master:geometry<br />
This will sync the scripts which were already present in the geometry branch with those of the matGeom branch without disturbing other scripts. <br />
<br />
4. Now, update your local geometry repo by force pulling from the remote branch.<br />
- git reset --hard origin/geometry<br />
<br />
<br />
<br />
* '''Challenges : '''<br />
Clearly, the above procedure will only sync the script of the function, not it's tests and demo, which are in separate folders in a Matlab package structure. Even if we try to concatenate their corresponding test/demo scripts with the function scripts (as it is in an octave package structure), there will be discrepancies because the notion or writing tests for octave and matlab packages are quite different. The way octave allows tests to work is unique to octave as explained [http://wiki.octave.org/FAQ#What_features_are_unique_to_Octave.3F here]. SO, we can't simply concatenate the Matlab test scripts with the functions.<br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion''' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10455Geometry package:GSoC172017-08-01T17:02:34Z<p>PiyushJain: /* Syncing matGeom and geometry */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
3. Improve the already implemented scripts ispolyccw, poly2ccw, poly2cw, polyjoin, polysplit, and ensure that they are compatible with MATLAB.<br />
4. Devise an automated way to ensure that the functions which are in geometry package repo are synced with those in [https://github.com/kakila/matGeom matGeom].<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
===Details of proposed work===<br />
<br />
This section describes the overall idea of implementation and the workplan for the implementation of the new algorithm[http://www4.ujaen.es/~fmartin/bool_op.html algorithm] which is based on the [http://www.cs.ucr.edu/~vbz/cs230papers/martinez_boolean.pdf paper] by F. Martínez, A.J. Rueda, F.R. Feito.<br />
* '''Basic structure of the program for boolean operations :'''<br />
<br />
1. Take the polygons in standard input form of Octave (NaN separated or Cell arrays) and convert it into the required input format of the algorithm (the way it is implemeted). This part will be handled by m script.<br />
<br />
2. Implement .cc file which will return the resultant polygons. This will also contain input validation. <br />
<br />
3. oct-interface will be created for this file.<br />
<br />
4. The output of the cpp code will be passed onto the m script which will handle the necessary processings before returning it as final result.<br />
<br />
* '''Expected Challenges : '''<br />
<br />
1. Handling '''overlapping edges''' seems to be a bit tedious with this algorithm. It will surely be a challenge.<br />
<br />
===Syncing matGeom and geometry===<br />
The goal is to devise a somewhat automated way to ensure that the functions which are there in geometry are synced with those in matGeom without manually checking the edits.<br />
<br />
To achieve this, first a workaround is implemented on a dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom]. Its master branch is matGeom (dummy) and there is another branch (named geometry) is created which contains geometry package (dummy).<br />
To test the entire procedure, go to the dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom] , pull both branches in different folders, say "dummyMatGeom" for master branch and "dummyGeom" for geometry branch.<br />
Then follow the given steps.<br />
<br />
1. go to the local dummyMatGeom directory (named dummyMatGeom) and pull upstream (dummy matGeom) using these commands :<br />
- git fetch origin master<br />
- git reset --hard FETCH_HEAD<br />
- git clean -df<br />
This will ensure that your local repo is exactly same as your current version of matGeom. Here, we are doing hard reset because when we apply folder structure change script (next step), it might have changed its structure.<br />
<br />
2. run the following octave command.<br />
- rmdir("dummyGeom/deprecated","s");<br />
- movefile("dummyMatGeom/matGeom/deprecated","dummyGeom/");<br />
- movefile("dummyMatGeom/matGeom", "dummyGeom/");<br />
- rmdir("dummyGeom/inst","s");<br />
- rename("dummyGeom/matGeom","dummyGeom/inst"); <br />
This will simply replace the scripts of geometry with those of matGeom. Don't worry, we are not going to push this whole matGeom script folder onto our geometry repo.We'll now commit and push only those scripts which have been modified and the rest of scripts will remain as it is, in the remote repository(geometry branch).<br />
<br />
3. Now, go to local geometry directory (dummyGeom) and run following command.<br />
- git diff --name-only --diff-filter=M | xargs git add<br />
- git commit -m "synced with matGeom"<br />
- git push origin master:geometry<br />
This will sync the scripts which were already present in the geometry branch with those of the matGeom branch without disturbing other scripts. <br />
<br />
4. Now, update your local geometry repo by force pulling from the remote branch.<br />
- git pull -f origin master:geometry<br />
<br />
<br />
<br />
* '''Challenges : '''<br />
Clearly, the above procedure will only sync the script of the function, not it's tests and demo, which are in separate folders in a Matlab package structure. Even if we try to concatenate their corresponding test/demo scripts with the function scripts (as it is in an octave package structure), there will be discrepancies because the notion or writing tests for octave and matlab packages are quite different. The way octave allows tests to work is unique to octave as explained [http://wiki.octave.org/FAQ#What_features_are_unique_to_Octave.3F here]. SO, we can't simply concatenate the Matlab test scripts with the functions.<br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion''' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10454Geometry package:GSoC172017-08-01T17:00:50Z<p>PiyushJain: /* Syncing matGeom and geometry */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
3. Improve the already implemented scripts ispolyccw, poly2ccw, poly2cw, polyjoin, polysplit, and ensure that they are compatible with MATLAB.<br />
4. Devise an automated way to ensure that the functions which are in geometry package repo are synced with those in [https://github.com/kakila/matGeom matGeom].<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
===Details of proposed work===<br />
<br />
This section describes the overall idea of implementation and the workplan for the implementation of the new algorithm[http://www4.ujaen.es/~fmartin/bool_op.html algorithm] which is based on the [http://www.cs.ucr.edu/~vbz/cs230papers/martinez_boolean.pdf paper] by F. Martínez, A.J. Rueda, F.R. Feito.<br />
* '''Basic structure of the program for boolean operations :'''<br />
<br />
1. Take the polygons in standard input form of Octave (NaN separated or Cell arrays) and convert it into the required input format of the algorithm (the way it is implemeted). This part will be handled by m script.<br />
<br />
2. Implement .cc file which will return the resultant polygons. This will also contain input validation. <br />
<br />
3. oct-interface will be created for this file.<br />
<br />
4. The output of the cpp code will be passed onto the m script which will handle the necessary processings before returning it as final result.<br />
<br />
* '''Expected Challenges : '''<br />
<br />
1. Handling '''overlapping edges''' seems to be a bit tedious with this algorithm. It will surely be a challenge.<br />
<br />
===Syncing matGeom and geometry===<br />
The goal is to devise a somewhat automated way to ensure that the functions which are there in geometry are synced with those in matGeom without manually checking the edits.<br />
<br />
To achieve this, first a workaround is implemented on a dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom]. Its master branch is matGeom (dummy) and there is another branch (named geometry) is created which contains geometry package (dummy).<br />
To test the entire procedure, go to the dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom] , pull both branches in different folders, say "dummyMatGeom" for master branch and "dummyGeom" for geometry branch.<br />
Then follow the given steps.<br />
1. go to the local dummyMatGeom directory (named dummyMatGeom) and pull upstream (dummy matGeom) using these commands :<br />
- git fetch origin master<br />
- git reset --hard FETCH_HEAD<br />
- git clean -df<br />
This will ensure that your local repo is exactly same as your current version of matGeom. Here, we are doing hard reset because when we apply folder structure change script (next step), it might have changed its structure.<br />
<br />
2. run the following octave command.<br />
- rmdir("dummyGeom/deprecated","s");<br />
- movefile("dummyMatGeom/matGeom/deprecated","dummyGeom/");<br />
- movefile("dummyMatGeom/matGeom", "dummyGeom/");<br />
- rmdir("dummyGeom/inst","s");<br />
- rename("dummyGeom/matGeom","dummyGeom/inst"); <br />
This will simply replace the scripts of geometry with those of matGeom. Don't worry, we are not going to push this whole matGeom script folder onto our geometry repo.We'll now commit and push only those scripts which have been modified and the rest of scripts will remain as it is, in the remote repository(geometry branch).<br />
<br />
3. Now, go to local geometry directory (dummyGeom) and run following command.<br />
- git diff --name-only --diff-filter=M | xargs git add<br />
- git commit -m "synced with matGeom"<br />
- git push origin master:geometry<br />
This will sync the scripts which were already present in the geometry branch with those of the matGeom branch without disturbing other scripts. <br />
<br />
4. Now, update your local geometry repo by force pulling from the remote branch.<br />
- git pull -f origin master:geometry<br />
<br />
<br />
<br />
* '''Challenges : '''<br />
Clearly, the above procedure will only sync the script of the function, not it's tests and demo, which are in separate folders in a Matlab package structure. Even if we try to concatenate their corresponding test/demo scripts with the function scripts (as it is in an octave package structure), there will be discrepancies because the notion or writing tests for octave and matlab packages are quite different. The way octave allows tests to work is unique to octave as explained [http://wiki.octave.org/FAQ#What_features_are_unique_to_Octave.3F here]. SO, we can't simply concatenate the Matlab test scripts with the functions.<br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion''' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10453Geometry package:GSoC172017-08-01T17:00:21Z<p>PiyushJain: /* Syncing matGeom and geometry */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
3. Improve the already implemented scripts ispolyccw, poly2ccw, poly2cw, polyjoin, polysplit, and ensure that they are compatible with MATLAB.<br />
4. Devise an automated way to ensure that the functions which are in geometry package repo are synced with those in [https://github.com/kakila/matGeom matGeom].<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
===Details of proposed work===<br />
<br />
This section describes the overall idea of implementation and the workplan for the implementation of the new algorithm[http://www4.ujaen.es/~fmartin/bool_op.html algorithm] which is based on the [http://www.cs.ucr.edu/~vbz/cs230papers/martinez_boolean.pdf paper] by F. Martínez, A.J. Rueda, F.R. Feito.<br />
* '''Basic structure of the program for boolean operations :'''<br />
<br />
1. Take the polygons in standard input form of Octave (NaN separated or Cell arrays) and convert it into the required input format of the algorithm (the way it is implemeted). This part will be handled by m script.<br />
<br />
2. Implement .cc file which will return the resultant polygons. This will also contain input validation. <br />
<br />
3. oct-interface will be created for this file.<br />
<br />
4. The output of the cpp code will be passed onto the m script which will handle the necessary processings before returning it as final result.<br />
<br />
* '''Expected Challenges : '''<br />
<br />
1. Handling '''overlapping edges''' seems to be a bit tedious with this algorithm. It will surely be a challenge.<br />
<br />
===Syncing matGeom and geometry===<br />
The goal is to devise a somewhat automated way to ensure that the functions which are there in geometry are synced with those in matGeom without manually checking the edits.<br />
<br />
To achieve this, first a workaround is implemented on a dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom]. Its master branch is matGeom (dummy) and there is another branch (named geometry) is created which contains geometry package (dummy).<br />
To test the entire procedure, go to the dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom, pull both branches in different folders, say "dummyMatGeom" for master branch and "dummyGeom" for geometry branch.<br />
Then follow the given steps.<br />
1. go to the local dummyMatGeom directory (named dummyMatGeom) and pull upstream (dummy matGeom) using these commands :<br />
- git fetch origin master<br />
- git reset --hard FETCH_HEAD<br />
- git clean -df<br />
This will ensure that your local repo is exactly same as your current version of matGeom. Here, we are doing hard reset because when we apply folder structure change script (next step), it might have changed its structure.<br />
<br />
2. run the following octave command.<br />
- rmdir("dummyGeom/deprecated","s");<br />
- movefile("dummyMatGeom/matGeom/deprecated","dummyGeom/");<br />
- movefile("dummyMatGeom/matGeom", "dummyGeom/");<br />
- rmdir("dummyGeom/inst","s");<br />
- rename("dummyGeom/matGeom","dummyGeom/inst"); <br />
This will simply replace the scripts of geometry with those of matGeom. Don't worry, we are not going to push this whole matGeom script folder onto our geometry repo.We'll now commit and push only those scripts which have been modified and the rest of scripts will remain as it is, in the remote repository(geometry branch).<br />
<br />
3. Now, go to local geometry directory (dummyGeom) and run following command.<br />
- git diff --name-only --diff-filter=M | xargs git add<br />
- git commit -m "synced with matGeom"<br />
- git push origin master:geometry<br />
This will sync the scripts which were already present in the geometry branch with those of the matGeom branch without disturbing other scripts. <br />
<br />
4. Now, update your local geometry repo by force pulling from the remote branch.<br />
- git pull -f origin master:geometry<br />
<br />
<br />
<br />
* '''Challenges : '''<br />
Clearly, the above procedure will only sync the script of the function, not it's tests and demo, which are in separate folders in a Matlab package structure. Even if we try to concatenate their corresponding test/demo scripts with the function scripts (as it is in an octave package structure), there will be discrepancies because the notion or writing tests for octave and matlab packages are quite different. The way octave allows tests to work is unique to octave as explained [http://wiki.octave.org/FAQ#What_features_are_unique_to_Octave.3F here]. SO, we can't simply concatenate the Matlab test scripts with the functions.<br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion''' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10452Geometry package:GSoC172017-08-01T16:55:48Z<p>PiyushJain: /* Workplan */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
3. Improve the already implemented scripts ispolyccw, poly2ccw, poly2cw, polyjoin, polysplit, and ensure that they are compatible with MATLAB.<br />
4. Devise an automated way to ensure that the functions which are in geometry package repo are synced with those in [https://github.com/kakila/matGeom matGeom].<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
===Details of proposed work===<br />
<br />
This section describes the overall idea of implementation and the workplan for the implementation of the new algorithm[http://www4.ujaen.es/~fmartin/bool_op.html algorithm] which is based on the [http://www.cs.ucr.edu/~vbz/cs230papers/martinez_boolean.pdf paper] by F. Martínez, A.J. Rueda, F.R. Feito.<br />
* '''Basic structure of the program for boolean operations :'''<br />
<br />
1. Take the polygons in standard input form of Octave (NaN separated or Cell arrays) and convert it into the required input format of the algorithm (the way it is implemeted). This part will be handled by m script.<br />
<br />
2. Implement .cc file which will return the resultant polygons. This will also contain input validation. <br />
<br />
3. oct-interface will be created for this file.<br />
<br />
4. The output of the cpp code will be passed onto the m script which will handle the necessary processings before returning it as final result.<br />
<br />
* '''Expected Challenges : '''<br />
<br />
1. Handling '''overlapping edges''' seems to be a bit tedious with this algorithm. It will surely be a challenge.<br />
<br />
===Syncing matGeom and geometry===<br />
The goal is to devise a somewhat automated way to ensure that the functions which are there in geometry are synced with those in matGeom without manually checking the edits.<br />
To achieve this, first a workaround is implemented on a dummy repository [https://github.com/piyush-jain1/dummyMatGeom/ dummyMatGeom]. Its master branch is matGeom (dummy) and there is another branch (named geometry) is created which contains geometry package (dummy). Lets assume that local directory of matGeom is named as dummyMatGeom and local directory of geometry is dummyGeom. Then, follow these steps :<br />
1. go to the local dummyMatGeom directory and pull upstream (dummy matGeom) using these commands :<br />
- git fetch origin master<br />
- git reset --hard FETCH_HEAD<br />
- git clean -df<br />
This will ensure that your local repo is exactly same as your current version of matGeom. Here, we are doing hard reset because when we apply folder structure change script (next step), it might have changed its structure.<br />
<br />
2. run the following octave command.<br />
- rmdir("dummyGeom/deprecated","s");<br />
- movefile("dummyMatGeom/matGeom/deprecated","dummyGeom/");<br />
- movefile("dummyMatGeom/matGeom", "dummyGeom/");<br />
- rmdir("dummyGeom/inst","s");<br />
- rename("dummyGeom/matGeom","dummyGeom/inst"); <br />
This will simply replace the scripts of geometry with those of matGeom. Don't worry, we are not going to push this whole matGeom script folder onto our geometry repo.We'll now commit and push only those scripts which have been modified and the rest of scripts will remain as it is, in the remote repository(geometry branch).<br />
<br />
3. Now, go to local geometry directory (dummyGeom) and run following command.<br />
- git diff --name-only --diff-filter=M | xargs git add<br />
- git commit -m "synced with matGeom"<br />
- git push origin master:geometry<br />
This will sync the scripts which were already present in the geometry branch with those of the matGeom branch without disturbing other scripts. <br />
<br />
4. Now, update your local geometry repo by force pulling from the remote branch.<br />
- git pull -f origin master:geometry<br />
<br />
* '''Challenges : '''<br />
Clearly, the above procedure will only sync the script of the function, not it's tests and demo, which are in separate folders in a Matlab package structure. Even if we try to concatenate their corresponding test/demo scripts with the function scripts (as it is in an octave package structure), there will be discrepancies because the notion or writing tests for octave and matlab packages are quite different. The way octave allows tests to work is unique to octave as explained [http://wiki.octave.org/FAQ#What_features_are_unique_to_Octave.3F here]. SO, we can't simply concatenate the Matlab test scripts with the functions. <br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion''' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10451Geometry package:GSoC172017-08-01T16:17:32Z<p>PiyushJain: /* Expectations */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
3. Improve the already implemented scripts ispolyccw, poly2ccw, poly2cw, polyjoin, polysplit, and ensure that they are compatible with MATLAB.<br />
4. Devise an automated way to ensure that the functions which are in geometry package repo are synced with those in [https://github.com/kakila/matGeom matGeom].<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
===Details of proposed work===<br />
<br />
This section describes the overall idea of implementation and the workplan for the implementation of the new algorithm[http://www4.ujaen.es/~fmartin/bool_op.html algorithm] which is based on the [http://www.cs.ucr.edu/~vbz/cs230papers/martinez_boolean.pdf paper] by F. Martínez, A.J. Rueda, F.R. Feito.<br />
* '''Basic structure of the program for boolean operations :'''<br />
<br />
1. Take the polygons in standard input form of Octave (NaN separated or Cell arrays) and convert it into the required input format of the algorithm (the way it is implemeted). This part will be handled by m script.<br />
<br />
2. Implement .cc file which will return the resultant polygons. This will also contain input validation. <br />
<br />
3. oct-interface will be created for this file.<br />
<br />
4. The output of the cpp code will be passed onto the m script which will handle the necessary processings before returning it as final result.<br />
<br />
* '''Expected Challenges : '''<br />
<br />
1. Handling '''overlapping edges''' seems to be a bit tedious with this algorithm. It will surely be a challenge.<br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion''' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10396Geometry package:GSoC172017-06-10T14:28:58Z<p>PiyushJain: /* Details of proposed work */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
===Details of proposed work===<br />
<br />
This section describes the overall idea of implementation and the workplan for the implementation of the new algorithm[http://www4.ujaen.es/~fmartin/bool_op.html algorithm] which is based on the [http://www.cs.ucr.edu/~vbz/cs230papers/martinez_boolean.pdf paper] by F. Martínez, A.J. Rueda, F.R. Feito.<br />
* '''Basic structure of the program for boolean operations :'''<br />
<br />
1. Take the polygons in standard input form of Octave (NaN separated or Cell arrays) and convert it into the required input format of the algorithm (the way it is implemeted). This part will be handled by m script.<br />
<br />
2. Implement .cc file which will return the resultant polygons. This will also contain input validation. <br />
<br />
3. oct-interface will be created for this file.<br />
<br />
4. The output of the cpp code will be passed onto the m script which will handle the necessary processings before returning it as final result.<br />
<br />
* '''Expected Challenges : '''<br />
<br />
1. Handling '''overlapping edges''' seems to be a bit tedious with this algorithm. It will surely be a challenge.<br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion''' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10393Geometry package:GSoC172017-06-07T16:37:07Z<p>PiyushJain: /* Workplan */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
===Details of proposed work===<br />
<br />
This section describes the overall idea of implementation and the workplan for the implementation of the new algorithm[http://www4.ujaen.es/~fmartin/bool_op.html algorithm] which is based on the [http://www.cs.ucr.edu/~vbz/cs230papers/martinez_boolean.pdf paper] by F. Martínez, A.J. Rueda, F.R. Feito.<br />
* '''Basic structure of the program for boolean operations :'''<br />
<br />
1. Take the polygons in standard input form of Octave (NaN separated or Cell arrays) and convert it into the required input format of the algorithm (the way it is implemeted). This part will be handled by m script.<br />
<br />
2. Implement .cc file which will return the resultant polygons. This will also contain input validation. <br />
<br />
3. oct-interface will be created for this file.<br />
<br />
4. The output of the cpp code will be passed onto the m script which will handle the necessary processings before returning it as final result.<br />
<br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion''' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10392Geometry package:GSoC172017-06-07T16:13:13Z<p>PiyushJain: /* Discoveries */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion''' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10391Geometry package:GSoC172017-06-07T16:12:55Z<p>PiyushJain: /* Discoveries */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
<br />
=== Discoveries ===<br />
* On benchmarking the '''polyunion' function in oct interface vs the mex interface, it is found that oct interface had twice as better performance as mex. As it doesn't ensure much advantage, it is not worthed to rewrite the package with oct.<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10380Geometry package:GSoC172017-05-25T18:05:45Z<p>PiyushJain: /* Objectives */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
<br />
3. Other things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
<br />
=== Discoveries ===<br />
* The performance of oct interface was much better than the current mex interface when the '''polygon Union''' (polyUnion) which was written as .oct file was used as benchmark against the current .mex interface to clipper in geometry 3.0.<br />
'''.oct interface''' : Elapsed time is 8.98838e-05 seconds.<br />
'''.mex interface''' : Elapsed time is 0.0109348 seconds.<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10379Geometry package:GSoC172017-05-25T18:04:55Z<p>PiyushJain: /* Objectives */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
1. Implement a set of boolean operations and supporting function for acting on polygons.<br />
2. These include the standard set of potential operations such as union/OR, intersection/AND, difference/subtraction, and exclusiveor/XOR. <br />
3. Otehr things to be implemented are the following functions: polybool, ispolycw, poly2ccw, poly2cw, poly2fv, polyjoin, and polysplit.<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
<br />
=== Discoveries ===<br />
* The performance of oct interface was much better than the current mex interface when the '''polygon Union''' (polyUnion) which was written as .oct file was used as benchmark against the current .mex interface to clipper in geometry 3.0.<br />
'''.oct interface''' : Elapsed time is 8.98838e-05 seconds.<br />
'''.mex interface''' : Elapsed time is 0.0109348 seconds.<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10376Geometry package:GSoC172017-05-24T10:57:31Z<p>PiyushJain: </p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
1. Incorporating Clipper native oct interface instead of mex.<br />
2. Adding new [http://www4.ujaen.es/~fmartin/bool_op.html algorithm] as per the paper of F. Martínez, A.J. Rueda, F.R. Feito<br />
<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
<br />
=== Discoveries ===<br />
* The performance of oct interface was much better than the current mex interface when the '''polygon Union''' (polyUnion) which was written as .oct file was used as benchmark against the current .mex interface to clipper in geometry 3.0.<br />
'''.oct interface''' : Elapsed time is 8.98838e-05 seconds.<br />
'''.mex interface''' : Elapsed time is 0.0109348 seconds.<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10371Geometry package:GSoC172017-05-19T09:46:39Z<p>PiyushJain: </p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
<br />
=== Discoveries ===<br />
* The performance of oct interface was much better than the current mex interface when the '''polygon Union''' (polyUnion) which was written as .oct file was used as benchmark against the current .mex interface to clipper in geometry 3.0.<br />
'''.oct interface''' : Elapsed time is 8.98838e-05 seconds.<br />
'''.mex interface''' : Elapsed time is 0.0109348 seconds.<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10351Geometry package:GSoC172017-05-12T08:29:34Z<p>PiyushJain: /* External links */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
== External links ==<br />
* [https://github.com/piyush-jain1/GSoC17OctaveGeometry Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Geometry_package:GSoC17&diff=10350Geometry package:GSoC172017-05-12T08:28:37Z<p>PiyushJain: /* Boolean operations with polygons */</p>
<hr />
<div>== Boolean operations with polygons ==<br />
<br />
'''Developer''': [[User:PiyushJain | Piyush Jain]]<br />
<br />
'''Mentor''': [[User:KaKiLa | JuanPi Carbajal]]<br />
<br />
=== Objectives ===<br />
<br />
=== Expectations ===<br />
* Mentor:<br />
<br />
* Developer:<br />
<br />
== Workplan ==<br />
<br />
=== Tasks ===<br />
<br />
* Task 0:<br />
Benchmark Piyush polygon union written as an .oct file against the current .mex interface to clipper in geometry 3.0<br />
<br />
If task 0 shows bad performance of mex, then<br />
<br />
1. Clipper native oct interface instead of mex<br />
<br />
if mex is ok<br />
<br />
1. Add F. Martínez, A.J. Rueda, F.R. Feito [http://www4.ujaen.es/~fmartin/bool_op.html algorithm]<br />
<br />
2. Salvage work from [https://bitbucket.org/amr_keleg/octave-geometry last GSoC]<br />
<br />
Maybe<br />
<br />
* Add CGAL interface for poly clipping<br />
<br />
== External links ==<br />
* [https://github.com/ Github repository ] where the work is stored.</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Template:Student_application_template_private&diff=10290Template:Student application template private2017-04-03T10:00:07Z<p>PiyushJain: </p>
<hr />
<div>= Private application template =<br />
This part is only meant to be included in your application at Google Melange. Nobody needs to see your contact details in public!<br />
<br />
== A: An introduction ==<br />
* Please give an idea of the timeframe you plan to be<br />
** working on your project<br />
I will be avalable for the project from 15 May to 5 August 2017.<br />
** able to join our IRC channel<br />
I will be able to join IRC anytime.<br />
* Do you have other commitments for the summer period? Do you plan to take any vacations?<br />
No<br />
* Please describe your written English.<br />
I am quite good in written English.<br />
<br />
== C: Contact ==<br />
* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.<br />
on Nabble.<br />
* Please state the email address you check most regularly.<br />
piyushjain1sa@gmail.com<br />
* Which time zone ''(UTC+-x)'' and country do you live in? ''Will that change over SoC duration (DST changes perhaps)?''<br />
UTC+5.5 (Indian Standard Time). No, it won't change.<br />
* Are there instant messenger networks you regularly visit? Would you like your mentor to contact you there?<br />
<br />
* Please decide if you would like us to have further non-public contact information of you and share them here. ''This is meant as absolutely last resort (total absence from internet or computer havoc for instance). It might, for instance, be a phone number with international code. It will only be shared with the mentor in case of absolute emergency and '''never''' be published!''<br />
<br />
<br />
== S: Self-assessment ==<br />
* Do you give constructive advice? Do you receive advice ? <br />
Yes, I believe in constructive criticism as the best way to improve upon yourself. I give as well as receive advice.<br />
* Are you good at sorting useful criticisms from useless ones?<br />
Yes, I can do that.<br />
<br />
== Y: Your task ==<br />
* Why did you choose your particular task? What do you expect to gain from working on it?<br />
I am pretty much interested in working on Octave. I have used it and I like it so much. In this task, there is something which will help me use geometrical skills as well as development skills. That''s why I have chosen this project.<br />
<br />
[[Category:Applicants]]</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Template:Student_application_template_private&diff=10289Template:Student application template private2017-04-03T09:59:44Z<p>PiyushJain: </p>
<hr />
<div>= Private application template =<br />
This part is only meant to be included in your application at Google Melange. Nobody needs to see your contact details in public!<br />
<br />
== A: An introduction ==<br />
* Please give an idea of the timeframe you plan to be<br />
** working on your project<br />
I will be avalable for the project from 15 May to 5 August 2017.<br />
** able to join our IRC channel<br />
I will be able to join IRC anytime.<br />
* Do you have other commitments for the summer period? Do you plan to take any vacations?<br />
No<br />
* Please describe your written English.<br />
I am quite good in written English.<br />
<br />
== C: Contact ==<br />
* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.<br />
on Nabble.<br />
* Please state the email address you check most regularly.<br />
piyushjain1sa@gmail.com<br />
* Which time zone ''(UTC+-x)'' and country do you live in? ''Will that change over SoC duration (DST changes perhaps)?''<br />
UTC+5.5 (Indian Standard Time). No, it won't change.<br />
* Are there instant messenger networks you regularly visit? Would you like your mentor to contact you there?<br />
<br />
* Please decide if you would like us to have further non-public contact information of you and share them here. ''This is meant as absolutely last resort (total absence from internet or computer havoc for instance). It might, for instance, be a phone number with international code. It will only be shared with the mentor in case of absolute emergency and '''never''' be published!''<br />
Contact Number :<br />
<br />
== S: Self-assessment ==<br />
* Do you give constructive advice? Do you receive advice ? <br />
Yes, I believe in constructive criticism as the best way to improve upon yourself. I give as well as receive advice.<br />
* Are you good at sorting useful criticisms from useless ones?<br />
Yes, I can do that.<br />
<br />
== Y: Your task ==<br />
* Why did you choose your particular task? What do you expect to gain from working on it?<br />
I am pretty much interested in working on Octave. I have used it and I like it so much. In this task, there is something which will help me use geometrical skills as well as development skills. That''s why I have chosen this project.<br />
<br />
[[Category:Applicants]]</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Template:Student_application_template_private&diff=10288Template:Student application template private2017-04-03T09:37:46Z<p>PiyushJain: </p>
<hr />
<div>= Private application template =<br />
This part is only meant to be included in your application at Google Melange. Nobody needs to see your contact details in public!<br />
<br />
== A: An introduction ==<br />
* Please give an idea of the timeframe you plan to be<br />
** working on your project<br />
I will be avalable for the project from 15 May to 5 August 2017.<br />
** able to join our IRC channel<br />
I will be able to join IRC anytime.<br />
* Do you have other commitments for the summer period? Do you plan to take any vacations?<br />
No<br />
* Please describe your written English.<br />
I am quite good in written English.<br />
<br />
== C: Contact ==<br />
* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.<br />
'''piyushjain''' on Nabble.<br />
* Please state the email address you check most regularly.<br />
piyushjain1sa@gmail.com<br />
* Which time zone ''(UTC+-x)'' and country do you live in? ''Will that change over SoC duration (DST changes perhaps)?''<br />
UTC+5.5 (Indian Standard Time). No, it won't change.<br />
* Are there instant messenger networks you regularly visit? Would you like your mentor to contact you there?<br />
Yes, I am active on Whatsapp. (+91-7277114711)<br />
* Please decide if you would like us to have further non-public contact information of you and share them here. ''This is meant as absolutely last resort (total absence from internet or computer havoc for instance). It might, for instance, be a phone number with international code. It will only be shared with the mentor in case of absolute emergency and '''never''' be published!''<br />
Contact Number : +91-7277114711.<br />
<br />
== S: Self-assessment ==<br />
* Do you give constructive advice? Do you receive advice ? <br />
Yes, I believe in constructive criticism as the best way to improve upon yourself. I give as well as receive advice.<br />
* Are you good at sorting useful criticisms from useless ones?<br />
Yes, I can do that.<br />
<br />
== Y: Your task ==<br />
* Why did you choose your particular task? What do you expect to gain from working on it?<br />
I am pretty much interested in working on Octave. I have used it and I like it so much. In this task, there is something which will help me use geometrical skills as well as development skills. That''s why I have chosen this project.<br />
<br />
[[Category:Applicants]]</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=User:PiyushJain&diff=10138User:PiyushJain2017-03-24T14:36:34Z<p>PiyushJain: Created page with "== A: An introduction == * Please describe yourself in three sentences, one of them regarding your current studies. I am a second year undergraduate student in the departme..."</p>
<hr />
<div>== A: An introduction ==<br />
* Please describe yourself in three sentences, one of them regarding your current studies.<br />
I am a second year undergraduate student in the department of Computer Science and Engineering at IIT Guwahati. I am a keen competitive programmer. I have decent experience in development projects as part of course and some competitions. <br />
** Which languages do you speak?<br />
I am totally comfortable in speaking English and Hindi.<br />
** What's your overall background? ''The general field you work in or are studying, e.g. computer science, physics, artificial intelligence, control theory...''<br />
As stated, I am a student of Computer Science and Engineering.<br />
* Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?<br />
GSoC is probably the biggest global program which gives students an opportunity to dive into the world of Open Source. I can't get a better platform to learn and contribute significantly.<br />
<br />
I am pretty sure that working under such great mentors and for such aspired projects, it will be the best learning experience for me.<br />
<br />
As I am planning to give my full summer'17 (almost 3 months) with full effort, I am confident about the positivity of the outcome.<br />
** Please also describe your previous experience with the GSoC, if any. ''Includes any community-bonding, mentor experience or application, not necessarily accepted. We use this subquestion to identify which students are unfamiliar with how the program goes, providing further support. It has no negative impact on your rating!''<br />
No, I have no previous experience with GSoC.<br />
* Why are you choosing Octave?<br />
I got to know about Octave last year only when I started Machine Learning course of Andrew Ng online. Till then , I only knew abut Matlab. But when I first used Octave, I found that it can do almost everything which Matlab can (as far as I have used).I was pretty happy to know that there is such a free open source software, so when I found a project in this year's GSoC on Octave, I was pretty interested to contribute to the project and make Octave more better, as far as I can.<br />
<br />
== C: Contact ==<br />
* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. ''We really want unique nicks. You might want to bold it.''<br />
'''piyushjain''' on Nabble.<br />
* Which time zone do you live in? Will that change over GSoC duration? ''Perhaps DST adjustment or a relocation. Note that both UTC and GMT are not aware of daylight saving time! Please state UTC+x or -x.''<br />
UTC+5.5 (Indian Standard Time)<br />
* Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers? ''Example: I usually code around 9.00 to 18.00 and could also try to start earlier (~7.00) for few days ;-)''<br />
I am comfortable to work between 8:00 and 16:00 and could also extend upto ~18:00 for few days (UTC). <br />
<br />
== E: Coding experience ==<br />
This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic ;-)<br />
* Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.<br />
I am very comfortable with C++. Actually, C++ is the language I use during competitive coding and I prefer it as my first choice always. I have experience with STLs which I use much frequently and I have knowledge about Object-oriented approach. I have implemented some basic advanced [https://git.io/vSUMu data structures] in C++.<br />
<br />
Octave is the language I used during my ML course online. I used to solve all the [https://git.io/vSUgb programming assignments] in Octave which were mostly based on implementing the ML algorithms from scratch. <br />
<br />
I have no experience in OpenGL and Qt.<br />
<br />
* Please describe your experience with other programming languages.<br />
'''Python''' : Python is the language which I used mostly in my [https://git.io/vDYLB development projects]. I have experience of using Python frameworks such as Django and Flask. I also find it interesting for web scrapping and also for [https://git.io/vSUMm data pre-processing] for ML.<br />
<br />
* Please describe your experience with being in a development team. ''Do you have experience working with open source or free projects?''<br />
I have worked in teams for various projects as part of my course and some competitions. Currently, I am working on developing a chat bot. I am also working on two other projects in group this semester. Although, I don't have experience in Open Source projects.<br />
* Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.<br />
I developed a web portal , an online [https://git.io/vDYLB No-dues system] for campus students. It was basically a Python project. I did the whole project myself.<br />
* Please state the commits and patches you already contributed to Octave. ''This question (one of the most important parts by the way) is the only part of your application our wiki admins will edit for you even after the application deadline. Code sometimes speaks louder than many words do.''<br />
I wrote a function for [https://git.io/vSUpN Union of two Polygons] for Octave by using Clipper Library. It was written in C++.<br />
<br />
== F: Feeling fine ==<br />
* Please describe (in short) your experience with the following tools: ''We only use this question to determine where you need guidance, not for rating! We by no means expect you to be familiar with all of these and you'll won't necessarily need them while working with us.''<br />
** IRC and mailing lists<br />
Quite helpful.<br />
** Mercurial or other source code management systems<br />
I use Guthub generally. <br />
** Mediawiki or other wiki software<br />
No experience.<br />
** make, gcc, gdb or other development tools<br />
As I mostly work on Ubuntu, I have used gcc quite often for compiling my source codes. I haven't used make or gdb tools that much.<br />
* What will make you actively stay in our community after this GSoC is over? ''You can also tell us after applications close and we'll happily try to fulfill :-)''<br />
As Octave is quite helpful for beginner ML enthusiasts like me, and due to its simple and easy syntax, I guess I would love to be in touch with Octave as a user and as a contributor.<br />
<br />
== O: Only out of interest ==<br />
* Did you ever hear about Octave before? <br />
Yes, of course.<br />
** If so, when and where? How far have you been involved already?<br />
I heard about it from Mr. Andrew Ng in his Machine learning Introductory course. I am using Octave for almost a year for my basic machine Learning exercises.<br />
<br />
== P: Prerequisites ==<br />
* Please state the operating system you work with.<br />
I mostly work on Ubuntu (i.e. Linux kernel). Although, I have a dual boot system with Windows alongside.<br />
** If you have access to more than one, please state them and the conditions under which you are granted this access.<br />
I have full access to both.<br />
* Please estimate an average time per day you will be able to access<br />
** an internet connection<br />
I can access Internet at any time of the day and for any duration.<br />
** a computer<br />
I can access Computer at any time of the day and for any duration.<br />
** a computer with your progressing work on<br />
I can access it at any time of the day and for any duration.<br />
* Please describe the degree to which you can install new software on computers you have access to.<br />
I have full liberty for that.<br />
<br />
== S: Self-assessment ==<br />
* Please describe how useful criticism looks from your point of view as committing student.<br />
Not being bookish, but my personal experience is that you cannot improve upon yourself until you take any kind of criticism positively and extract the best out of it for yourself.<br />
* How autonomous are you when developing:<br />
** Do you like to discuss changes intensively and not start coding until you know what you want to do?<br />
Yes, as part of my Software Engineering Course, I learnt about the importance of pre-documentation like Software Requirement Specification documents and Design Documents before starting to code for any software. <br />
** Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?<br />
I may opt that approach for some small sub-task of the [project but I won't prefer to do a project if I had to just 'write and test' for the whole project. As I said, I like the approach that I first figure out the whole in-and-out of the requirement of the project and then start coding.<br />
<br />
== Y: Your task ==<br />
* Did you select a task from our list of proposals and ideas?<br />
Yes.<br />
** If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information. ''Please also wiki-link the page for your elaborated proposal here.''<br />
I have chosen the project: [http://wiki.octave.org/Summer_of_Code_Project_Ideas#Mapping_or_Geometry_package:_Implement_boolean_operations_on_polygons Mapping or Geometry package: Implement boolean operations on polygons]. I read about the Clipper Library which is to be used for this project. <br />
* Please provide a rough estimated timeline for your work on the task. ''This should include the GSoC midterms and personal commitments like exams or vacation ("non-coding time"). If possible, include two or three milestones you expect.''<br />
May 15 - May 31 : Go through the previous implementations in depth and read the documentations of the libraries thoroughly. <br />
June 1 - July 15 : Implement all the required functionalities of Boolean operations on Polygons and incorporate it into GNU Octave.<br />
July 18 - August 5 : Final debugging and documentation.<br />
[[Category: Summer of Code]]</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Template:Student_application_template_public&diff=10137Template:Student application template public2017-03-24T14:33:55Z<p>PiyushJain: </p>
<hr />
<div>= Public application template =<br />
This part is answered in public on your '''[[Special:MyPage|user page]]'''. Please copy its source ('''edit''' tab) and then fill. Delete any examples and annotations (''this markup'') afterwards. Same for questions that do not apply to your situation.<br />
<br />
== A: An introduction ==<br />
* Please describe yourself in three sentences, one of them regarding your current studies.<br />
I am a second year undergraduate student in the department of Computer Science and Engineering at IIT Guwahati. I am a keen competitive programmer. I have decent experience in development projects as part of course and some competitions. <br />
** Which languages do you speak?<br />
I am totally comfortable in speaking English and Hindi.<br />
** What's your overall background? ''The general field you work in or are studying, e.g. computer science, physics, artificial intelligence, control theory...''<br />
As stated, I am a student of Computer Science and Engineering.<br />
* Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?<br />
GSoC is probably the biggest global program which gives students an opportunity to dive into the world of Open Source. I can't get a better platform to learn and contribute significantly.<br />
<br />
I am pretty sure that working under such great mentors and for such aspired projects, it will be the best learning experience for me.<br />
<br />
As I am planning to give my full summer'17 (almost 3 months) with full effort, I am confident about the positivity of the outcome.<br />
** Please also describe your previous experience with the GSoC, if any. ''Includes any community-bonding, mentor experience or application, not necessarily accepted. We use this subquestion to identify which students are unfamiliar with how the program goes, providing further support. It has no negative impact on your rating!''<br />
No, I have no previous experience with GSoC.<br />
* Why are you choosing Octave?<br />
I got to know about Octave last year only when I started Machine Learning course of Andrew Ng online. Till then , I only knew abut Matlab. But when I first used Octave, I found that it can do almost everything which Matlab can (as far as I have used).I was pretty happy to know that there is such a free open source software, so when I found a project in this year's GSoC on Octave, I was pretty interested to contribute to the project and make Octave more better, as far as I can.<br />
<br />
== C: Contact ==<br />
* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. ''We really want unique nicks. You might want to bold it.''<br />
'''piyushjain''' on Nabble.<br />
* Which time zone do you live in? Will that change over GSoC duration? ''Perhaps DST adjustment or a relocation. Note that both UTC and GMT are not aware of daylight saving time! Please state UTC+x or -x.''<br />
UTC+5.5 (Indian Standard Time)<br />
* Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers? ''Example: I usually code around 9.00 to 18.00 and could also try to start earlier (~7.00) for few days ;-)''<br />
I am comfortable to work between 8:00 and 16:00 and could also extend upto ~18:00 for few days (UTC). <br />
<br />
== E: Coding experience ==<br />
This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic ;-)<br />
* Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.<br />
I am very comfortable with C++. Actually, C++ is the language I use during competitive coding and I prefer it as my first choice always. I have experience with STLs which I use much frequently and I have knowledge about Object-oriented approach. I have implemented some basic advanced [https://git.io/vSUMu data structures] in C++.<br />
<br />
Octave is the language I used during my ML course online. I used to solve all the [https://git.io/vSUgb programming assignments] in Octave which were mostly based on implementing the ML algorithms from scratch. <br />
<br />
I have no experience in OpenGL and Qt.<br />
<br />
* Please describe your experience with other programming languages.<br />
'''Python''' : Python is the language which I used mostly in my [https://git.io/vDYLB development projects]. I have experience of using Python frameworks such as Django and Flask. I also find it interesting for web scrapping and also for [https://git.io/vSUMm data pre-processing] for ML.<br />
<br />
* Please describe your experience with being in a development team. ''Do you have experience working with open source or free projects?''<br />
I have worked in teams for various projects as part of my course and some competitions. Currently, I am working on developing a chat bot. I am also working on two other projects in group this semester. Although, I don't have experience in Open Source projects.<br />
* Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.<br />
I developed a web portal , an online [https://git.io/vDYLB No-dues system] for campus students. It was basically a Python project. I did the whole project myself.<br />
* Please state the commits and patches you already contributed to Octave. ''This question (one of the most important parts by the way) is the only part of your application our wiki admins will edit for you even after the application deadline. Code sometimes speaks louder than many words do.''<br />
I wrote a function for [https://git.io/vSUpN Union of two Polygons] for Octave by using Clipper Library. It was written in C++.<br />
<br />
== F: Feeling fine ==<br />
* Please describe (in short) your experience with the following tools: ''We only use this question to determine where you need guidance, not for rating! We by no means expect you to be familiar with all of these and you'll won't necessarily need them while working with us.''<br />
** IRC and mailing lists<br />
Quite helpful.<br />
** Mercurial or other source code management systems<br />
I use Guthub generally. <br />
** Mediawiki or other wiki software<br />
No experience.<br />
** make, gcc, gdb or other development tools<br />
As I mostly work on Ubuntu, I have used gcc quite often for compiling my source codes. I haven't used make or gdb tools that much.<br />
* What will make you actively stay in our community after this GSoC is over? ''You can also tell us after applications close and we'll happily try to fulfill :-)''<br />
As Octave is quite helpful for beginner ML enthusiasts like me, and due to its simple and easy syntax, I guess I would love to be in touch with Octave as a user and as a contributor.<br />
<br />
== O: Only out of interest ==<br />
* Did you ever hear about Octave before? <br />
Yes, of course.<br />
** If so, when and where? How far have you been involved already?<br />
I heard about it from Mr. Andrew Ng in his Machine learning Introductory course. I am using Octave for almost a year for my basic machine Learning exercises.<br />
<br />
== P: Prerequisites ==<br />
* Please state the operating system you work with.<br />
I mostly work on Ubuntu (i.e. Linux kernel). Although, I have a dual boot system with Windows alongside.<br />
** If you have access to more than one, please state them and the conditions under which you are granted this access.<br />
I have full access to both.<br />
* Please estimate an average time per day you will be able to access<br />
** an internet connection<br />
I can access Internet at any time of the day and for any duration.<br />
** a computer<br />
I can access Computer at any time of the day and for any duration.<br />
** a computer with your progressing work on<br />
I can access it at any time of the day and for any duration.<br />
* Please describe the degree to which you can install new software on computers you have access to.<br />
I have full liberty for that.<br />
<br />
== S: Self-assessment ==<br />
* Please describe how useful criticism looks from your point of view as committing student.<br />
Not being bookish, but my personal experience is that you cannot improve upon yourself until you take any kind of criticism positively and extract the best out of it for yourself.<br />
* How autonomous are you when developing:<br />
** Do you like to discuss changes intensively and not start coding until you know what you want to do?<br />
Yes, as part of my Software Engineering Course, I learnt about the importance of pre-documentation like Software Requirement Specification documents and Design Documents before starting to code for any software. <br />
** Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?<br />
I may opt that approach for some small sub-task of the [project but I won't prefer to do a project if I had to just 'write and test' for the whole project. As I said, I like the approach that I first figure out the whole in-and-out of the requirement of the project and then start coding.<br />
<br />
== Y: Your task ==<br />
* Did you select a task from our list of proposals and ideas?<br />
Yes.<br />
** If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information. ''Please also wiki-link the page for your elaborated proposal here.''<br />
I have chosen the project: [http://wiki.octave.org/Summer_of_Code_Project_Ideas#Mapping_or_Geometry_package:_Implement_boolean_operations_on_polygons Mapping or Geometry package: Implement boolean operations on polygons]. I read about the Clipper Library which is to be used for this project. <br />
* Please provide a rough estimated timeline for your work on the task. ''This should include the GSoC midterms and personal commitments like exams or vacation ("non-coding time"). If possible, include two or three milestones you expect.''<br />
May 15 - May 31 : Go through the previous implementations in depth and read the documentations of the libraries thoroughly. <br />
June 1 - July 15 : Implement all the required functionalities of Boolean operations on Polygons and incorporate it into GNU Octave.<br />
July 18 - August 5 : Final debugging and documentation.<br />
[[Category: Summer of Code]]</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Template:Student_application_template_public&diff=10134Template:Student application template public2017-03-24T12:06:09Z<p>PiyushJain: </p>
<hr />
<div>= Public application template =<br />
This part is answered in public on your '''[[Special:MyPage|user page]]'''. Please copy its source ('''edit''' tab) and then fill. Delete any examples and annotations (''this markup'') afterwards. Same for questions that do not apply to your situation.<br />
<br />
== A: An introduction ==<br />
* Please describe yourself in three sentences, one of them regarding your current studies.<br />
I am a second year undergraduate student in the department of Computer Science and Engineering at IIT Guwahati. I am a keen competitive programmer. I have decent experience in development projects as part of course and some competitions. <br />
** Which languages do you speak?<br />
I am totally comfortable in speaking English and Hindi.<br />
** What's your overall background? ''The general field you work in or are studying, e.g. computer science, physics, artificial intelligence, control theory...''<br />
As stated, I am a student of Computer Science and Engineering.<br />
* Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?<br />
GSoC is probably the biggest global program which gives students an opportunity to dive into the world of Open Source. I can't get a better platform to learn and contribute significantly.<br />
<br />
I am pretty sure that working under such great mentors and for such aspired projects, it will be the best learning experience for me.<br />
<br />
As I am planning to give my full summer'17 (almost 3 months) with full effort, I am confident about the positivity of the outcome.<br />
** Please also describe your previous experience with the GSoC, if any. ''Includes any community-bonding, mentor experience or application, not necessarily accepted. We use this subquestion to identify which students are unfamiliar with how the program goes, providing further support. It has no negative impact on your rating!''<br />
No, I have no previous experience with GSoC.<br />
* Why are you choosing Octave?<br />
I got to know about Octave last year only when I started Machine Learning course of Andrew Ng online. Till then , I only knew abut Matlab. But when I first used Octave, I found that it can do almost everything which Matlab can (as far as I have used).I was pretty happy to know that there is such a free open source software, so when I found a project in this year's GSoC on Octave, I was pretty interested to contribute to the project and make Octave more better, as far as I can.<br />
<br />
== C: Contact ==<br />
* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. ''We really want unique nicks. You might want to bold it.''<br />
'''piyushjain''' on Nabble.<br />
* Which time zone do you live in? Will that change over GSoC duration? ''Perhaps DST adjustment or a relocation. Note that both UTC and GMT are not aware of daylight saving time! Please state UTC+x or -x.''<br />
UTC+5.5 (Indian Standard Time)<br />
* Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers? ''Example: I usually code around 9.00 to 18.00 and could also try to start earlier (~7.00) for few days ;-)''<br />
I am comfortable to work between 8:00 and 16:00 and could also extend upto ~18:00 for few days (UTC). <br />
<br />
== E: Coding experience ==<br />
This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic ;-)<br />
* Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.<br />
I am very comfortable with C++. Actually, C++ is the language I use during competitive coding and I prefer it as my first choice always. I have experience with STLs which I use much frequently and I have knowledge about Object-oriented approach. I have implemented some basic advanced [https://git.io/vSUMu data structures] in C++.<br />
<br />
Octave is the language I used during my ML course online. I used to solve all the [https://git.io/vSUgb programming assignments] in Octave which were mostly based on implementing the ML algorithms from scratch. <br />
<br />
I have no experience in OpenGL and Qt.<br />
<br />
* Please describe your experience with other programming languages.<br />
'''Python''' : Python is the language which I used mostly in my [https://git.io/vDYLB development projects]. I have experience of using Python frameworks such as Django and Flask. I also find it interesting for web scrapping and also for [https://git.io/vSUMm data pre-processing] for ML.<br />
<br />
* Please describe your experience with being in a development team. ''Do you have experience working with open source or free projects?''<br />
I have worked in teams for various projects as part of my course and some competitions. Currently, I am working on developing a chat bot. I am also working on two other projects in group.Although, I don't have experience in Open Source projects.<br />
* Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.<br />
I developed a<br />
* Please state the commits and patches you already contributed to Octave. ''This question (one of the most important parts by the way) is the only part of your application our wiki admins will edit for you even after the application deadline. Code sometimes speaks louder than many words do.''<br />
<br />
== F: Feeling fine ==<br />
* Please describe (in short) your experience with the following tools: ''We only use this question to determine where you need guidance, not for rating! We by no means expect you to be familiar with all of these and you'll won't necessarily need them while working with us.''<br />
** IRC and mailing lists<br />
** Mercurial or other source code management systems<br />
** Mediawiki or other wiki software<br />
** make, gcc, gdb or other development tools<br />
* What will make you actively stay in our community after this GSoC is over? ''You can also tell us after applications close and we'll happily try to fulfill :-)''<br />
<br />
== O: Only out of interest ==<br />
* Did you ever hear about Octave before? <br />
** If so, when and where? How far have you been involved already?<br />
** If not, where would you expect or advise us to do advertising?<br />
* What was the first question concerning Octave you could not find an answer to rather quickly? ''Of course more than one question can be stated. We try to improve based on this each year! Includes learning how to use it, code, website, GSoC application, …''<br />
<br />
== P: Prerequisites ==<br />
* Please state the operating system you work with.<br />
** If you have access to more than one, please state them and the conditions under which you are granted this access.<br />
* Please estimate an average time per day you will be able to access<br />
** an internet connection<br />
** a computer<br />
** a computer with your progressing work on<br />
* Please describe the degree to which you can install new software on computers you have access to.<br />
<br />
== S: Self-assessment ==<br />
* Please describe how useful criticism looks from your point of view as committing student.<br />
* How autonomous are you when developing:<br />
** Do you like to discuss changes intensively and not start coding until you know what you want to do?<br />
** Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?<br />
<br />
== Y: Your task ==<br />
* Did you select a task from our list of proposals and ideas?<br />
** If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information. ''Please also wiki-link the page for your elaborated proposal here.''<br />
** If you apply for a task you have added yourself instead, please describe this task, its scope and people you already talked to concerning it. What field of tasks did you miss on the list?<br />
* Please provide a rough estimated timeline for your work on the task. ''This should include the GSoC midterms and personal commitments like exams or vacation ("non-coding time"). If possible, include two or three milestones you expect.''<br />
[[Category: Summer of Code]]</div>PiyushJainhttps://wiki.octave.org/wiki/index.php?title=Template:Student_application_template_public&diff=10133Template:Student application template public2017-03-24T11:55:55Z<p>PiyushJain: </p>
<hr />
<div>= Public application template =<br />
This part is answered in public on your '''[[Special:MyPage|user page]]'''. Please copy its source ('''edit''' tab) and then fill. Delete any examples and annotations (''this markup'') afterwards. Same for questions that do not apply to your situation.<br />
<br />
== A: An introduction ==<br />
* Please describe yourself in three sentences, one of them regarding your current studies.<br />
I am a second year undergraduate student in the department of Computer Science and Engineering at IIT Guwahati. I am a keen competitive programmer. I have decent experience in development projects as part of course and some competitions. <br />
** Which languages do you speak?<br />
I am totally comfortable in speaking English and Hindi.<br />
** What's your overall background? ''The general field you work in or are studying, e.g. computer science, physics, artificial intelligence, control theory...''<br />
As stated, I am a student of Computer Science and Engineering.<br />
* Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?<br />
GSoC is probably the biggest global program which gives students an opportunity to dive into the world of Open Source. I can't get a better platform to learn and contribute significantly.<br />
<br />
I am pretty sure that working under such great mentors and for such aspired projects, it will be the best learning experience for me.<br />
<br />
As I am planning to give my full summer'17 (almost 3 months) with full effort, I am confident about the positivity of the outcome.<br />
** Please also describe your previous experience with the GSoC, if any. ''Includes any community-bonding, mentor experience or application, not necessarily accepted. We use this subquestion to identify which students are unfamiliar with how the program goes, providing further support. It has no negative impact on your rating!''<br />
No, I have no previous experience with GSoC.<br />
* Why are you choosing Octave?<br />
I got to know about Octave last year only when I started Machine Learning course of Andrew Ng online. Till then , I only knew abut Matlab. But when I first used Octave, I found that it can do almost everything which Matlab can (as far as I have used).I was pretty happy to know that there is such a free open source software, so when I found a project in this year's GSoC on Octave, I was pretty interested to contribute to the project and make Octave more better, as far as I can.<br />
<br />
== C: Contact ==<br />
* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. ''We really want unique nicks. You might want to bold it.''<br />
'''piyushjain''' on Nabble.<br />
* Which time zone do you live in? Will that change over GSoC duration? ''Perhaps DST adjustment or a relocation. Note that both UTC and GMT are not aware of daylight saving time! Please state UTC+x or -x.''<br />
UTC+5.5 (Indian Standard Time)<br />
* Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers? ''Example: I usually code around 9.00 to 18.00 and could also try to start earlier (~7.00) for few days ;-)''<br />
I am comfortable to work between 8:00 and 16:00 and could also extend upto ~18:00 for few days (UTC). <br />
<br />
== E: Coding experience ==<br />
This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic ;-)<br />
* Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.<br />
I am very comfortable with C++. Actually, C++ is the language I use during competitive coding and I prefer it as my first choice always. I have experience with STLs which I use much frequently and I have knowledge about Object-oriented approach.<br />
<br />
Octave is the language I used during my ML course online. I used to solve all the [https://git.io/vSUgb programming assignments] in Octave which were mostly based on implementing the ML algorithms from scratch. <br />
<br />
I have no experience in OpenGL and Qt.<br />
<br />
* Please describe your experience with other programming languages.<br />
'''Python''' : Python is the language which I used mostly in my [https://git.io/vDYLB development projects]. I have experience of using Python frameworks such as Django and Flask. I also find it interesting for web scrapping and also for [https://git.io/vSUMm data pre-processing] for ML.<br />
<br />
* Please describe your experience with being in a development team. ''Do you have experience working with open source or free projects?''<br />
* Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.<br />
* Please state the commits and patches you already contributed to Octave. ''This question (one of the most important parts by the way) is the only part of your application our wiki admins will edit for you even after the application deadline. Code sometimes speaks louder than many words do.''<br />
<br />
== F: Feeling fine ==<br />
* Please describe (in short) your experience with the following tools: ''We only use this question to determine where you need guidance, not for rating! We by no means expect you to be familiar with all of these and you'll won't necessarily need them while working with us.''<br />
** IRC and mailing lists<br />
** Mercurial or other source code management systems<br />
** Mediawiki or other wiki software<br />
** make, gcc, gdb or other development tools<br />
* What will make you actively stay in our community after this GSoC is over? ''You can also tell us after applications close and we'll happily try to fulfill :-)''<br />
<br />
== O: Only out of interest ==<br />
* Did you ever hear about Octave before? <br />
** If so, when and where? How far have you been involved already?<br />
** If not, where would you expect or advise us to do advertising?<br />
* What was the first question concerning Octave you could not find an answer to rather quickly? ''Of course more than one question can be stated. We try to improve based on this each year! Includes learning how to use it, code, website, GSoC application, …''<br />
<br />
== P: Prerequisites ==<br />
* Please state the operating system you work with.<br />
** If you have access to more than one, please state them and the conditions under which you are granted this access.<br />
* Please estimate an average time per day you will be able to access<br />
** an internet connection<br />
** a computer<br />
** a computer with your progressing work on<br />
* Please describe the degree to which you can install new software on computers you have access to.<br />
<br />
== S: Self-assessment ==<br />
* Please describe how useful criticism looks from your point of view as committing student.<br />
* How autonomous are you when developing:<br />
** Do you like to discuss changes intensively and not start coding until you know what you want to do?<br />
** Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?<br />
<br />
== Y: Your task ==<br />
* Did you select a task from our list of proposals and ideas?<br />
** If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information. ''Please also wiki-link the page for your elaborated proposal here.''<br />
** If you apply for a task you have added yourself instead, please describe this task, its scope and people you already talked to concerning it. What field of tasks did you miss on the list?<br />
* Please provide a rough estimated timeline for your work on the task. ''This should include the GSoC midterms and personal commitments like exams or vacation ("non-coding time"). If possible, include two or three milestones you expect.''<br />
[[Category: Summer of Code]]</div>PiyushJain