J'ai déjà exécuté ce même problème auparavant. Reste avec moi ici ...
Ce problème comporte deux parties:
1. Trouver le point où ils se croisent
pour trouver où deux lignes se croisent, nous utilisons les deux équations des lignes:
y = M1x + B1
y = M2x + B2
substitution par:
M1x + B1 = M2x + B2
M1x - M2x = B2 - B1
x(M1 - M2) = B2 - B1
x = (B2 - B1)/(M1 - M2)
Pour trouver le val y ue, il suffit de le brancher:
y = M1x + B1
2. Trouvez la pente de la ligne à partir des deux autres pentes.
La seconde est beaucoup plus délicate. En utilisant la trigonométrie, ce n'est pas impossible.
Soit L1 la "ligne de base". (Avec une pente de M1)
Soit L2 la ligne qui doit être réfléchie sur la "ligne de base". (Avec une pente de M2)
Soit L3 notre ligne résultante. (Avec une pente de M3)
L'équation I utilisée est la suivante:
double M3 = ((2 * M1) + (M2 * pow(M1, 2)) - M2)/(2 * M1 * M2 - pow(M1, 2) + 1);
droite de mon code C. Il est important de noter que les deux pentes doivent être définies. Vous pouvez utiliser la règle de L'Hopital pour obtenir une équation quand l'une des pentes approche l'infini.
EN MARCHE AVEC L'EXPLICATION!
Voici un dessin brut de trois lignes. L2 est réfléchie sur L1, ce qui donne L3. Le dessin n'est pas exact. L'angle entre L1 et L2, ainsi que L2 et L3, est marqué comme R.\ Voici les faits:
M1 = tan(A1)
M2 = tan(A2)
M3 = tan(A3)
Cela vient de la définition de la tangente. Ceci est un peu plus délicat à voir, mais si vous dessinez une ligne horizontale au point d'intersection, il devient évident.
Ainsi, notre objectif est de trouver tan (A3). Pour ce faire, nous devons trouver R. Comme nous pouvons le voir, R peut être trouvé dans un triangle avec A2 et le supplément de A1 comme les autres angles. Ainsi, nous savons:
R + (180 - A1) + A2 = 180
R - A1 + A2 = 0
R = A1 - A2
Prenons la tangente des deux côtés:
tan(R) = tan(A1 - A2)
trigonométrie, nous savons:
tan(R) = (tan(A1) - tan(A2))/(1 + tan(A1)tan(A2))
R = arctan((tan(A1) - tan(A2)/(1 + tan(A1)tan(A2))
arctan étant tangente inverse. D'après notre formule précédente, A3 = R + A1, nous obtenons:
A3 = arctan((tan(A1) - tan(A2)/(1 + tan(A1)tan(A2)) + A1
A3 = arctan((M1 - M2)/(1 + M1*M2)) + A1
Mais nous ne voulons pas A3. Nous voulons bronzer (A3). Donc, encore une fois, nous prenons la tangente des deux côtés.
tan(A3) = M3 = tan(arctan((M1 - M2)/(1 + M1*M2)) + A1)
M3 = tan(arctan((M1 - M2)/(1 + M1*M2))) + tan(A1)/(1 - tan(arctan((M1 - M2)/(1 + M1*M2))) * tan(A1))
Malheureusement, c'est horriblement hideux. Remplacement des tangentes avec des pentes et simplification, nous obtenons
M3 = ((M1 - M2)/(1 + M1*M2)) + M1/(1 - ((M1 - M2)/(1 + M1*M2)) * M1)
M3 = (M1 - M2 + M1*(1 + M1*M2))/(1 + M1*M2 - M1*M1 + M1*M2)
M3 = (M1^2 * M2 + 2*M1 - M2)/(1 + 2*M1*M2 - M1^2)
Ce qui est exactement le même que la formule ci-dessus. Désolé pour tous les calculs laids. Lorsque M2 est complètement vertical, vous pouvez utiliser la règle de L'Hopital pour obtenir
M3 = (M1^2 - 1)/2*M1
Si quelqu'un est si incliné, vérifiez mes maths. Mais je suis fatigué maintenant.
gardez à l'esprit que vous pourriez courir dans y = infini (perpendiculaire à y = 0) si vous suivez cette méthode, alors basculez entre x = ay + b et y = ax + b quand vous avez besoin à, afin d'éviter le problème :) – CME64
Cela m'a dérangé, désolé. Ce qui précède est trompeur. Vous NE pouvez PAS simplement échanger les valeurs a et b. x = (y-b)/a. En outre, 99% de vos problèmes avec les pentes verticales peuvent être résolus en sauvegardant la pente comme une structure qui contient un numérateur et un dénominateur. Ainsi, vous pouvez savoir que si le dénominateur est 0, la ligne est verticale. – BrainSteel