Presentation is loading. Please wait.

Presentation is loading. Please wait.

Abstract There is an existing program that allows students to visualize geometric shapes that a hand-drawn illustration just can’t match. Professor Cervone.

Similar presentations


Presentation on theme: "Abstract There is an existing program that allows students to visualize geometric shapes that a hand-drawn illustration just can’t match. Professor Cervone."— Presentation transcript:

1 Abstract There is an existing program that allows students to visualize geometric shapes that a hand-drawn illustration just can’t match. Professor Cervone uses this program in his multi-variable calculus class to help students understand the geometry behind the functions they use, like the ones shown on the right. One part of this existing program is Geomview, a tool that displays geometric objects. The other part of the program is a suite of modules called StageTools. These modules create and manipulate the geometric objects that are displayed in Geomview. The problem is it takes too much time and effort to set-up the program, which prevents most people from using this tool. I would like all students and professors to be able to use the program, so I am redesigning the program to run in an applet that can be put on the web. The new version will no longer need Geomview to display the images. All the original features will be implemented in the new program, and new features can be easily added. A redesign of the whole program would take many years, so I am redesigning one module of StageTools, called CenterStage. This module creates the geometric objects that will later be manipulated and displayed. Essentially, I am working on the back-end computational models of the geometric objects. My project is designed to be more flexible then the original program, so new features can be implemented. Even uses someone may want to have in the future can be applied with a minimal amount of extra work. My project does not complete the whole new program, but it allows future students to finish the program later on, without changing my design. The project will help make this type of math tool more accessible to students and professors. DomainCreator This is the type of display that the geometric object will be seen as. It can be a grid, filled-in patches, stripes, single points, etc. The user will input the range of values in which the geometric object will lie, and specify how many points in that range will be used. This class generates 2-D points and the proper connections between points, as designated by the type of display. MapSetToSet A function just maps one set of points to another set. So, a surface and a curve are just different types of mappings. A SurfaceClass and a CurveClass would just take the set of points, generated by the DomainCreator and map the points to a 3-D set of points. Hence, these classes have been abstracted so that any geometric object’s function can be represented by this class. MapSetToSet only manipulates the input points. The connections between the points, however, are not modified in any way by this mapping process. Polyhedron The polyhedron is defined by a set of points and a set of connections. The user explicitly determines the points and connections, which are then stored in the Polyhedron object as a Data object. Data This class holds the set of points and set of connections on those points. Then, the modified version of the Data is passed along the pipeline until it is passed to the viewer, which will display the image. User Input The user will use a GUI to create a geometric object. But, there will also be interfaces, such as sliders, check boxes, and type-in boxes, that will change the object’s parameters once it has been created. Before a function-defined geometric object, like a surface, can be created, the user must specify a domain and identify how detailed he/she wants the image. A domain consists of multiple ranges, one for each parameter of the geometric object’s function. A surface has two parameters, so it will need two ranges, while a curve will only need one. A range is a set of three numbers, a minimum value for the parameter, a maximum value for the parameter, and the number of intervals that will be calculated inside that range. The level of detail is dependent upon the number of points used in the domain. If the user wants more detail, he/she should increase the number of intervals in the domain. Transform - Color / Rotate / Slice / … There are many other operations that can be done on a set of data. The geometric object can be colored based on some coloring function. Or, it could be rotated. The mathematical object could also be sliced, so pieces of the object are separated. GroupSet This class merges the data from many different geometric objects into one set of data. The group’s geometric objects can then be manipulated in the same way, as if it were one object. GridCreatorPatchCreatorStripeCreatorDotCreator Data Flow Diagram Component implemented in project Component implemented later Dynamic Changes To Parameters A parameter can be changed by the user after the geometric object has been created. The possible changes could affect the domain or the function of a geometric object. A DomainCreator listens for domain changes, while MapSetToSet listens for changes in the incoming Data object and in its function. When a change is detected these listeners recalculate its points and/or connections and propagate the changes down the pipeline. The change below affects the intervals in the domain, so the GridCreator is notified of the particular change. Then, the GridCreator regenerates the points and connections based on this new parameter. The new points and connections are stored in the Data object. Now, the MapSetToSet instance, that had evaluated this GridCreator’s points earlier, receives notification that its incoming Data has been altered. The MapSetToSet instance then reevaluates all the new points in the Data and stores the new points with the new connections. From here, the Data from the MapSetToSet instance notifies any object that uses it, and this propagation continues. Example: Consider an instance of MapSetToSet that is represented by the function f(u,v) = (u, v, u*v). If the user wanted this surface to be displayed as a grid, then a GridCreator will pass its Data to this MapSetToSet object. Now, the points in the Data will be evaluated based on the function and the new points will replace the incoming points. The connections remain the same, however. Now the geometric object looks like the image below. Points from GridCreator: Points after Evaluation: { (-1, 2), (-1, 3), (-1, 4), { (-1, 2, -2), (-1, 3, -3), (-1, 4, -4), (0, 2), (0, 3), (0, 4), (0, 2, 0), (0, 3, 0), (0, 4, 0), (1, 2), (1, 3), (1, 4) } (1, 2, 2), (1, 3, 3), (1, 4, 4) } Connections: { [0,1], [1,2], [3,4], [4,5], [6,7], [7,8], [0,3], [3,6], [1,4], [4,7], [2,5], [5,8] } Example: If the domain was { -1 ≤ u ≤ 1 and 2 ≤ v ≤ 4 } and the user wanted 9 points in the image, then u takes on the value -1, 0, or 1, while v has value 2, 3, or 4. Here are the points and connections generated by a GridCreator and stored in the Data object. The connections use an index into the set of points. Points: { (-1, 2), (-1, 3), (-1, 4), (0, 2), (0, 3), (0, 4), (1, 2), (1, 3), (1, 4) } Connections: { [0,1], [1,2], [3,4], [4,5], [6,7], [7,8], [0,3], [3,6], [1,4], [4,7], [2,5], [5,8] } Example: The user might input something like this to get a surface whose input values are in the region { -1 ≤ u ≤ 1 and 2 ≤ v ≤ 4 } in the xy-plane, contains 9 points, and is displayed as a grid. Input for domain: [-1, 1, 2] [2, 4, 2] Input for function of the surface: f(u,v) = (u, v, u*v) Input for display type: grid Output SurfaceCurve Polyhedron User Input DomainCreator GroupSet MapSetToSet Data Polyhedron Data Viewer Transform Data


Download ppt "Abstract There is an existing program that allows students to visualize geometric shapes that a hand-drawn illustration just can’t match. Professor Cervone."

Similar presentations


Ads by Google