A plane problem

Started by
5 comments, last by luca-deltodesco 12 years, 11 months ago
We have two known points, A and B, that lie on the plane.

Point C is known, and lies a known distance D in front of the plane.

What is the plane equation?

10x Faster Performance for VR: www.ultraengine.com

Advertisement
There are infinitely many, independant solutions to your problem.


it's easy to see this visually, if not consider:

choose 'any' unit vector 'n' for the plane normal, then the plane formed by the 3 points A, B, C - Dn is a solution to your problem.
I think it's unambiguous, but I might have left something out in my description. Ah, you just "got" it and deleted your response! :lol:

10x Faster Performance for VR: www.ultraengine.com


I think it's unambiguous, but I might have left something out in my description. Ah, you just "got" it and deleted your response! :lol:


I don't think there is enough information there to get the plane normal; you've only got one vector on the plane and a distance which is known to be in the direction of the normal?

Cheers, Paul.
wolfram alpha gives us a ... very long solution!

clearly the unit - normal of the plane you want is such that:

A dot n = B dot n = C dot n - D

or to have less variables:

(C-A) dot n = (C-B) dot n = D

in the wolfram alpha query, i have that (a,b,c) = C-A, and (A,B,C) = C-B, with (x,y,z) being our normal for the plane.
the result... is horrible (though there are many many common terms that could be extracted to shorten the solutions)


The 2 solutions
I have to run to work so don't have the full derivation. However, assume a point E is the point in the plane that's distance D from C. I assume that your description of C means the vector E-C is perpendicular to the plane.

Form the plane normal N = Normalize( (E-A)cross(E-B) ). N will be in terms of unknowns E[sub]x[/sub], E[sub]y[/sub], E[sub]z[/sub].

E-C = D*N (i.e, length of E-C = D)

E[sub]x[/sub] - C[sub]x[/sub] = D*N[sub]x[/sub]
E[sub]y[/sub] - C[sub]y[/sub] = D*N[sub]y[/sub]
E[sub]z[/sub] - C[sub]z[/sub] = D*N[sub]z

[/sub]3 equations with 3 unknowns.

EDIT: Actually, you do have to specify that the points A and B, and the point in the plane nearest point C, are not colinear in the plane.

Please don't PM me with questions. Post them in the forums for everyone's benefit, and I can embarrass myself publicly.

You don't forget how to play when you grow old; you grow old when you forget how to play.

If I can describe arbitrary cases like this with four fingers, the math must be there. :lol:

Oh well.

10x Faster Performance for VR: www.ultraengine.com

the wolfram alpha query can be made a bit more manageable by not enforcing a unit normal (can do that as a post-step anyways)
in which case you get the (still very long, but clearly simpler) solution sets:


2 Solution sets


the only potential issue is that you need to choose the z-coordinate for the normal, so in corner cases you might require z to be zero, and others non-zero to get a solution.

This topic is closed to new replies.

Advertisement