Skip to main content
simplified phrasing
Source Link
user44143
user44143

Question about method for finding Finding a point inside of a surface

I have some data that I am using to generate a triangulation of a surface without boundary in $\mathbb{R}^3$. The The triangulation gives each triangle a unit normal pointing outwards for each triangle. I need to find some point in the interior of the surface.

I will outline my general strategy. I let $V$ denote the set of vertices of the triangulation and compute a number that I will call the fineness $$ \delta = \min_{x, y \in V \mid x\neq y} \lVert x-y\rVert. $$ I pick some vertex $v$ and consider the point $$ p = v -\frac{\delta}{4}u, $$ where $u$ is some unit vector. It is possible to show that $p$ is closer to $v$ than any other vertex in the triangulation, so it suffices to choose $u$ such that it lies below all of the triangles containing $v$.

If $i$ indexes the triangles containing $v$ as a vertex and $n_i$ is the outer normal of the triangle $i$, choosing $u$ such that $\langle u, n_i\rangle >0$ for all $i$ will put $p$ below the surface.

We can map this onto a linear algebra problem by writing $u$ as a weighted combination of the outer normals: $u = \sum_i w_i n_i$. If all of the inner products of the outer normals were non-negative, we could solve this by taking the $w_i$ to be the components of the Perron–Frobenius eigenvector of the matrix $A_{i,j} = \langle n_i, n_j\rangle$. However, the surface can have regions of high curvature, so $A$ is not always non-negative.

A natural notion of the normal at $v$ is the angle weighted averaged of the normals. This lead me to try taking $w_i = \theta_i$, where $\theta_i$ is angle of the triangle $i$ at $v$. However, this alone does not guarantee $\langle u, n_i \rangle > 0$ for all $i$. This seems like some iterative approach is needed, where the weights corresponding to positive inner products should be decreased and those corresponding to non-positive ones should increase. I think one strategy should be to add to the weights of non-positive terms and then normalize all of the weights so that $\sum_i w_i = 1$. If all inner products are positive, we terminate the iterative procedure. Of course, we would have to make $u$ a unit vector at the end of this.

My questions are as follows.: Am I on the right track? Is there a simpler approach that I am missing? If I am on the right track, what update rule should I choose for the weights that guaranteeswill guarantee convergence?

Edit: The shapes that I am working with are definitely not convex. The data points are from intestinal organoids, which can roughly be shaped like octopi holding broccoli.

Question about method for finding a point inside of a surface

I have some data that I am using to generate a triangulation of a surface without boundary in $\mathbb{R}^3$. The triangulation gives each triangle a unit normal pointing outwards. I need to find some point in the interior of the surface.

I will outline my general strategy. I let $V$ denote the set of vertices of the triangulation and compute a number that I will call the fineness $$ \delta = \min_{x, y \in V \mid x\neq y} \lVert x-y\rVert. $$ I pick some vertex $v$ and consider the point $$ p = v -\frac{\delta}{4}u, $$ where $u$ is some unit vector. It is possible to show that $p$ is closer to $v$ than any other vertex in the triangulation, so it suffices to choose $u$ such that it lies below all of the triangles containing $v$.

If $i$ indexes the triangles containing $v$ as a vertex and $n_i$ is the outer normal of the triangle $i$, choosing $u$ such that $\langle u, n_i\rangle >0$ for all $i$ will put $p$ below the surface.

We can map this onto a linear algebra problem by writing $u$ as a weighted combination of the outer normals: $u = \sum_i w_i n_i$. If all of the inner products of the outer normals were non-negative, we could solve this by taking the $w_i$ to be the components of the Perron–Frobenius eigenvector of the matrix $A_{i,j} = \langle n_i, n_j\rangle$. However, the surface can have regions of high curvature, so $A$ is not always non-negative.

A natural notion of the normal at $v$ is the angle weighted averaged of the normals. This lead me to try taking $w_i = \theta_i$, where $\theta_i$ is angle of the triangle $i$ at $v$. However, this alone does not guarantee $\langle u, n_i \rangle > 0$ for all $i$. This seems like some iterative approach is needed, where the weights corresponding to positive inner products should be decreased and those corresponding to non-positive ones should increase. I think one strategy should be to add to the weights of non-positive terms and then normalize all of the weights so that $\sum_i w_i = 1$. If all inner products are positive, we terminate the iterative procedure. Of course, we would have to make $u$ a unit vector at the end of this.

My questions are as follows. Am I on the right track? Is there a simpler approach that I am missing? If I am on the right track, what update rule should I choose for the weights that guarantees convergence?

Edit: The shapes that I am working with are definitely not convex. The data points are from intestinal organoids, which can roughly be shaped like octopi holding broccoli.

Finding a point inside a surface

I have a triangulation of a surface without boundary in $\mathbb{R}^3$. The triangulation gives a unit normal pointing outwards for each triangle. I need to find some point in the interior of the surface.

I will outline my general strategy. I let $V$ denote the set of vertices of the triangulation and compute a number that I will call the fineness $$ \delta = \min_{x, y \in V \mid x\neq y} \lVert x-y\rVert. $$ I pick some vertex $v$ and consider the point $$ p = v -\frac{\delta}{4}u, $$ where $u$ is some unit vector. It is possible to show that $p$ is closer to $v$ than any other vertex in the triangulation, so it suffices to choose $u$ such that it lies below all of the triangles containing $v$.

If $i$ indexes the triangles containing $v$ as a vertex and $n_i$ is the outer normal of the triangle $i$, choosing $u$ such that $\langle u, n_i\rangle >0$ for all $i$ will put $p$ below the surface.

We can map this onto a linear algebra problem by writing $u$ as a weighted combination of the outer normals: $u = \sum_i w_i n_i$. If all of the inner products of the outer normals were non-negative, we could solve this by taking the $w_i$ to be the components of the Perron–Frobenius eigenvector of the matrix $A_{i,j} = \langle n_i, n_j\rangle$. However, the surface can have regions of high curvature, so $A$ is not always non-negative.

A natural notion of the normal at $v$ is the angle weighted averaged of the normals. This lead me to try taking $w_i = \theta_i$, where $\theta_i$ is angle of the triangle $i$ at $v$. However, this alone does not guarantee $\langle u, n_i \rangle > 0$ for all $i$. This seems like some iterative approach is needed, where the weights corresponding to positive inner products should be decreased and those corresponding to non-positive ones should increase. I think one strategy should be to add to the weights of non-positive terms and then normalize all of the weights so that $\sum_i w_i = 1$. If all inner products are positive, we terminate the iterative procedure. Of course, we would have to make $u$ a unit vector at the end of this.

My questions are: Am I on the right track? Is there a simpler approach? If I am on the right track, what update rule for the weights will guarantee convergence?

Edit: The shapes that I am working with are definitely not convex. The data points are from intestinal organoids, which can roughly be shaped like octopi holding broccoli.

removed capitals from title
Link
YCor
  • 63.9k
  • 5
  • 187
  • 285

Question about Methodmethod for Findingfinding a Pointpoint inside of a Surfacesurface

TeX
Source Link
LSpice
  • 12.9k
  • 4
  • 45
  • 69

I have some data that I am using to generate a triangulation of a surface without boundary in $\mathbb{R}^3$. The triangulation gives each triangle a unit normal pointing outwards. I need to find some point in the interior of the surface.

I will outline my general strategy. I let $V$ denote the set of vertices of the triangulation and compute a number that I will call the fineness $$ \delta = \text{min}_{x, y \in V| x\neq y} ||x-y||. $$$$ \delta = \min_{x, y \in V \mid x\neq y} \lVert x-y\rVert. $$ I pick some vertex $v$ and consider the point $$ p = v -\frac{\delta}{4}u, $$ where $u$ is some unit vector. It is possible to show that $p$ is closer to $v$ than any other vertex in the triangulation, so it suffices to choose $u$ such that it lies below all of the triangles containing $v$.

If $i$ indexes the triangles containing $v$ as a vertex and $n_i$ is the outer normal of the triangle $i$, choosing $u$ such that $\langle u, n_i\rangle >0$ for all $i$ will put $p$ below the surface.

We can map this onto a linear algebra problem by writing $u$ as a weighted combination of the outer normals: $u = \sum_i w_i n_i$. If all of the inner products of the outer normals were non-negative, we could solve this by taking the $w_i$ to be the components of the Perron-FrobeniusPerron–Frobenius eigenvector of the matrix $A_{i,j} = \langle n_i, n_j\rangle$. However, the surface can have regions of high curvature, so $A$ is not always non-negative.

A natural notion of the normal at $v$ is the angle weighted averaged of the normals. This lead me to try taking $w_i = \theta_i$, where $\theta_i$ is angle of the triangle $i$ at $v$. However, this alone does not guarantee $\langle u, n_i \rangle > 0$ for all $i$. This seems like some iterative approach is needed, where the weights corresponding to positive inner products should be decreased and those corresponding to non-positive ones should increase. I think one strategy should be to add to the weights of non-positive terms and then normalize all of the weights so that $\sum_i w_i = 1$. If all inner products are positive, we terminate the iterative procedure. Of course, we would have to make $u$ a unit vector at the end of this.

My questions are as follows. Am I on the right track? Is there a simpler approach that I am missing? If I am on the right track, what update rule should I choose for the weights that guarantees convergence?

Edit: The shapes that I am working with are definitely not convex. The data points are from intestinal organoids, which can roughly be shaped like octopi holding broccoli.

I have some data that I am using to generate a triangulation of a surface without boundary in $\mathbb{R}^3$. The triangulation gives each triangle a unit normal pointing outwards. I need to find some point in the interior of the surface.

I will outline my general strategy. I let $V$ denote the set of vertices of the triangulation and compute a number that I will call the fineness $$ \delta = \text{min}_{x, y \in V| x\neq y} ||x-y||. $$ I pick some vertex $v$ and consider the point $$ p = v -\frac{\delta}{4}u, $$ where $u$ is some unit vector. It is possible to show that $p$ is closer to $v$ than any other vertex in the triangulation, so it suffices to choose $u$ such that it lies below all of the triangles containing $v$.

If $i$ indexes the triangles containing $v$ as a vertex and $n_i$ is the outer normal of the triangle $i$, choosing $u$ such that $\langle u, n_i\rangle >0$ for all $i$ will put $p$ below the surface.

We can map this onto a linear algebra problem by writing $u$ as a weighted combination of the outer normals: $u = \sum_i w_i n_i$. If all of the inner products of the outer normals were non-negative, we could solve this by taking the $w_i$ to be the components of the Perron-Frobenius eigenvector of the matrix $A_{i,j} = \langle n_i, n_j\rangle$. However, the surface can have regions of high curvature, so $A$ is not always non-negative.

A natural notion of the normal at $v$ is the angle weighted averaged of the normals. This lead me to try taking $w_i = \theta_i$, where $\theta_i$ is angle of the triangle $i$ at $v$. However, this alone does not guarantee $\langle u, n_i \rangle > 0$ for all $i$. This seems like some iterative approach is needed, where the weights corresponding to positive inner products should be decreased and those corresponding to non-positive ones should increase. I think one strategy should be to add to the weights of non-positive terms and then normalize all of the weights so that $\sum_i w_i = 1$. If all inner products are positive, we terminate the iterative procedure. Of course, we would have to make $u$ a unit vector at the end of this.

My questions are as follows. Am I on the right track? Is there a simpler approach that I am missing? If I am on the right track, what update rule should I choose for the weights that guarantees convergence?

Edit: The shapes that I am working with are definitely not convex. The data points are from intestinal organoids, which can roughly be shaped like octopi holding broccoli.

I have some data that I am using to generate a triangulation of a surface without boundary in $\mathbb{R}^3$. The triangulation gives each triangle a unit normal pointing outwards. I need to find some point in the interior of the surface.

I will outline my general strategy. I let $V$ denote the set of vertices of the triangulation and compute a number that I will call the fineness $$ \delta = \min_{x, y \in V \mid x\neq y} \lVert x-y\rVert. $$ I pick some vertex $v$ and consider the point $$ p = v -\frac{\delta}{4}u, $$ where $u$ is some unit vector. It is possible to show that $p$ is closer to $v$ than any other vertex in the triangulation, so it suffices to choose $u$ such that it lies below all of the triangles containing $v$.

If $i$ indexes the triangles containing $v$ as a vertex and $n_i$ is the outer normal of the triangle $i$, choosing $u$ such that $\langle u, n_i\rangle >0$ for all $i$ will put $p$ below the surface.

We can map this onto a linear algebra problem by writing $u$ as a weighted combination of the outer normals: $u = \sum_i w_i n_i$. If all of the inner products of the outer normals were non-negative, we could solve this by taking the $w_i$ to be the components of the Perron–Frobenius eigenvector of the matrix $A_{i,j} = \langle n_i, n_j\rangle$. However, the surface can have regions of high curvature, so $A$ is not always non-negative.

A natural notion of the normal at $v$ is the angle weighted averaged of the normals. This lead me to try taking $w_i = \theta_i$, where $\theta_i$ is angle of the triangle $i$ at $v$. However, this alone does not guarantee $\langle u, n_i \rangle > 0$ for all $i$. This seems like some iterative approach is needed, where the weights corresponding to positive inner products should be decreased and those corresponding to non-positive ones should increase. I think one strategy should be to add to the weights of non-positive terms and then normalize all of the weights so that $\sum_i w_i = 1$. If all inner products are positive, we terminate the iterative procedure. Of course, we would have to make $u$ a unit vector at the end of this.

My questions are as follows. Am I on the right track? Is there a simpler approach that I am missing? If I am on the right track, what update rule should I choose for the weights that guarantees convergence?

Edit: The shapes that I am working with are definitely not convex. The data points are from intestinal organoids, which can roughly be shaped like octopi holding broccoli.

added 175 characters in body
Source Link
Loading
Source Link
Loading