Solved

# Inverse Interpolation

Posted on 2006-11-01
466 Views
I need to find the distance down a line.  Just wondering if there is a package (or anything really) that can perform Inverse Interpolation.

Cheers.
0
Question by:nebbles
• 2

LVL 10

Expert Comment

you can use the distance formula, here is a sample:
http://www.purplemath.com/modules/distform.htm
0

Author Comment

I know 2 points of a line.  Given a distance I need to find the point along the line and not the total distance.
0

LVL 5

Accepted Solution

xersoft earned 500 total points
I'm not exactly sure what you are looking for but does this help?

Private Function GetPointByLength(ByVal P1 As PointF, ByVal P2 As PointF, ByVal DistanceFromP1 As Single) As PointF
Dim Length As New Drawing.SizeF(P1.X - P2.X, P1.Y - P2.Y)
Dim Angle As Single = CSng(Math.Atan2(Length.Height, Length.Width))

Dim nx As Single = CSng(Math.Cos(Angle) * DistanceFromP1)
Dim ny As Single = CSng(Math.Sin(Angle) * DistanceFromP1)

Dim NewPoint As New Drawing.PointF(P1.X - nx, P1.Y - ny)

Return NewPoint
End Function

Give it two points and the distance and it will return the point, which is the given distance from P1. You can test it by dropping a text box on a form and naming it: txtLength

Then put this code, along with the above function into the form.

Private Sub Form_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
Dim gr As Drawing.Graphics = Me.CreateGraphics

gr.Clear(Drawing.SystemColors.Control)
Dim p1 As New Drawing.PointF(CSng(Width / 2), CSng(Height / 2))
Dim p2 As New Drawing.PointF(e.X, e.Y)

gr.DrawLine(Drawing.Pens.Black, p1, p2)
DrawPoint(gr, p1, Drawing.Color.Blue)
DrawPoint(gr, p2, Drawing.Color.Black)

Dim NewLength As Single = CSng(Val(txtLength.Text))

Dim aPt As PointF = GetPointByLength(p1, p2, NewLength)
DrawPoint(gr, aPt, Drawing.Color.Red)
End Sub
Private Sub DrawPoint(ByVal gr As Drawing.Graphics, ByVal p As PointF, ByVal C As Drawing.Color)
Dim s As Single = 4

Dim b As Drawing.Brush = New Drawing.SolidBrush(C)

gr.FillEllipse(b, New Drawing.RectangleF(CSng(p.X - s / 2), CSng(p.Y - s / 2), s, s))

b.Dispose()
End Sub

0

Author Comment

I had to modify the code so it wouldn't draw, but otherwise everything was there.

Thanks.
0

## Featured Post

### Suggested Solutions

I think the Typed DataTable and Typed DataSet are very good options when working with data, but I don't like auto-generated code. First, I create an Abstract Class for my DataTables Common Code.  This class Inherits from DataTable. Also, it can …
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.