Jump to content
Xtreme .Net Talk

Recommended Posts

  • Leaders
Posted

Coordinates? Lines don't have coordinates. Points have coordinates, and lines have properties such as slope and Y-intercept.

 

Assuming you have points that are supposed to represent lines, you can calculate the slope and y-intercept using the same formula from calculus.

 

Slope = (Y2 - Y1) / (X2 - X1)

If X2 = X1 then you'll just have to set Slope to a really big value.

 

Y-intercept = Y1 - Slope * X1

 

Do this for both lines so that you have a slope and y-intercept for both lines.

 

Next you'll want to compare the Slopes of these two lines and make sure that these two lines are not parallel.

If Slope1 = Slope2 Then the lines are parallel.

 

The remainder of the code would be run if Slope1 <> Slope2, or in the Else of the above slope equality check.

 

If Slope1 <> Slope2 Then

'rest of stuff.

 

To determine where (it's not If, since lines will cross unless they are parallel) the two lines cross... you know there must be a point where the same X-coordinates put into both line equations Y = MX + B will produce the same Y.

So, therefore you find the X that will produce the same Y by setting them equal.

M1 * Xc + B1 = M2 * Xc + B2

And solve for Xc = (M2 - M1) / (B1 - B2)

Put Xc into a line equation: Yc = M1 * Xc + B1

to find the Yc coordinate.

 

And this is the intersection point: Xc. Yc :)

Iceplug, USN

One of my coworkers thinks that I believe that drawing bullets is the most efficient way of drawing bullets. Whatever!!! :-(

  • Leaders
Posted

There are many different ways to define lines.

 

One way is with a pair of points, i.e. a line defined by (0, 5) and (3, 10).

 

Another way is with the general equation of a line: Ax + By = c, such as 5x - 3y = -15 (the same as y=5/3x + 5).

 

A third is slope-intercept form (the one you saw in algebra): y = mx + b, such as y=5/3x + 5 (the same as 5x - 3y = -15).

 

And there are more. Depending on your representation of a line, the exact method differs.

 

Iceplug's solution works for slope-intercept form, but the problem with slope-intercept form is that it can not compensate for vertical lines, which essentially have a slope of infinity.

 

My best guess is that you are defining your lines by pairs of points. Also, I would say most likely you have line-segments, which means that you also have to check to make sure the point of intersection is within both segments.

 

I guess what I'm trying to say is you can get a much better solution with more info.

[sIGPIC]e[/sIGPIC]
Posted

Thanks for the responses guys. Sorry I didn�t supply enough information.

 

Marble Eater, you were correct in assuming that the two �lines� are actually �line segments� and are derived from the coordinates of their end points. Sometimes they will actually cross, in which case I�d need to find the point of intersection. Usually though, they will not cross, in which case I need to find out the point they would intersect if they were to be extended.

 

As someone who doesn�t know the difference between calculus and Confucius, I was hoping someone had a ready made routine that would fit the bill. Barring that, if I have to do it myself, I could really use some dumbed down Pseudo code to get me started.

  • Leaders
Posted
I was bored so I looked up the equation and coded it, then made a demo app for it. All you really need is the Line struct, which has an intersection function. I wrote this in C#, so I hope you are using C#. If you are using VB and don't know C#, I can translate the Line class for you.

Intersection.txt

[sIGPIC]e[/sIGPIC]

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...