2010-03-10 20 views
6

Sé que Matlab tiene una función llamada cilindro para crear los puntos de un cilindro cuando el número de puntos a lo largo de la circunferencia y la longitud del radio. ¿Qué ocurre si no quiero un cilindro de la unidad y tampoco quiero que se centre en el eje predeterminado (por ejemplo, a lo largo del eje z)? ¿Cuál sería el enfoque más fácil para crear un cilindro de este tipo? Gracias por adelantado.Crear un cilindro con un eje centrado diferente

Respuesta

11

La respuesta anterior está muy bien, pero se puede obtener MATLAB para hacer la mayoría del trabajo para usted (porque los resultados de cylinderx,y,z componentes separados que necesitan trabajar un poco para hacer la multiplicación de matrices para la rotación). Para que el centro de la base del cilindro en [x0 y0 z0], escalado por [xf yf xf] (xf=yf uso a menos que desee un cilindro elíptico), utilice:

[x y z] = cylinder; 
h=mesh(x*xf+x0,y*yf+y0,z*zf+z0) 

Si también desea girar para que no se alinea a lo largo del eje z, use rotate. Por ejemplo, para girar alrededor de x-axis por 90 grados, por lo que está alineado a lo largo del eje y, utilice:

rotate(h,[1 0 0],90) 
+0

+1 para la mejor solución en términos específicos de matlab. –

+0

+1 en mi extremo también. Gracias. – stanigator

+0

Una nota más. ¿Cómo recupero los puntos de h una vez que he creado la malla y giro usando las funciones de Matlab? – stanigator

5

Multiplica los puntos por tu combinación favorita de scaling matrix, translation matrix y rotation matrix.

+0

Gracias. Eso es realmente lo que hice de alguna manera, aunque podría hacerse de forma más elegante usando las matrices mencionadas. – stanigator

+0

+1 para una buena forma general de lograr cualquier transformación. – Ramashalanka

Cuestiones relacionadas