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