Question: I have this code to implement a Graham's Scan algorithm using JSXGraph and this part of the code to draw a polygon on a board
I have this code to implement a Graham's Scan algorithm using JSXGraph and this part of the code to draw a polygon on a board using a set of points.
This is the code:
| /***************** Do not alter, unless required! ***************/ | |
| var boardParams = { boundingbox: [-0.2,50,50,-0.2], | |
| grid :true, | |
| axis: false, | |
| showCopyright:false, | |
| showNavigation:false, | |
| }; | |
| var getMouseCoords = function(e, i) | |
| { | |
| var cPos = board.getCoordsTopLeftCorner(e, i), | |
| absPos = JXG.getPosition(e, i), | |
| dx = absPos[0] - cPos[0], | |
| dy = absPos[1] - cPos[1]; | |
| return new JXG.Coords(JXG.COORDS_BY_SCREEN, [dx, dy], board); | |
| }; | |
| /*********************************************************************/ | |
| /* The Graham's scan function */ | |
| function findConvexHull(board) | |
| { | |
| var N = 0, P = {}; | |
| for(var el in board.objects) | |
| if(board.objects[el].elType == 'point') | |
| { | |
| P[N] = board.objects[el]; | |
| N++; | |
| } | |
| // sort the point set P; to obtain the x-coordinate of 'p', simply use 'p.X()' and similarly you can use 'p.Y()' for the y-coordinate | |
| // run Graham's scan to obtain the convex hull points in some order (clockwise/anticlokwise) | |
| // draw line segments between the convex hull points to obtain the final convex polygon; to draw line segment you can simply | |
| // use --> board.create('segment',[p1,p2],{fillColor:'green',strokeColor:'green'}); where p1,p2 are the two end-points | |
| } | |
| /*********************************************************************/ | |
| /* Mouse drawing function */ | |
| var down = function(e) | |
| { | |
| var canCreatePoint = true, i, coords; | |
| if (e[JXG.touchProperty]) | |
| i = 0; | |
| coords = getMouseCoords(e, i); | |
| var point = board.create('point',[coords.usrCoords[1],coords.usrCoords[2]], {highlightFillColor:'Gray', highlightStrokeColor:'Gray', size:2, | |
| fillColor:'RoyalBlue', strokeColor:'RoyalBlue'}); | |
| }; | |
| /*********************************************************************/ | |
| /* Create a board */ | |
| var board = JXG.JSXGraph.initBoard('jxgbox',boardParams); | |
| board.on('down', down); | |
| board.off('off', down); | |
| I need help with implementing this part of the code: /* The Graham's scan function */ function findConvexHull(board) { var N = 0, P = {}; for(var el in board.objects) if(board.objects[el].elType == 'point') { P[N] = board.objects[el]; N++; } // sort the point set P; to obtain the x-coordinate of 'p', simply use 'p.X()' and similarly you can use 'p.Y()' for the y-coordinate function p.X() function p.Y() // run Graham's scan to obtain the convex hull points in some order (clockwise/anticlokwise) What to implement here?(Method) /* draw line segments between the convex hull points to obtain the final convex polygon; to draw line segment you can simply use --> board.create('segment',[p1,p2],{fillColor: 'green',strokeColor:'green'}); where p1,p2 are the two end-points */ (How to implement the function) board.create('segment',[p1,p2], {fillColor: 'green',strokeColor:'green'}); } The above /* The Graham's scan function */ section of the code need to be written using Java Script Lang. Thanks for the help |
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
