Es una pregunta de vector mathematics. Puede calcular el vector de dirección entre dos puntos A y B restando B de A. En 2D y solo en 2D, el vector en ángulo recto con este vector puede obtenerse invirtiendo los componentes xey y tomando un componente negativo. Si niegas el nuevo componente x darás un giro a la izquierda negando y harás un giro a la derecha. A continuación, puede reducir el vector de dirección al tamaño de la unidad (= de longitud 1) dividiendo cada componente por la longitud del vector (sqrt (x x + y y)). Finalmente, puede estirar el vector unitario de nuevo según la longitud deseada y tener uno del tamaño que desee. Si agrega este vector a A o B, obtendrá un punto al que desea dibujar su línea.
Aquí hay un poco de ayuda de matemáticas:
Estos son los puntos A y B expresaron como vector.
El vector de dirección se calcula mediante una simple resta.
El vector normal se da por voltear el vector de dirección, es decir para revertir los componentes y hacer que un componente negativo. nl = normal, volteado hacia la izquierda, nr = normal, volteado hacia la derecha
el vector unitario del vector normal se da dividiendo cada componente por la longitud del vector.
calcula la longitud de un vector
Si desea dibujar una línea de B a la izquierda (viniendo de A) se calcula el punto P trazar la línea a lo
Así que desea alternar esa vez que dibuja hacia la izquierda y una vez hacia la derecha al iterar sobre los puntos.
Si tiene puntos fuera de su lienzo, entonces su longitud es probablemente demasiado grande. Por supuesto, puede calcular el punto en el que el vector a P cruzaría el límite calculando el punto de intersección del vector BP y el borde.
con que biblioteca dibujará? – Bas
Estoy trabajando en Silverlight y utilizando el InkPresenter, así que es solo un caso de función de puntos, creo. – descf
http://stackoverflow.com/q/1243614/183120 tiene una solución similar a la de Andreas (http://stackoverflow.com/a/7470098/183120) – legends2k