Przykładowy kod filtru w C#:
public class BoxFilter : Filter
{
public override double Ray
{
get
{
return 0.5;
}
}
public override double Evaluate(double a_value)
{
a_value = Math.Abs(a_value);
if (a_value >= 0.5)
return 0;
if (a_value < -0.5)
return 0;
return 1;
}
}
Box w przeciwieństwie do innych filtrów nie ma na brzegach wartości zerowych. Stąd by uniknąć by promień przy samplowaniu 1x1 (szczególnie Jitter) nie był uwzględniany w dwóch sąsiednich pikselach punkt z jednego brzegu uwzględniamy, z drugiego nie. Lewy brzeg jest domknięty, prawy nie. Taki sposób domknięcia bardziej naturalnie współgra z zaokrąglaniem liczb. Dla samplowania Grid domknięcie przedziałów nie ma znaczenia bo zawsze pobieramy wartość ze środków.
Brak komentarzy:
Prześlij komentarz