| | | | |
| |
| In lugnet.cad.dev, Ronan Webb wrote:
> In lugnet.cad.dev, Tore Eriksson wrote:
> > You are given three 3d cooridates.
>
> (snip) <
> > If possible, I would like an Excel spreadsheet, but just the formula will do.
> >
> > TIA,
> > /Tore
>
>
>
> http://astronomy.swin.edu.au/~pbourke/geometry/planeeq/
>
> (snip) <
> Having worked these out (i.e. this has given you the A,B,C,D in
> A.x + B.y + C.z + D = 0) just plug in your fourth point's x and y co-ords
> (say x4 and y4) into this equation i.e. let x=x4 and let y=y4
> This gives you the equation for z4 that you are looking for viz.
> A.x4 + B.y4 +C.z4 +D =0 (where now the only thing you don't know is z4)
> rearranging this is just
> z4=(-D -A.x4 - B.x4)/C
>
>
> Then again, it's late :)
Hey! cool! where was this info when I wrote my calculator program? It would have made it alot easier. The calculator grew into a slightly different purpose though. it was for helping determine where to trim lines and quads at intersection points.
The last formula had a typo, here it is corrected.
z4=(-D -A.x4 - B.y4)/C
Tore, I will email you the spreadsheet I put this information into.
Paul
| | | | | | | | | | | | |
| |
| In lugnet.cad.dev, Paul Easter wrote:
> In lugnet.cad.dev, Ronan Webb wrote:
> > In lugnet.cad.dev, Tore Eriksson wrote:
> > > You are given three 3d cooridates.
> >
> > (snip) <
> > > If possible, I would like an Excel spreadsheet, but just the formula will do.
> > >
> > > TIA,
> > > /Tore
> >
> >
> >
> > http://astronomy.swin.edu.au/~pbourke/geometry/planeeq/
> >
> > (snip) <
> > Having worked these out (i.e. this has given you the A,B,C,D in
> > A.x + B.y + C.z + D = 0) just plug in your fourth point's x and y co-ords
> > (say x4 and y4) into this equation i.e. let x=x4 and let y=y4
> > This gives you the equation for z4 that you are looking for viz.
> > A.x4 + B.y4 +C.z4 +D =0 (where now the only thing you don't know is z4)
> > rearranging this is just
> > z4=(-D -A.x4 - B.x4)/C
> >
> >
> > Then again, it's late :)
>
> Hey! cool! where was this info when I wrote my calculator program? It would have made it alot easier. The calculator grew into a slightly different purpose though. it was for helping determine where to trim lines and quads at intersection points.
>
> The last formula had a typo, here it is corrected.
> z4=(-D -A.x4 - B.y4)/C
Yes, I saw that, too.
> Tore, I will email you the spreadsheet I put this information into.
>
> Paul
Thanks for the offer, but I have already made a working spreadsheet. :)
Now, all I have to do is try to automate it with some VBS.
/Tore
| | | | | | | | | | | | | | |
| |
| In lugnet.cad.dev, Paul Easter wrote:
> In lugnet.cad.dev, Ronan Webb wrote:
> > In lugnet.cad.dev, Tore Eriksson wrote:
> > > You are given three 3d cooridates.
> >
> > (snip) <
> > > If possible, I would like an Excel spreadsheet, but just the formula will do.
> > >
> > > TIA,
> > > /Tore
> >
> >
> >
> > http://astronomy.swin.edu.au/~pbourke/geometry/planeeq/
> >
> > (snip) <
> > Having worked these out (i.e. this has given you the A,B,C,D in
> > A.x + B.y + C.z + D = 0) just plug in your fourth point's x and y co-ords
> > (say x4 and y4) into this equation i.e. let x=x4 and let y=y4
> > This gives you the equation for z4 that you are looking for viz.
> > A.x4 + B.y4 +C.z4 +D =0 (where now the only thing you don't know is z4)
> > rearranging this is just
> > z4=(-D -A.x4 - B.x4)/C
> >
> >
> > Then again, it's late :)
>
> Hey! cool! where was this info when I wrote my calculator program? It would have made it alot easier. The calculator grew into a slightly different purpose though. it was for helping determine where to trim lines and quads at intersection points.
>
> The last formula had a typo, here it is corrected.
> z4=(-D -A.x4 - B.y4)/C
>
> Tore, I will email you the spreadsheet I put this information into.
>
> Paul
Sorry guys, just wanted to store this function in a safer place than my hard
drive. :)
I just don't want to remake it again...!
Feel free to copy/paste/edit/port if you need it!
/Tore
// calc_z4 by Tore Eriksson
// credits to Ronan Webb for the superb formula
double calc_z4(double x1,double y1,double z1,
double x2,double y2,double z2,
double x3,double y3,double z3,
double x4,double y4)
{
double a,b,c,minus_d,z4;
a = y1*(z2-z3) + y2*(z3-z1) + y3*(z1-z2);
b = z1*(x2-x3) + z2*(x3-x1) + z3*(x1-x2);
c = x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2);
minus_d = x1*(y2*z3-y3*z2) + x2*(y3*z1-y1*z3) + x3*(y1*z2-y2*z1);
z4 = (minus_d - a*x4 - b*y4)/c;
return z4;
}
| | | | | | | | | | | | | | | | | > // calc_z4 by Tore Eriksson
> // credits to Ronan Webb for the superb formula
> double calc_z4(double x1,double y1,double z1,
> double x2,double y2,double z2,
> double x3,double y3,double z3,
> double x4,double y4)
> {
> double a,b,c,minus_d,z4;
> a = y1*(z2-z3) + y2*(z3-z1) + y3*(z1-z2);
> b = z1*(x2-x3) + z2*(x3-x1) + z3*(x1-x2);
> c = x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2);
> minus_d = x1*(y2*z3-y3*z2) + x2*(y3*z1-y1*z3) + x3*(y1*z2-y2*z1);
> z4 = (minus_d - a*x4 - b*y4)/c;
> return z4;
> }
You also need a touch of code to catch when c=0 so that z4 is undefined ;)
Tim
| | | | | | | | | | | | | | | | |
| |
| In lugnet.cad.dev, Timothy Gould wrote:
// calc_z4 by Tore Eriksson
// credits to Ronan Webb for the superb formula
double calc_z4(double x1,double y1,double z1,
double x2,double y2,double z2,
double x3,double y3,double z3,
double x4,double y4)
{
double a,b,c,minus_d,z4;
a = y1*(z2-z3) + y2*(z3-z1) + y3*(z1-z2);
b = z1*(x2-x3) + z2*(x3-x1) + z3*(x1-x2);
c = x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2);
if(c==0)
{
err=11;
c=1;
}
minus_d = x1*(y2*z3-y3*z2) + x2*(y3*z1-y1*z3) + x3*(y1*z2-y2*z1);
z4 = (minus_d - a*x4 - b*y4)/c;
return z4;
}
>
> You also need a touch of code to catch when c=0 so that z4 is undefined ;)
>
> Tim
That shouldn't really be happening, unless someone enters a "triangle" that
isn't a triangle, for example with x1, x2, and x3 all = 0, or a line that isn't
referring to a polygon for some reason yet is processed as one.
Hmm, division by zero is not a thing to play with. I might add these 3 LOC's
anyway. Thanks for pointing this possible/hypothetical source of errors out.
/Tore
| | | | | | | | | | | | | | | | | In lugnet.cad.dev, Tore Eriksson wrote:
> That shouldn't really be happening, unless someone enters a "triangle" that
> isn't a triangle, for example with x1, x2, and x3 all = 0, or a line that isn't
> referring to a polygon for some reason yet is processed as one.
Actually, if the original triangle is (for example) in the Y-Z plane, then just
passing in an x4 that's different from x1, x2, and x3 will result in a failure.
The equivalent goes for an initial triangle in the X-Z plane.
--Travis
| | | | | | | | | | | | | | | | | In lugnet.cad.dev, Travis Cobbs wrote:
> In lugnet.cad.dev, Tore Eriksson wrote:
> > That shouldn't really be happening, unless someone enters a "triangle" that
> > isn't a triangle, for example with x1, x2, and x3 all = 0, or a line that isn't
> > referring to a polygon for some reason yet is processed as one.
>
> Actually, if the original triangle is (for example) in the Y-Z plane, then just
> passing in an x4 that's different from x1, x2, and x3 will result in a failure.
> The equivalent goes for an initial triangle in the X-Z plane.
>
> --Travis
True, but such triangles will not be visible in the 2-D front view of the UI and
therefor not clickable - unless the program is buggy. And if you can't click on
them, the function never has to encounter data from them. Hopefully...
/Tore
| | | | | | |