Java trouver l'intersection de deux droites
En Java, j'ai une classe Line
qui a deux variables : m
et b
, tels que la ligne suit la formule mx + b
. J'ai deux de ces lignes. Comment suis-je trouver les x
et y
les coordonnées de l'intersection des deux lignes? (En supposant que les pentes sont différentes)
Ici est class Line
:
import java.awt.Graphics;
import java.awt.Point;
public final class Line {
public final double m, b;
public Line(double m, double b) {
this.m = m;
this.b = b;
}
public Point intersect(Line line) {
double x = (this.b - line.b) / (this.m - line.m);
double y = this.m * x + this.b;
return new Point((int) x, (int) y);
}
public void paint(Graphics g, int startx, int endx, int width, int height) {
startx -= width / 2;
endx -= width / 2;
int starty = this.get(startx);
int endy = this.get(endx);
Point points = Format.format(new Point(startx, starty), width, height);
Point pointe = Format.format(new Point(endx, endy), width, height);
g.drawLine(points.x, points.y, pointe.x, pointe.y);
}
public int get(int x) {
return (int) (this.m * x + this.b);
}
public double get(double x) {
return this.m * x + this.b;
}
}
Youve a obtenu de code il y a déjà: N'est-il pas de travail? Aussi, pensez à ce que vous le feriez sur papier et le crayon avec 2 y=mx+b lignes si vous essayez de les résoudre. Assimiler et à résoudre pour x pour définir une solution générale pour x, puis utilisez les lignes équation à résoudre pour y. Traduire les formules de code
Êtes-vous de la difficulté à trouver la formule? C'est Mathématiques. Ou êtes-vous eu des difficultés à traduire votre formule dans le code? Qui ne devrait pas être trop dur, et est déjà fait.
Êtes-vous de la difficulté à trouver la formule? C'est Mathématiques. Ou êtes-vous eu des difficultés à traduire votre formule dans le code? Qui ne devrait pas être trop dur, et est déjà fait.
OriginalL'auteur HyperNeutrino | 2015-07-19
Vous devez vous connecter pour publier un commentaire.
Supposons que vous avez ces 2 fonctions:
De trouver le point d'intersection de la
x-axis
nous n':Pour trouver y, vous utilisez des expressions de fonction et les remplacer
x
pour sa valeur(b2-b1) /(m1-m2)
.Donc:
Vous avez
(this.b - line.b)
, changement de(line.b - this.b)
.Juste être conscient, cette solution ne fonctionne pas pour les verticales et les lignes parallèles. En cas de
m-line.m=0
il n'est pas défini.OriginalL'auteur Lourenco
C'est ce que j'ai. Ne pouvais pas trouver toutes les exeptions qui ne fonctionnent pas:
OriginalL'auteur wutzebaer