![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
go to http://hometown.aol.com/goofygrafx/qa.html (there's a picture
involved)
thanks :)
------------------
dan
http://hometown.aol.com/goofygrafx
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
maybe this isn't the best way but, solve y=mx+c for each line and then
iterate using newton-rhapson (?) or similar to find intersection point.
jim
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
If I remember from math correctly:
The math explanation:
Well, since you already know what the points are then you can easily find
the slopes of the two lines. Then simply write up the equation for each line
using:
y = m*x + b
m equals slope, b equals y-intercept, both are easy to find
Then, to find what your x value for the intersection is, solve for x in the
equation:
Line 1 Line 2
m*x + b = m*x + b
Remember that one side of the equation should not be identical to the other.
Then solve for y in one of the equations(y = m*x + b) using your x value
that you just found. You now have your x and y values for the point of
intersection.
Hopefully that is all correct, but I can't make up a macro right now.
"Dan Byers" <nomail@nomail> wrote in message
news:web.3d9a3acd610548727c10c2df0@news.povray.org...
> go to http://hometown.aol.com/goofygrafx/qa.html (there's a picture
> involved)
>
> thanks :)
>
> ------------------
> dan
> http://hometown.aol.com/goofygrafx
>
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
James Taylor wrote:
>maybe this isn't the best way but, solve y=mx+c for each line and then
>iterate using newton-rhapson (?) or similar to find intersection point.
>
>jim
>
umm... I have no idea what you just said... :)
approach it from this angle: imagine I'm a dork whose highest level of math
education was intermediate algebra in college some time ago :)
--------------
dan
http://hometown.aol.com/goofygrafx
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Niytaan wrote:
>If I remember from math correctly:
>The math explanation:
>
>Well, since you already know what the points are then you can easily find
>the slopes of the two lines. Then simply write up the equation for each line
>using:
>
>y = m*x + b
>
>m equals slope, b equals y-intercept, both are easy to find
>
>Then, to find what your x value for the intersection is, solve for x in the
>equation:
>
>Line 1 Line 2
>m*x + b = m*x + b
>
>Remember that one side of the equation should not be identical to the other.
>
>Then solve for y in one of the equations(y = m*x + b) using your x value
>that you just found. You now have your x and y values for the point of
>intersection.
>
okay, I think I can follow what's happening here, except for that "b equals
y-intercept" part... what is that, exactly? thanks :)
------------
dan
http://hometown.aol.com/goofygrafx
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
> okay, I think I can follow what's happening here, except for that "b
equals
> y-intercept" part... what is that, exactly? thanks :)
It's the place where, if the line extended infinitely, it would cross the
Y-axis.
It might be easier to use the point-slope form of a line:
y-k = m*(x-h)
where the line passes through the point (h,k) and has slope m. (If you have
two points on a line, such as (a,b) and (c,d), which you do, you can find
the slope (m) via (d-b)/(c-a).)
There may be a problem if it's possible for the lines to be vertical.
- Slime
[ http://www.slimeland.com/ ]
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Dan Byers <nomail@nomail> wrote in message
news:web.3d9a3acd610548727c10c2df0@news.povray.org...
Here's a no math (on your part) answer:
#local R1 = [one end of red line];
#local R2 = [other end of red line];
#local P1 = [one end of purple line];
#local P2 = [other end of purple line];
#local RedVector = R2 - R1;
#local PurpleVector = P2 - P1;
#local Target = plane {vcross(<0,0,1>, RedVector), R1);
#local Intersection = trace (Target, P1, PurpleVector);
// trace works *so* fast that this might be as quick
// as any answer
// untested
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Hi Dan,
you are talking about *line segments* and not *lines* because a line is infinite and
two lines do always
intersect in case they are not coincident or parallel.
But here is the solution:
Assuming:
we call the red line: line a with the start/end points P1 (x1,y1) and P2 (x2,y2)
and the purple line: line b with the start/end points P3 (x3,y3) and P4 (x4,y4)
the equations are:
Pa = P1 + ua ( P2 - P1 )
Pb = P3 + ub ( P4 - P3 )
with the two unknowns ua and ub,.
... but we can solve this for Pa=Pb because this is the point the lines do intersect:
ua = ((x4-x3)(y1-y3) - (y4-y3)(x1-x3)) / ((y4-y3)(x2-x1) - (x4-x3)(y2-y1))
ub = ((x2-x1)(y1-y3) - (y2-y1)(x1-x3)) / ((y4-y3)(x2-x1) - (x4-x3)(y2-y1))
Note that the two denominators are the same. If the denominator is 0 the
two lines are parallel (and so will not intersect) and if the numerator is also 0
the two lines are coincident.
But you are looking for the intersection and here it is:
x = x1 + ua (x2 - x1)
y = y1 + ua (y2 - y1)
sorry, not finished yet because this is the intersection for the two lines, but
you want to know if the line *segments* do intersect, but this is easy:
if both ua and ub lie in the range of 0 to 1 the two line segments DO intersect
in any other case they miss each other.
so long
-Ive
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Thanks to everyone who responded! :) I was digging thru my bookshelf
looking for my Java book and I stumbled across my old algebra book. Inside
were listed a few different ways to solve the intersection of a pair of
linear equations. I turned that into a macro, and it works! (believe me,
no one was more surprised than I!). For the curious (or bored), here's the
macro:
#macro LineIntersect( v1Start, v1End, v2Start, v2End)
//-------------------------------------------------------------------
// returns a vector with the point that represents the intersection
// of a pair of lines... assumes Z is zero and that both lines are
// neither parallel, superimposed, or vertical...
//-------------------------------------------------------------------
#local v1 = v1End - v1Start;
#local rise1 = v1.y;
#local run1 = v1.x;
#local k1 = v1Start.y;
#local h1 = v1Start.x;
#local v2 = v2End - v2Start;
#local rise2 = v2.y;
#local run2 = v2.x;
#local k2 = v2Start.y;
#local h2 = v2Start.x;
#local run3 = run2 / run1;
#local myX = (((run2*k2) - (rise2*h2)) - (run2*((run1*k1) - (rise1*h1))/
run1)) / ((run2*rise1/run1) - rise2);
#local myY = ((run1*k1) - (rise1*h1) + (rise1*myX)) / run1;
<myX, myY, 0>
#end
--------------
dan
http://hometown.aol.com/goofygrafx
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |