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