È una domanda di vector mathematics. È possibile calcolare il vettore di direzione tra due punti A e B sottraendo B da A. In 2D e solo in 2D il vettore a destra angolato a questo vettore può essere ottenuto invertendo il componente x e y e prendendo un componente negativo. Se si annulla il nuovo componente x, si effettuerà un giro a sinistra, annullando si effettuerà una svolta a destra. È quindi possibile ridurre il vettore di direzione alle dimensioni dell'unità (= di lunghezza 1) dividendo ciascun componente per la lunghezza del vettore (sqrt (x x + y y)). Finalmente puoi allungare nuovamente il vettore unitario della lunghezza desiderata e avere una delle dimensioni che desideri. Se aggiungi questo vettore a A o B otterrai un punto a cui vuoi disegnare la linea.
Ecco un piccolo aiuto di matematica:
sono questi i punti A e B espresso come vettore.
Il vettore regia è calcolato da una semplice sottrazione.
Il vettore normale è data girando il vettore regia, cioè invertire i componenti e fare una componente negativa. nl = normale, orientato a sinistra, nr = normale, girato verso destra
Il vettore unitario del vettore normale è data dividendo ciascun componente per la lunghezza del vettore.
calcola la lunghezza di un vettore
Se si vuole disegnare una linea da B a sinistra (per chi proviene da A) si calcola il punto P per disegnare la linea come
Quindi si desidera alternare quella volta che si disegna a sinistra e una volta a destra durante l'iterazione sui punti.
Se i punti sono all'esterno della tela, la lunghezza è probabilmente troppo grande. Ovviamente puoi calcolare il punto in cui il vettore in P attraverserebbe il confine calcolando il punto di intersezione del vettore BP e il bordo.
con quale libreria disegnerai? – Bas
Sto lavorando in Silverlight e uso InkPresenter, quindi penso che sia solo un caso di funzione punti. – descf
http://stackoverflow.com/q/1243614/183120 ha una soluzione simile a quella di Andreas "(http://stackoverflow.com/a/7470098/183120) – legends2k