| 1 |
greg |
1.1 |
{ |
| 2 |
|
|
Compute distribution on ceiling or wall of cove lighting |
| 3 |
|
|
system employing linear fixtures. |
| 4 |
|
|
|
| 5 |
|
|
10Feb91 Greg Ward |
| 6 |
|
|
|
| 7 |
|
|
This is the closed-form solution to the integral of |
| 8 |
|
|
illumination from a one-dimensional extended source. |
| 9 |
|
|
Solution assumes that both fixture endpoints are in front |
| 10 |
|
|
of surface element -- negative values may result if this |
| 11 |
|
|
assumption is wrong! |
| 12 |
|
|
|
| 13 |
|
|
Multiply cove_mult by radiant flux per unit source length |
| 14 |
|
|
times cove surface reflectance. To account for interreflection |
| 15 |
|
|
with room surfaces, multiply this value by 1/(1-RcRr), where |
| 16 |
|
|
Rc is the average ceiling reflectance and Rr is the average |
| 17 |
|
|
reflectance of the floor and walls (biased towards the floor). |
| 18 |
|
|
|
| 19 |
|
|
A1-A6 - Begin and end point coord's of first fixture |
| 20 |
|
|
A7-A12, A13-A18, ... - Coord's for second, third, ... fixtures |
| 21 |
|
|
} |
| 22 |
|
|
|
| 23 |
|
|
cove_mult = cove_sum(arg(0)/6, 1); |
| 24 |
|
|
|
| 25 |
|
|
cove_sum(n, i0) = if(n-.5, |
| 26 |
|
|
cove_coef( |
| 27 |
|
|
(arg(i0)-Px)*Nx |
| 28 |
|
|
+(arg(i0+1)-Py)*Ny |
| 29 |
|
|
+(arg(i0+2)-Pz)*Nz, |
| 30 |
|
|
(arg(i0+3)-arg(i0))*Nx |
| 31 |
|
|
+(arg(i0+4)-arg(i0+1))*Ny |
| 32 |
|
|
+(arg(i0+5)-arg(i0+2))*Nz, |
| 33 |
|
|
sq(arg(i0)-Px) |
| 34 |
|
|
+sq(arg(i0+1)-Py) |
| 35 |
|
|
+sq(arg(i0+2)-Pz), |
| 36 |
|
|
(Px-arg(i0))*(arg(i0+3)-arg(i0)) |
| 37 |
|
|
+(Py-arg(i0+1))*(arg(i0+4)-arg(i0+1)) |
| 38 |
|
|
+(Pz-arg(i0+2))*(arg(i0+5)-arg(i0+2)), |
| 39 |
|
|
sq(arg(i0+3)-arg(i0)) |
| 40 |
|
|
+sq(arg(i0+4)-arg(i0+1)) |
| 41 |
|
|
+sq(arg(i0+5)-arg(i0+2))) |
| 42 |
|
|
+ cove_sum(n-1, i0+6), |
| 43 |
|
|
0); |
| 44 |
|
|
|
| 45 |
|
|
cove_coef(a, b, g, h, k) = 1/Sqrt(g*k-h*h)/(2*PI*PI*PI) |
| 46 |
|
|
*( (a*k+b*h)/Sqrt(g*k-h*h) |
| 47 |
|
|
*(atan((k-h)/Sqrt(g*k-h*h))+atan(h/Sqrt(g*k-h*h))) |
| 48 |
|
|
+ (a*k+b*h-a*h-b*g)/(k-2*h+g) |
| 49 |
|
|
+ (a*h+b*g)/g ); |