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

- 140.8K All Categories
- 104.4K Programming Languages
- 6.4K Assembler Developer
- 1.8K Basic
- 39.8K C and C++
- 4.2K C#
- 7.9K Delphi and Kylix
- 4 Haskell
- 9.6K Java
- 4.1K Pascal
- 1.3K Perl
- 1.9K PHP
- 507 Python
- 48 Ruby
- 4.3K VB.NET
- 1.6K VBA
- 20.8K Visual Basic
- 2.6K Game programming
- 310 Console programming
- 88 DirectX Game dev
- 1 Minecraft
- 110 Newbie Game Programmers
- 2 Oculus Rift
- 8.9K Applications
- 1.8K Computer Graphics
- 726 Computer Hardware
- 3.4K Database & SQL
- 521 Electronics development
- 1.6K Matlab
- 627 Sound & Music
- 256 XML Development
- 3.3K Classifieds
- 192 Co-operative Projects
- 180 For sale
- 189 FreeLance Software City
- 1.9K Jobs Available
- 600 Jobs Wanted
- 201 Wanted
- 2.9K Microsoft .NET
- 1.7K ASP.NET
- 1.1K .NET General
- 3K Miscellaneous
- 3 Join the Team
- 0 User Profiles
- 349 Comments on this site
- 59 Computer Emulators
- 1.9K General programming
- 178 New programming languages
- 595 Off topic board
- 159 Mobile & Wireless
- 33 Android
- 124 Palm Pilot
- 335 Multimedia
- 151 Demo programming
- 184 MP3 programming
- 0 Bash scripts
- 18 Cloud Computing
- 52 FreeBSD
- 1.7K LINUX programming
- 367 MS-DOS
- 0 Shell scripting
- 320 Windows CE & Pocket PC
- 4.1K Windows programming
- 882 Software Development
- 405 Algorithms
- 68 Object Orientation
- 86 Project Management
- 88 Quality & Testing
- 234 Security
- 7.5K WEB-Development
- 1.8K Active Server Pages
- 61 AJAX
- 2 Bootstrap Themes
- 55 CGI Development
- 19 ColdFusion
- 222 Flash development
- 1.4K HTML & WEB-Design
- 1.4K Internet Development
- 2.2K JavaScript
- 33 JQuery
- 285 WEB Servers
- 119 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.

About & Contact / 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 LLC

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

## Comments

75MemberFirst, 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.

78Member621Member:

: 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,018Member: :

: : 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]