I am a 3rd year Ph.D. student of mathematics education in Columbia University. I'm currently having fun allowing intersection of any available geometric objects on the screen.
Current Projects
Intersection
The intersection of two objects with tools and commands.
Intersection is a good way to construct a variety of geometric objects, and also a tool to investigate the properties of the objects being intersected. This project is to enable the intersection of most pairs of geometric objects.
The following is a snapshot of the tabulated progress of intersect tool for each pair of geo types.
2D Intersection Concerns
- Special case handling: In the situation where multiple points are resulting, there's a need to decide if an intersection point already exist, so that the numbering of the points can be done accordingly. See #1044.
- For intersection of polynomial curves, it is possible to calculate all points, including the tangents. However, once should care for the numerical stability. See e.g. #642, #844
- Intersection Paths: Intersect[] command returns point or points only. If we want lines as result, use IntersectionPaths[] instead. It is now only implemented for line/polygon and line/conic. A problem is for its return type: although it seems GeoLine covers all the three line types (line, segment, and ray), they are NOT interchangeable naturally, so the three types are initialized separately (not very good method). It is more natural to deal with IntersectionPaths[ <parametric curve> , <Region> ], which can be implemented later.
- Degenerating case such as tangents: For now, to obtain a tangent of a circle, we either call Tangent[] or do some construction exercises of Euclidean Geometry. However, it is not possible to obtain the tangent like this: (i)draw an arbitrary line a and an arbitrary circle c, (ii) Intersect[a,c], (iii) drag a or c so that a and c are tangent. Generally, since the set of all degenerating cases has zero measure in the parameter space, a larger threshold is needed to make this available.
3D Intersection Concerns
- Picking: when many objects are under the mouse cursor, choose the closest two intersectable objects (done for intersectionPaths)
- Previewing: done for plane/plane and plane/quadric
- parametric surface / plane: TODO
Readings
Other ideas
Free construction?
So that it is easier for the user to draw what they want, without learning most of the buttons. See also the CSEE project (link). This is especially suitable for GeoGebra Tablet.
The greatest benefit of this is for drawing "arbitrary" objects. In many cases we only want "an arbitrary line" or "an arbitrary ellipse", no matter how they are constructed.
Conic 3D's Value String
Use parametrized curve in 3D?
Tasks
- Debugged ClosestPoint for conics
- Enable Point3D intersection tools (Done for line/line, line/plane)
- Enable IntersectionCurve tool in 3D (Done for plane/plane, plane/quadric)
- Intersect line/polygon in 2D/3D, polygon being a region(r) or its boundary(b) (line-polygon(b) by mathieu; Done line-polygon(r) except for degenerated cases)
- Intersect plane/polygon (DONE)
- Special cases of Intersect line/polygon (DONE)
- Conic sections (DONE)
- TODO: optimize the process of searching for the right algo to calculate Intersect[A,B]
- Intersect line/polyline (2D)
- TODO: line / polyhedron (need to consider optimization for both creation and update of algo)
- Intersect[<Line>,<Conic>,<Number Value: index>] (2D / 3D)
- Intersect[<Line>,<Conic>,<Point: reference point>] (2D / 3D)
- Intersect[<Conic>,<Conic>,<Point: reference point>] (2D. TODO 3D)
Attachments
-
ggbIntersectProgress.jpg
(99.2 KB) -
added by tam 12 months ago.
A table marking the progress of intersection
