I want to efficiently compute weighted average of the whole cartesian plane with weight $\overline{r}(x,y)$
The definition of $\overline{r}(x,y)$ is the average radius of the closed region $\mathcal{C}$ from any point.
Suppose we have curve $\mathcal{C}$ and a ray, from point $\mathbf{p}$ rotating full circle at $\Delta \theta$ increments, while intersecting $\mathcal{C}$ at zero or more points. ( We will denote the intersections as $\left\{\mathbf{q}_i\right\}_{i=1}^{n}$ for $n$ intersections). If one or more intersections exist, $r_i = \sum\limits_{i=1}^{n} \|{\mathbf{q}_i}\mathbf - \mathbf p\|$, otherwise $r_i=0$.
Then as $\Delta \theta\to0$, the average radius function is $\overline{r}(\mathbf{p})=\left(\sum\limits_{i=1}^{n}r_i\right)/{n}$
For star shaped curves, with $\mathbf{p}$ inside the region, one can use an alternate and simpler definition
$$\overline{r}(\mathbf{p})=\frac1{2\pi}\oint_{\mathbf {q}_1\in\mathcal C}\|\mathbf {q}_1-\mathbf p\|\,\mathrm d\theta.$$
Thanks to @Rahul, I have a code that can implement $\overline{r}(x,y)$. For example, if $\mathcal{C}$ is defined by $x^2+y^2+\sin(4x)+\sin(4y)=4$
curve = DiscretizeRegion[
ImplicitRegion[
x^2+y^2+Sin[4*x]+Sin[4*y] == 4, {{x, -3, 3}, {y, -4, 4}}], {{-3, 3},
{-4, 4}}, AccuracyGoal -> 8]
q = MeshCoordinates[curve];
edges = First /@ MeshCells[curve, 1];
signedAngle[a_, b_] := Arg[(Complex @@ a)/(Complex @@ b)]
avgRadius[p_] :=
1/(2 \[Pi]) Abs[Sum[Module[{q1, q2, r, d\[Theta]}, q1 = q[[First@e]];
q2 = q[[Last@e]];
r = EuclideanDistance[p, (q1 + q2)/2];(*midpoint approximation*)
d\[Theta] = signedAngle[q1 - p, q2 - p];
r d\[Theta]], {e, edges}]]
avgRadius[{x, y}]
We can plot the contour of $\overline{r}(x,y)$ on $\mathcal{C}$.
f = ContourPlot[avgRadius[{x, y}], {x, -3, 3}, {y, -3, 3},
Exclusions -> None, Contours -> 100, PlotLegends -> Automatic]
Hence the weighted average over the entire cartesian plane is
$$\begin{array}{cc} {x_w=\frac{\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}x\overline{r}(x,y) \ dx \ dy }{\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}\overline{r}(x,y) \ dx \ dy}} & { y_w=\frac{\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}y\overline{r}(x,y) \ dx \ dy}{\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}\overline{r}(x,y) \ dx \ dy} }\end{array}$$
I know the integral converges, since as $\mathbf{p}$ moves further away from $\mathcal{C}$, the average radius approaches zero.
Unfortunately, I'm unable to accurately approximate the integral to $4$ decimal places using NIntegrate
under 35 minutes.
x_w=(NIntegrate[x*avgRadius[{x,y}],{x,-10,10},
{y,-10,10}])/(NIntegrate[avgRadius[{x,y}],{x,-10,10},{y,-10,10}])
y_w=(NIntegrate[y*avgRadius[{x,y}],{x,-10,10},{y,-10,10}])/(NIntegrate[avgRadius[{x,y}],{x,-10,10},{y,-10,10}])
How do I do accurately and efficiently approximate the weighted average of the $x$ and $y$-coordinates over the entire cartesian plane with weights $\overline{r}(x,y)$?
"Accurately" means the error should be less than .00001. "Efficently" means computing the integral under $15$ minutes? I am unable to do so using NIntegrate