It looks like you're new here. If you want to get involved, click one of these buttons!

- 140.8K All Categories
- 103.6K Programming Languages
- 6.5K Assembler Developer
- 1.9K Basic
- 39.9K C and C++
- 2.9K C#
- 7.9K Delphi and Kylix
- 4 Haskell
- 9.7K Java
- 4.1K Pascal
- 1.3K Perl
- 2K PHP
- 543 Python
- 37 Ruby
- 4.4K VB.NET
- 1.6K VBA
- 20.8K Visual Basic
- 2.6K Game programming
- 315 Console programming
- 90 DirectX Game dev
- 1 Minecraft
- 112 Newbie Game Programmers
- 2 Oculus Rift
- 9K Applications
- 1.8K Computer Graphics
- 739 Computer Hardware
- 3.4K Database & SQL
- 535 Electronics development
- 1.6K Matlab
- 628 Sound & Music
- 257 XML Development
- 3.3K Classifieds
- 199 Co-operative Projects
- 198 For sale
- 190 FreeLance Software City
- 1.9K Jobs Available
- 603 Jobs Wanted
- 208 Wanted
- 2.9K Microsoft .NET
- 1.8K ASP.NET
- 1.1K .NET General
- 3.4K Miscellaneous
- 8 Join the Team
- 354 Comments on this site
- 69 Computer Emulators
- 2.1K General programming
- 187 New programming languages
- 626 Off topic board
- 196 Mobile & Wireless
- 68 Android
- 126 Palm Pilot
- 338 Multimedia
- 154 Demo programming
- 184 MP3 programming
- Bash scripts
- 27 Cloud Computing
- 53 FreeBSD
- 1.7K LINUX programming
- 370 MS-DOS
- Shell scripting
- 321 Windows CE & Pocket PC
- 4.1K Windows programming
- 938 Software Development
- 416 Algorithms
- 68 Object Orientation
- 91 Project Management
- 94 Quality & Testing
- 268 Security
- 7.7K WEB-Development
- 1.8K Active Server Pages
- 61 AJAX
- 4 Bootstrap Themes
- 55 CGI Development
- 28 ColdFusion
- 224 Flash development
- 1.4K HTML & WEB-Design
- 1.4K Internet Development
- 2.2K JavaScript
- 36 JQuery
- 300 WEB Servers
- 150 WEB-Services / SOAP

The code would look something like the following:

[CODE]RECT rect_array[n];

...

bool DoesLineIntersectAny(RECT line)

{

for(int i = 0; i < n; i++)

if(LineIntersects(rect_array[i], line)

return true;

return false;

}

[/CODE]Unfortunately I cannot find a function such as "LineIntersects" in any standard libraries or API's. Any help would be greatly appreciated.

Terms of use / Privacy statement / Publisher: Lars Hagelin

Programmers Heaven articles / Programmers Heaven files / Programmers Heaven uploaded content / Programmers Heaven C Sharp ebook / Operated by CommunityHeaven

© 1997-2015 Programmersheaven.com - All rights reserved.

## Comments

75First, determine an equation for each line. You can do this easily by working out the gradient of the line (increase in y / increase in x) and the find the constant of the equation, which will be the value of y when x = 0.

So say you have a line made up of 2 points with co-ordinates (10, 10) and (15, 20). The increase in y is 10 and the increase in x is 5, so the gradient is 10 / 5 = 2. When x = 0, y will be 5, so the constant in the equation is 5. This will give equation of the line as

y = 2x + 5

Now do the same for the second line. Assume the gradient is 4 and the constant is 13. This makes the second equation

y = 4x + 13

To find the point of intersection, you just need to find where the 2 equations are equal. Do this by combining the equations like this:

2x + 5

4x + 13

2x + 5 = 4x + 13

Rearrange this to make x on it's own on the left hand side:

2x + 5 = 4x + 13

-2x + 5 = 0x + 13

-2x + 0 = 0x + 8

-2x = 8

x = -4

This result means the 2 lines intersect when x is at -4

You can then substitute this value of x into any of the 2 equations to retrieve the y co-ordinate.

Actually the thing with straight lines is, there will ALWAYS be a point of intersection! The only exception of course is if the 2 lines are parallel, or they have the same gradient. To do a simple check of whether 2 lines will ever cross, check to see if their gradients are equal. I'm just assuming you wanted to know where they intersect.

Hope that solves your problem.

78621:

: First, determine an equation for each line. You can do this easily by working out the gradient of the line (increase in y / increase in x) and the find the constant of the equation, which will be the value of y when x = 0.

:

: So say you have a line made up of 2 points with co-ordinates (10, 10) and (15, 20). The increase in y is 10 and the increase in x is 5, so the gradient is 10 / 5 = 2. When x = 0, y will be 5, so the constant in the equation is 5. This will give equation of the line as

: y = 2x + 5

:

: Now do the same for the second line. Assume the gradient is 4 and the constant is 13. This makes the second equation

: y = 4x + 13

:

: To find the point of intersection, you just need to find where the 2 equations are equal. Do this by combining the equations like this:

:

: 2x + 5

: 4x + 13

:

: 2x + 5 = 4x + 13

:

: Rearrange this to make x on it's own on the left hand side:

:

: 2x + 5 = 4x + 13

: -2x + 5 = 0x + 13

: -2x + 0 = 0x + 8

: -2x = 8

: x = -4

:

: This result means the 2 lines intersect when x is at -4

: You can then substitute this value of x into any of the 2 equations to retrieve the y co-ordinate.

:

: Actually the thing with straight lines is, there will ALWAYS be a point of intersection! The only exception of course is if the 2 lines are parallel, or they have the same gradient. To do a simple check of whether 2 lines will ever cross, check to see if their gradients are equal. I'm just assuming you wanted to know where they intersect.

:

: Hope that solves your problem.

The lines mentioned do not always intersect. They have a start and end point and therefore have a length.

If you find the X for which two lines intersect, you'll have to check if that value does not fall outside of both lines' starting and ending X-values.

Greets,

Eric Goldstein

http://www.gvh-maatwerk.nl

1,018: :

: : First, determine an equation for each line. You can do this easily by working out the gradient of the line (increase in y / increase in x) and the find the constant of the equation, which will be the value of y when x = 0.

: :

: : So say you have a line made up of 2 points with co-ordinates (10, 10) and (15, 20). The increase in y is 10 and the increase in x is 5, so the gradient is 10 / 5 = 2. When x = 0, y will be 5, so the constant in the equation is 5. This will give equation of the line as

: : y = 2x + 5

: :

: : Now do the same for the second line. Assume the gradient is 4 and the constant is 13. This makes the second equation

: : y = 4x + 13

: :

: : To find the point of intersection, you just need to find where the 2 equations are equal. Do this by combining the equations like this:

: :

: : 2x + 5

: : 4x + 13

: :

: : 2x + 5 = 4x + 13

: :

: : Rearrange this to make x on it's own on the left hand side:

: :

: : 2x + 5 = 4x + 13

: : -2x + 5 = 0x + 13

: : -2x + 0 = 0x + 8

: : -2x = 8

: : x = -4

: :

: : This result means the 2 lines intersect when x is at -4

: : You can then substitute this value of x into any of the 2 equations to retrieve the y co-ordinate.

: :

: : Actually the thing with straight lines is, there will ALWAYS be a point of intersection! The only exception of course is if the 2 lines are parallel, or they have the same gradient. To do a simple check of whether 2 lines will ever cross, check to see if their gradients are equal. I'm just assuming you wanted to know where they intersect.

: :

: : Hope that solves your problem.

:

: The lines mentioned do not always intersect. They have a start and end point and therefore have a length.

: If you find the X for which two lines intersect, you'll have to check if that value does not fall outside of both lines' starting and ending X-values.

:

:

: Greets,

: Eric Goldstein

: http://www.gvh-maatwerk.nl

:

:

:

[green]

The domain of line y=mx+b is the set of reals. It's range is the set of all reals, so it could go on to -infinity to +infinity. What you are describing is the distance between two points which is only part of a line or also called a line segment.

[/green]