1 votos

Utilice el método de Monte Carlo para calcular el volumen de intersección de una caja rectangular y un cilindro

Existen una caja rectangular y un cilindro en un espacio 3D. Sus tamaños, ubicaciones y orientaciones son arbitrarios. Pueden o no intersectarse entre sí. Si se intersectan entre sí, teóricamente, el volumen de la parte de su intersección puede expresarse como una integración 3D sobre una región 3D complicada. En general, es muy difícil evaluar esta integración analíticamente. Por lo tanto, necesito usar el método de Monte Carlo para estimar esta integración y obtener un resultado aproximado del volumen de la parte de intersección.

Una caja rectangular y un cilindro en el espacio 3D enter image description here

Una caja rectangular se describe por sus ocho vértices P1, P2, ..., P8. Un cilindro se describe por los dos puntos centrales C1 y C2 de sus caras superior e inferior y el radio de círculo R de su cara inferior. enter image description here

Parámetros dados a continuación:

P1: (0.000000e+00, 0.000000e+00, 0.000000e+00) 
P2: (1.326481e-02, 8.673519e-01, 4.975186e-01) 
P3: (1.011938e+00, 8.806167e-01, 4.477667e-01) 
P4: (9.986735e-01, 1.326481e-02, -4.975186e-02) 
P5: (4.975186e-02, -4.975186e-01, 8.660254e-01) 
P6: (6.301667e-02, 3.698333e-01, 1.363544e+00) 
P7: (1.061690e+00, 3.830981e-01, 1.313792e+00) 
P8: (1.048425e+00, -4.842538e-01, 8.162735e-01) 
C1: (5.557210e-01, -5.721025e-02, 1.089909e+00) 
C2: (5.059692e-01, 4.403083e-01, 2.238834e-01) 
R: 1.000000e+00 

Me encantaría recibir algunas pistas sobre cómo elaborar expresiones matemáticas y código de matlab para resolver la pregunta.

1voto

Andrei Puntos 111

Supongo que conoces algunas notaciones vectoriales. Dados tus puntos $\vec{P_i}$, el volumen de la caja rectangular es (https://en.wikipedia.org/wiki/Triple_product) $$V=[(\vec{P_4}-\vec{P_1})\times(\vec{P_2}-\vec{P_1})]\cdot (\vec{P_5}-\vec{P_1})$$ Generas puntos dentro de este volumen de la siguiente manera: para cada punto generas tres números aleatorios entre $0$ y $1$, digamos $p,q,r$. Las coordenadas $x,y,z$ de tu punto $\vec R_i$ vienen dadas por $$\vec R_i=(x,y,z)=(\vec{P_4}-\vec{P_1})p+(\vec{P_2}-\vec{P_1})q +(\vec{P_5}-\vec{P_1})r$$

Sabes que todos los $\vec R_i$ están dentro de la caja rectangular, ahora necesitas verificar si también están en el cilindro. Para eso, el primer paso es calcular el ángulo entre el eje del cilindro y la posición del punto con respecto a uno de los puntos centrales. Usaré $\vec{C_1}$. El coseno del ángulo es $$\cos\theta_1=\frac{(\vec{R_i}-\vec{C_1})\cdot(\vec{C_2}-\vec{C_1})}{\sqrt{(\vec{R_i}-\vec{C_1})\cdot(\vec{R_i}-\vec{C_1})}{\sqrt{(\vec{C_2}-\vec{C_1})\cdot(\vec{C_2}-\vec{C_1})}}}$$ De manera similar, puedes calcular $\cos\theta_2$. A partir de cualquiera de estos, la distancia desde el $\vec R_i$ hasta el eje del cilindro es, por ejemplo, $$d=|\vec{R_i}-\vec{C_1}||\sin\theta_1|$$ Las condiciones para que el punto esté dentro del cilindro son $d

El último paso es repetir el procedimiento con un gran número de puntos, digamos $N$, y contar cuántos puntos están en el cilindro, digamos $M$. El volumen de la intersección está dado por $$V_{int}=V\frac{M}{N}$$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X