Background
Last summer when I was I trying to a write a chart control for my software, I noticed that my program could not distinguish between chart lines and shapes and I had to make Auto-Info on the plot which got activated when the mouse moved on the objects. I made a class that gets the line points in an array of type Pointf
and returns the corresponding Region
with the custom width. This was helpful and that's why now I can make a UserControl
or Control
with all the ordinary events such as MouseMove, MouseClick, and etc., and set its region to my custom region and add it to my project as a scatter plot. The mathematical theory is simple. Suppose that we have three points A, B, and C in an array of Pointf
.
Here is the procedure that makes the region:
- The slope of the bisector of angle β is calculated.
- Two points on the bisector with equal distance to B are determined (couple points).
- For all real points, we make these two points.
- The position of each couple will be verified according to the closer couples.
- Two arrays of points in two sides will be generated.
- Two arrays will join together and generate the region.
Using the code
To use this class, just instantiate it and call the FTR
function and supply the parameters.
In the example file, an array of sin(x) is generated and then it is passed to the function to retrieve the region (some parts of code are omitted here).
//
Dim FTR As New FunctionToRegion.FunctionToRegion
Dim pnt(500) As PointF
For i As Double = 0 To 500
pnt(i).X = i
pnt(i).Y = 110 + 100 * Math.Sin(i / 50)
Next
Region = FTR.FTR(pnt, 4)
//