J'ai deux points et j'ai besoin de créer une ligne perpendiculaire à la ligne qu'ils forment. De plus, l'intersection doit être à 5 (unités) du premier point. Je sais comment obtenir une ligne perpendiculaire mais pas comment obtenir le point sur la première ligne qui est à 5 unités du premier point.Si j'ai l'équation d'une ligne, comment trouver un point sur cette ligne qui est une distance spécifique d'une autre?
0
A
Répondre
0
Utilisez l'équation d'un cercle centré sur le premier point et résolvez x et y.
premier point = x_0, y_0
équationd'un cercle de rayon 5 autour de premier point
(x - x 0)^2 + (y - y_0)^2 = 25
utilisation l'équation de la ligne pour remplacer y, et résoudre pour x. Attention à ce que vous obteniez 2 points, choisissez le bon. L'utilisation de l'équation de la ligne à résoudre pour y.
3
public static function distanceFromPoint(a:Point, b:Point, dist:Number):Point {
var tmp:Point = b.subtract(a);
tmp.normalize(dist);
return a.add(tmp);
}
Comment cela fonctionne:
Vous soustrayez a
de b
pour obtenir le vecteur entre les deux points. Vous normaliser ce vecteur et le multiplier par dist
pour obtenir une ligne dist
unités pointant dans la direction de a
à b
. Ajouter ce vecteur au point a
et le résultat sera un nouveau point qui est dist
unités de a
dans la direction de b
.
+1. Une note mineure. Vous devez utiliser une variable temporaire pour stocker le point normalisé, puisque 'normalize' renvoie' void'. Quelque chose comme ceci: 'fonction statique publique distanceFromPoint (un: Point, b: Point, dist: nombre): Point {var tmp: Point = b.subtract (a); tmp.normalize (dist); return a.add (tmp);} ' –
Merci @Juan. J'ai modded [une de vos réponses sous-estimées] (http://stackoverflow.com/questions/3217212/key-value-pairs-in-as3/3217584#3217584) en retour. – Gunslinger47