Solved

Inverse Interpolation

Posted on 2006-11-01
4
469 Views
Last Modified: 2009-07-29
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
Comment
Question by:nebbles
  • 2
4 Comments
 
LVL 10

Expert Comment

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

Author Comment

by:nebbles
ID: 17853204
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

by:
xersoft earned 500 total points
ID: 17866863
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

by:nebbles
ID: 17883547
I had to modify the code so it wouldn't draw, but otherwise everything was there.

Thanks.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
Introduction As chip makers focus on adding processor cores over increasing clock speed, developers need to utilize the features of modern CPUs.  One of the ways we can do this is by implementing parallel algorithms in our software.   One recent…
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…
Migrating to Microsoft Office 365 is becoming increasingly popular for organizations both large and small. If you have made the leap to Microsoft’s cloud platform, you know that you will need to create a corporate email signature for your Office 365…

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now