|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Given my light source position (P1) and the center of my scene (P2), how do I
define the vectors of an area light?
TIA
Steven
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"stevenvh" <nomail@nomail> wrote:
> Given my light source position (P1) and the center of my scene (P2), how do I
> define the vectors of an area light?
.... er, that is, if I want the area light perpendicular with P2-P1.
Steven
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"stevenvh" <nomail@nomail> wrote in message
news:web.4a1594d11e27adc7c0721a1d0@news.povray.org...
> Given my light source position (P1) and the center of my scene (P2), how
> do I
> define the vectors of an area light?
> TIA
> Steven
If it's a circular area light and it meets the constraints listed in the
help then you might be able to simply use the orient keyword.
Otherwise you can calculate two vectors that are perpendicular to (P2-P1).
There are quite a few approaches that could do the job, so someone may well
have a simpler method, but you can get a vector that's at right angles to
P2-P1 and then get another that's at right angles to the two you've then got
by using macros from the 'math.inc' include file that comes with POV-Ray:
#declare Vector1 = VPerp_To_Vector(P2-P1);
#declare Vector2 = VPerp_To_Plane(Vector1, P2-P1);
This assumes P1 isn't directly above or below P2.
That will give you unit length vectors that you'll need to multiply by
whatever factors you want for the area light size.
If your area light is non-square you may want one of those vectors to be
horizontal in which case you could use:
#declare IntermediaryHorizontalVector = VProject_Plane(P2-P1,y);
#declare Vector1 = VPerp_To_Plane(P2-P1,IntermediaryHorizontalVector);
#declare Vector2 = VPerp_To_Plane(Vector1, P2-P1);
(Look out for syntax errors and other typos 'cause I didn't run this through
POV-Ray to check the code at all.)
Regards,
Chris B.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"stevenvh" <nomail@nomail> wrote:
> "stevenvh" <nomail@nomail> wrote:
> > Given my light source position (P1) and the center of my scene (P2), how do I
> > define the vectors of an area light?
>
> .... er, that is, if I want the area light perpendicular with P2-P1.
>
> Steven
Assuming that you don't intend to use the "orient" keyword, you can compute the
X and Y of the are light source as follows:
(1) choose an "Up" vector you want your area light Y to be "as close as
possible" to, e.g.
#declare Up = <0,1,0>;
(Make sure your "Up" vector is not parallel to P2-P1, or the following steps
will give you mashed potatoes.)
(2) choose your area light's "X" vector to be perpendicular to the direction
P2-P1 and the Up vector:
#declare AreaLightX = vnormalize(vcross(P2-P1, Up)) * AreaLightSize;
(3) choose your area light's "Y" vector to be perpendicular to the direction
P2-P1 and the X vector:
#declare AreaLightY = vnormalize(vcross(P2-P1, X)) * AreaLightSize;
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|