vertice una trazo traslacion tipos sobre secundaria rotacion resueltos reflexion reflejar recta que puntos punto problemas preguntas plano pendiente patrones para niños método matematicas lineas graficar geometricas geometria figuras figura ejercicios eje dibujar dda cuadrilateros cuadrantes cuadrante coordenado como circunferencias cartesiano calcular aplicacion algoritmo algorithm geometry

algorithm - una - reflexion matematicas para niños



Algoritmo para reflejar un punto a través de una línea (9)

Con referencia al higo http://www.analyzemath.com/Geometry/Reflection/Reflection.html .

Queremos encontrar el reflejo del punto A(p,q) a la línea L1, eqn y = m*x + c . Decir punto reflejado es A''(p'',q'')

Supongamos que la línea que une los puntos A y A ''es L2 con eqn: y = m'' * x + c ''L1 y L2 se intersecan en M (a, b)

El algoritmo para encontrar la reflexión del punto es el siguiente: 1) Encontrar pendiente de L2 es = -1 / m, ya que L1 y L2 son perpendiculares 2) Usar m ''y A (x, y) encontrar c'' usando eqn de L2 3) Encuentre el punto de intersección ''M'' de L1 y L2 4) Como ahora tenemos las coordenadas de A y M, las coordenadas de A ''se pueden obtener fácilmente usando la relación [ A(p,q)+A''(p'',q'') ]/2 = M(a,b)

No he comprobado el siguiente código, pero la forma cruda del código en FORTRAN es

SUBROUTINE REFLECTION(R,p,q) IMPLICIT NONE REAL,INTENT(IN) :: p,q REAL, INTENT(OUT) :: R(2) REAL :: M1,M2,C1,C2,a,b M2=-1./M1 ! CALCULATE THE SLOPE OF THE LINE L2 C2=S(3,1)-M2*S(3,2) ! CALCULATE THE ''C'' OF THE LINE L2 q= (M2*C1-M1*C2)/(M2-M1) ! CALCULATE THE MID POINT O p= (q-C1)/M1 R(1)=2*a-p ! GIVE BACK THE REFLECTION POINTS COORDINATE R(2)=2*b-q END SUBROUTINE REFLECTION

Dado un punto (x1, y1) y una ecuación para una línea (y = mx + c), necesito un pseudocódigo para determinar el punto (x2, y2) que es un reflejo del primer punto a través de la línea. ¡Pasé una hora tratando de resolverlo sin suerte!

Vea aquí para una visualización - http://www.analyzemath.com/Geometry/Reflection/Reflection.html


Encuentra la pendiente de la línea dada. Di que es m. Así que la pendiente de la línea que une el punto y su imagen reflejada es -1 / m. Use la forma de punto de pendiente para encontrar la ecuación de la línea y encuentre su interconexión con la línea dada. Finalmente, use el punto de intersección en la fórmula del punto medio para obtener el punto requerido. Un saludo, Shashank Deshpande


Esta es una explicación simple de la solución de Il-Bhima. El truco es notar que lo que quieres es proyectar ese punto ortogonalmente en la línea, moverlo mucho y luego moverlo una vez más, en la misma dirección.

Para este tipo de problemas, es más fácil trabajar con una representación un poco más redundante para una línea. En lugar de y = mx + b , representemos la línea por un punto p que está en la línea y un vector d en la dirección de la línea. Llamemos a este punto p = (0, b) , el vector d = (1, m) , y su punto de entrada será p1 . El punto proyectado en la línea será pl y su punto de salida p2 , entonces, es p1 + 2 * (pl - p1) = 2 * pl - p1

La fórmula que necesita aquí es la proyección de un vector v sobre una línea que atraviesa el origen en la dirección d . Está dada por d * <v, d> / <d, d> donde <a, b> es el producto puntual entre dos vectores.

Para encontrar pl , tenemos que mover todo el problema para que la línea pase por el origen restando p de p1 , usando la fórmula anterior y moviéndola hacia atrás. Luego, pl = p + (d * <p - p1, d> / <d, d>) , entonces pl_x = p_x + (b * p1_x) / (1 + m * m) , pl_y = p_y + (m * p1_x) / (1 + m * m) , y luego use p2 = 2 * pl - p1 para obtener los valores finales.



La reflexión se puede encontrar en dos pasos. Primero traduzca (desplace) todo hacia abajo por b unidades, de modo que el punto se convierta en V=(x,yb) y la línea se convierta en y=mx . Entonces un vector dentro de la línea es L=(1,m) . Ahora calcula la reflexión por la línea a través del origen,

(x'',y'') = 2(V.L)/(L.L) * L - V

donde VL y LL son producto de puntos y * es escalar múltiple.

Finalmente, cambie todo de nuevo agregando b , y la respuesta final es (x'',y''+b) .

Como transformación afín, puede escribir la operación anterior como la composición (producto) de tres matrices, representando primero el desplazamiento y => yb , luego la reflexión a través de la línea a través del origen, luego el cambio y => y+b :

[ 1 0 0] [(1-m^2)/(1+m^2) 2m/(1+m^2) 0] [ 1 0 0] [x] [ 0 1 b] [ 2m/(1+m^2) (m^2-1)/(1+m^2) 0] [ 0 1 -b] [y] [ 0 0 1] [ 0 0 1] [ 0 0 1] [1]

La situación es muy similar a las matrices de rotación en geometría afín. Si ya tiene rutinas de multiplicación de matrices disponibles, porque también está haciendo rotaciones, por ejemplo, esta podría ser la forma más fácil de implementar de las reflexiones.


Ok, te voy a dar un método de libro de cocina para hacer esto. Si estás interesado en cómo lo obtuve, dímelo y te lo explicaré.

Dado (x1, y1) y una línea y = mx + c queremos que el punto (x2, y2) refleje en la línea.

Set d:= (x1 + (y1 - c)*m)/(1 + m^2)

Entonces x2 = 2*d - x1

y y2 = 2*d*m - y1 + 2*c


Reflexión del punto en la línea Dado el punto P (x, y) y una línea L1 Entonces P (X, Y) es el punto reflejado en la línea L1 Si unimos el punto P a P ''para obtener L2, entonces el gradiente de L2 = 1 / m1 donde m1 es el gradiente de L1, L1 y L2 están perpendiculares entre sí. Obtenga el punto de intersección de L1 y L2, diga m (a, b) Dado que m (a, b) es el punto medio de PP '', es decir, L2, luego =
ie = a partir de esto podemos obtener las coordenadas del Ejemplo Encuentre la imagen del punto P (4,3) debajo de un reflejo en la línea
M1 = 1 M2 será -1 Equ. L2 con puntos, (4,3), (x, y) grad -1 es

Punto de intersección, digamos, M (a, b) Note que, L1 = L2; Entonces Esto da el punto para M que es M (6,1) Entonces;

This gives x = 8 and y = -1 hence,

P ''(x, y) = P'' (8, -1)


Tengo una forma más sencilla y fácil de implementar en c ++

#include<graphics.h> #include<iostream> #include<conio.h> using namespace std; int main(){ cout<<"Enter the point"; float x,y; int gm,gd=DETECT; initgraph(&gd,&gm,"C://TC//BGI"); cin>>x; cin>>y; putpixel(x,y,RED); cout<<"Enter the line slop and intercept"; float a,c; cin>>a; cin>>c; float x1,y1; x1 = x-((2*a*x+2*c-y)/(1+a*a))*a; y1=(2*a*x+2*c-y)/(1+a*a); cout<<"x = "<<x1; cout<<"y = "<<y1; putpixel(x1,y1,BLUE); getch();

}


Reflexión del punto A (x, y) en la línea y = mx + c.
Dado el punto P (x, y) y una línea L1 y = mx + c.
Entonces P (X, Y) es el punto reflejado en la línea L1.
Si unimos el punto P a P ''para obtener L2, entonces el gradiente de L2 = -1 / m1 donde m1 es el gradiente de L1.

L1 and L2 are perpendicular to each other. therefore, Get the point of intersection of L1 and L2 say m(a,b) Since m(a,b) is the midpoint of PP’ i.e. L2, then M= (A+A'')/2 i.e. m(a,b)=(A(x,y)+ A^'' (x^'',y^'' ))/2. from this we can get coordinates of A^'' (x^'',y^'' )

Ejemplo

Find the image of point P(4,3) under a reflection in the line y=x-5 M1=1 M2 will be -1 Equ. L2 with points, (4,3) , (x ,y) grad -1 is y=-x+7 Point of intersection say, M(a ,b) Note that, L1 =L2 ; Then x-5=-x+7 This gives the point for M that is M( 6,1) Then; M(6,1)=(P(4,3)+P^'' (x^'',y^'' ))/2 M(6,1)=[(4+x)/2 ,(3+y)/2] This gives x = 8 and y = -1 hence, P^'' (x^'',y^'' )= P^'' (8,-1)