Problem
So you are interested in taking advantage ON_Light::Attenuation
in your render plugin, and you need to clarify how you can use it. Is the input vector supposed to represent the distance over which you want the light to attenuate to zero?
Solution
Light attenuation determines how fast the light intensity decreases with distance from objects.
The three coefficients to light attenuation are:
- Constant attenuation ( $$C$$)
- Linear attenuation ( $$L$$)
- Quadratic attenuation ( $$Q$$)
Thus, you could create the input vector as follows:
ON_3dVector attenuation( C, L, Q );
NOTE: Rhino’s user interface only uses constant attenuation so that adding a light reveals everything, no matter how far away the light source is from any given piece of geometry.
Types of Attenuation
Constant
If you want constant attenuation, or:
$$1 \over C$$then both $$L$$ and $$Q$$ must be $$0$$ and $$C > 0$$ (usually $$= 1.0$$).
Linear
If you want linear attenuation:
$$1 \over C + dL$$where $$d$$ = distance to light, then $$C$$ and $$L$$ vary and $$Q$$ must be $$0$$.
Quadratic
If you want quadratic attenuation:
$$1 \over C + dL + d^{2Q}$$then all 3 coefficients can and should vary.