une una son saber rectas recta que punto por perpendiculares perpendicular pasa paralelas paralela lineas julioprofe ecuaciones ecuacion como ala c# graphics geometry drawing computational-geometry

c# - una - rectas paralelas julioprofe



Dibuja una linea paralela (2)

¿Intentaste restar n a y1 e y2 junto con sumar n a x1 y x2? Supongo que eso puede funcionar

Tengo x1, y1 y x2, y2 que forman un segmento de línea. ¿Cómo puedo obtener otra línea x3, y3 - x4, y4 que sea paralela a la primera línea como en la imagen? Simplemente puedo agregar n a x1 y x2 para obtener una línea paralela, pero no es lo que quería. Quiero que las líneas sean tan paralelas en la imagen.


Lo que quieres hacer es desplazar las coordenadas en la dirección ortogonal. Si conoce la matemática vectorial, multiplique el vector creado por la distancia entre los puntos finales de la línea por la siguiente matriz:

[ 0 -1 ] [ 1 0 ]

Digamos que la primera línea tiene los puntos (x1,y1) , (x2,y2) , con x=x2-x1 , y=y2-y1 .
También tenemos L = sqrt(x*x+y*y) , la longitud de la línea (perdón de la notación). Entonces la siguiente línea debe ser compensada por

[ 0 -1 ] [x] [ 1 0 ] [y]

=> dx = -y / L , dy = x / L que es el desplazamiento normalizado para la nueva línea.

En C # como pseudocódigo:

var x1 = ..., x2 = ..., y1 = ..., y2 = ... // The original line var L = Math.Sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) var offsetPixels = 10.0 // This is the second line var x1p = x1 + offsetPixels * (y2-y1) / L var x2p = x2 + offsetPixels * (y2-y1) / L var y1p = y1 + offsetPixels * (x1-x2) / L var y2p = y2 + offsetPixels * (x1-x2) / L g.MoveTo(x1p,y1p) // I don''t remember if this is the way g.LineTo(x2p,y2p) // to draw a line in GDI+ but you get the idea