Matlab - Punto de interseccion entre una funcion cualquiera y una o varias rectas verticales

 
Vista:
sin imagen de perfil
Val: 25
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Punto de interseccion entre una funcion cualquiera y una o varias rectas verticales

Publicado por Junior (12 intervenciones) el 08/04/2020 02:00:51
Buenas, estoy desarrollando un programa para calcular el primer momento de area de cualquier seccion, pero se me presento un problema, y es que necesito saber los puntos de interseccion que hay entre una funcion cualquiera y una o varias lineas verticales. Para el caso de dos funciones no seria complicado, pero una linea vertical no representa una funcion y hasta ahora no se me ocurre como hacerlo. Las lineas verticales representarian las lineas verticales de la forma de una seccion de viga , y pues yo ya localize el centroide del area, entonces defino una funcion constante (una linea horizontal) que cortara a las lineas verticales de la seccion y necesito saber las coordenas "x" de los puntos de corte para poder continuar porque la coordenada "y" ya la tengo pues es la misma que la del centroide. Porfavor, si a alguien se le ocurre algo, le estaria muy agradecido.
Adjunto una imagen por si no me explique bien. GRACIAS.
matlab
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Punto de interseccion entre una funcion cualquiera y una o varias rectas verticales

Publicado por Daniel (354 intervenciones) el 08/04/2020 11:52:19
A ver, algunas veces parece que las cosas sencillas son las más complicadas. Una línea recta horizontal es una curva con pendiente igual a cero, o una constante.

f(x) = 0 * x + c = c

Así, si tenemos una recta con la que se desea obtener el punto de intersección la solución es el sistema de ecuaciones

y = a + b x
y = c

Los puntos de intersección son:

x = (c – a) / b
y = c

Solo hay problema si tienes b=0, es decir, si las dos líneas son horizontales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Punto de interseccion entre una funcion cualquiera y una o varias rectas verticales

Publicado por Junior (12 intervenciones) el 08/04/2020 13:16:04
Gracias por responder Daniel, pero básicamente lo que necesito en la intersección de la línea horizontal amarilla con las dos líneas verticales azules. Una recta vertical no representa una función, por lo que no puedo usar lo que dices. Yo solo dispongo de las coordenadas de los puntos de la sección I de azul ( definidos por el usurario) y las coordenadas del centroide por donde hago pasar una función constante (línea horizontal) igual a la ordenada del centroide en el rango de x min y x Max que entró el usuario. Así es que obtengo la figura de arriba, Ahora para seguir necesito las coordenadas de los puntos de intersección entre la línea horizontal (función)y en este caso las dos líneas verticales(no son funciones) , pues podrían ser más o menos para otro tipo de secciones como las C, T , L etc. Parece sencillo como dices pero hasta ahora no se me ocurre nada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Punto de interseccion entre una funcion cualquiera y una o varias rectas verticales

Publicado por Daniel (354 intervenciones) el 08/04/2020 14:26:36
Lo más fácil, una línea vertical infinita se pude describir con la ecuación

x = a

y la horizontal con

y = b

Así el punto de intersección de estas dos líneas es el punto [a,b]. Si no son infinitas solo hay que tener en cuenta que solo existe el punto cuando la posición de una curca cae en el rango de definición de una curva.

Es decir, si la línea vertical esta definida entre y1 e y2 existe un punto de intersección si y1 <= b <= y2, siempre que y1 < y2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Punto de interseccion entre una funcion cualquiera y una o varias rectas verticales

Publicado por Junior (12 intervenciones) el 08/04/2020 15:17:06
matlab2

Gracias por responder denuevo Daniel pero mira. En la imagen que adjunte, el poligono de azul representa la forma de la seccion que el usuario quiere analizar. Entonces como entrada solo pido las coordenadas de ese poligono (representado por los circulos negros), que son ingresadas por el usuario en forma de dos vectores correspondientes a las abcisas y las ordenadas como se ve en el Comand Window. Luego atravez de un algoritmo determino el centroide (representado por el circulo verde de la imagen) de la forma del poligono que el usuario dibujo atravez de coordenadas. Una vez ubicado el centroide, utilizo su ordenada para definir una funcion constante(representado por la linea naranja) que atraviese el poligono con los limites de la abcisa mayor y menor que ingreso el usuario. Ahi me quedo, pues necesito los puntos de interseccion(representado por los circulos rojos) que habran entre la funcion constante generada apartir del centroide y todas las lineas verticales que la corten, en este caso solo 2.
Si utilizara lo que dices,definiendo una linea vertical por cada abcisa que ingreso el usuario, obtendria 4 puntos de corte, pero como ves solo hay dos. Si se te ocurre algo avisame porfavor o si no entiendes algo tambien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Punto de interseccion entre una funcion cualquiera y una o varias rectas verticales

Publicado por Daniel (354 intervenciones) el 08/04/2020 20:00:20
Pues simplemente es buscar el rango:

1
2
3
4
5
6
7
8
9
x = [0 200, 200, 150, 150, 200, 0, 0, 50, 50, 0];
y = [0, 0, 12, 12, 138, 138, 150, 150, 138, 138, 12, 12];
c = 75;
 
% En sentido creciente
x(y(1:end-1) < c & y(2:end) > c)
 
% En sentido decreciente
x(y(1:end-1) > c & y(2:end) < c)

Entiendo que se busca en el valor 50 y 150.

Obviamente solo funciona si las curvas son verticales, sino toma el punto de inicio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 25
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Punto de interseccion entre una funcion cualquiera y una o varias rectas verticales

Publicado por Junior (12 intervenciones) el 08/04/2020 20:57:28
Bueno si son los valores que buscaba pero no entiendo muy bien porque estableces un rango de valores al momento de comparar. Yo necesito repetir el codigo en un bucle pues se realizara varias veces para obtener distintos valores del primer momento de area y ademas tiene que funcionar para cualquier forma de poligono. Osea del primer analisis se obtubo esa funcion constante que ha dividido la seccion en dos partes. Ahora tengo que hacer lo mismo para esas dos areas generadas(lo cual generara 4 areas, luego 8, ....) y asi hasta obtener una cantidad considerable de resultados para el primer momento de area. De lo anterior, no estoy muy seguro de que tu codigo me pueda ayudar, pero de todas formas muchas gracias por tu tiempo y por responder.

Sigo trabajando en esto, y creo que voy por buen camino, puedes ver en la imagen otra seccion y de verde la nueva seccion generada por la linea horizontal, pero tengo que corregir mas cosas.
sdas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Punto de interseccion entre una funcion cualquiera y una o varias rectas verticales

Publicado por Daniel (354 intervenciones) el 09/04/2020 18:29:27
Lo que hago en el ejemplo de antes es buscar las rectas verticales que ser cruzan con d, para ello busco los puntos que se define en ese rango. Como había comentado el método solo función para las rectas definidas verticalmente, tal como se pedía.

Lo que hay que hacer para el caso genérico es iterar del punto uno al dos, del dos al tres y ver si se cruza. Para las verticales solo hay que comprobar los rangos de definición de estas para ver si se cruzan.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 25
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Punto de interseccion entre una funcion cualquiera y una o varias rectas verticales

Publicado por Junior (12 intervenciones) el 10/04/2020 16:02:21
He probado con otras formas de seccion, y tu codigo funciona bien. Ante ayer ya habia encontrado una solucion , pero es un codigo mucho mas largo que el tuyo. Tratare de usar el tuyo en los bucles que puse, muchas gracias.
Adjunto una imagen de los resultados que esperaba, la seccion transversal, esfuerzos cortantes y esfuerzos normales (de izquierda a derecha) para cada punto de la seccion. Solo falta arreglar que hay puntos donde la linea horizontal se cruza con otras lineas horizontales, por lo que no hay puntos de interseccion y me genera unas discontinuidades en la grafica pero representan el cambio de seccion brusco que hay y creo que se entiende mejor asi. Gracias denuevo y si pudieses explicarme como implementarias tu codigo en un bucle para generar la primera figura donde esta la seccion con varias lineas horizontales (que practicamente la estan tapando) seria genial. (las otras dos son generadas a partir de los resultados de la primera). El objetivo seria conseguir los puntos de interseccion para cada linea horizontal. La linea horizontal se define como una constante que aumenta una unidad desde el inicio (y minimo) hasta que llege ala parte superior de la seccion (osea el y maximo), osea ya no se necesita el centroide para definir la linea constante. Luego esos puntos se utilizan para generar la nueva seccion en compañia con todos los puntos ingresados por el usuario mayores al valor de la linea horizontal en ese momento. Asi al final la ultima seccion sera una linea perteneciente al limite superior de la figura.

fd
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar