2 points comment puis-je dessiner une ligne à angle droit par rapport à la ligne formée par les deux points?
Idéalement je tiens à fournir une séquence de points et une ligne tracée à angle droit par rapport à chaque point (à compter du deuxième point).
La direction de chaque ligne alternes, donc si il m'est arrivé de dessiner une courbe cosisting de 6 points, une ligne d'une longueur sera établi pour chaque point de départ avec le deuxième point, je.e 5 lignes supplémentaires sur l'alternance des côtés de la courbe, un peu comme une chenille avec des jambes en alternance.
(Je comprends que les lignes ne seront pas entièrement à angle droit par rapport à la courbe, mais plutôt à angle droit par rapport à la ligne formée par deux points sur la courbe).
la bibliothèque va vous tirer avec ?
Je travaille dans Silverlight et à l'aide de la InkPresenter donc c'est juste une affaire de points de fonction, je pense.
stackoverflow.com/q/1243614/183120 c'est a une solution similaire à Andreas (stackoverflow.com/a/7470098/183120)
Je travaille dans Silverlight et à l'aide de la InkPresenter donc c'est juste une affaire de points de fonction, je pense.
stackoverflow.com/q/1243614/183120 c'est a une solution similaire à Andreas (stackoverflow.com/a/7470098/183120)
OriginalL'auteur descf | 2011-09-19
Vous devez vous connecter pour publier un commentaire.
C'est une question de vecteur de mathématiques. Vous pouvez calculer le vecteur directeur entre deux points A et B par la soustraction de B dans A. En 2D et qu'en 2D le vecteur à angle droit à ce vecteur peut être obtenue par l'inversion de x et y en composant et en prenant une composante négative. Si vous nier la nouvelle composante x vous allez faire un virage à gauche, en niant la y vous allez faire un virage à droite. Vous pouvez ensuite réduire le vecteur directeur de la taille de l'unité (= de longueur 1) en divisant chaque composante par la longueur du vecteur (sqrt(xx + yy)). Enfin, vous pouvez étirer le vecteur unitaire de nouveau par la longueur souhaitée et un de la taille que vous voulez. Si vous ajoutez ce vecteur pour A ou B, vous obtiendrez un point pour lequel vous souhaitez dessiner votre ligne.
Voici un peu d'aide en mathématiques:
Ce sont les points A et B exprimé en tant que vecteur.
Le vecteur directeur est calculé par une simple soustraction.
Le vecteur normal est donné par un retournement de la mise en scène de vecteur, c'est-à-inverser les composants et d'en faire une composante négative. nl = normal, retourné à gauche, n = normal, inversé pour le droit
Le vecteur unitaire de la normale du vecteur est donné en divisant chaque composante par la longueur du vecteur.
Calcule la longueur d'un vecteur
Si vous voulez dessiner une ligne de B vers la gauche (en venant de A) calculer le point P de tracer la ligne à
Si vous souhaitez alterner qu'une fois que vous tirer vers la gauche et vers la droite lors de l'itération sur les points.
Si vous avez des points situés à l'extérieur de votre toile, puis vous la longueur est probablement trop grand. Bien sûr, vous pouvez calculer le point à partir duquel le vecteur P est susceptible de franchir la frontière par le calcul du point d'intersection du vecteur de BP et de la frontière.
J'ai édité ma réponse, j'espère que c'est plus compréhensible. De toute façon, le calcul ne s'arrête pas après la première phrase, vous avez eu à lire à travers toute la réponse. Comme je l'ai dit vous réduire votre taille de vecteur à l'unité de la distance et de l'échelle en fonction de la longueur souhaitée. Si cela se trouve au-delà de la toile de votre longueur est trop grande ou votre toile trop petit.
J'ai vraiment été impressionné moi-même en étant en mesure de suivre les mathématiques à l'exception de la ligne commençant rno =
la Longueur d'un vecteur, regardez pour vecteur unitaire. Désolé pour la notation, quand j'allais à l'école le vecteur unitaire a été notée avec un indice de 0.
OriginalL'auteur Andreas