Есть две основные категории решений, которые вы можете попробовать. Одним из них является точный аналитический подход: вычислите точную дробную область f
бина (a,b)
, которая перекрывает бин (x,y)
, затем просто суммируйте f*p(a,b)
для всех перекрывающихся a
и b
для этого бина получить p(x,y)
. (Если ячейки a,b
имеют разный размер, вместо этого вы должны найти фактическую площадь и разделить ее на площадь ячейки (x,y)
.) Если уравнения для границ корзин достаточно просты, это должно быть относительно простой, но немного утомительный.
Другая категория сглаживание , тот же метод, который используется в компьютерной графике. По сути, вы заменяете весь контейнер в (a,b)
набором точек, расположенных на равном расстоянии друг от друга, и перетаскиваете эти точки в плоскость x,y
и добавляете их в контейнер, содержащий это значение. Так, например, с сглаживанием 4 вы могли бы представить массив точек (a+3/8,b+3/8)
, (a+1/8,b+3/8)
, (a-1/8,b+3/8)
, ..., каждая из которых содержала 1/16 от значения (a,b)
bin; Затем вы найдете, где каждое из этих 16 мест попадет на плоскость x,y
, и добавите это 1/16-е значение к каждому бинку.
(Стохастические решения также существуют, но для вашей задачи они приведут к большим ошибкам и потребуют больше времени для вычислений.)