У меня есть два уравнения (расстояние и наклон формулы линии)Решить систему двух уравнений в Android/Java
д = SQRT ((х2 - х1)^2 + (у2 - у1)^2)
т = (у2 - у1)/(х2 - х1)
Известно: д, м, x1, y1
Неизвестный: х2, у2
проблема состоит в том уравнение расстояние не является линейным .. .
Есть ли способ закодировать это в java (используя Andro id совместимых библиотек) для решения? Я пробовал делать простые догадки, но это слишком медленно.
Благодаря
EDIT: Код для треугольника
Point p1 = new Point();
Point p2 = new Point();
projection.toPixels(gp1, p1);
projection.toPixels(gp2, p2);
Point p3 = new Point();
double slope = (p2.y - p1.y)/(p2.x - p1.x);
double x = 0;
if (p2.y - p1.y >= 0 && p2.x - p1.x >= 0) {
x = - Math.sqrt(600/(1 + slope*slope)) + p2.x;
} else if (p2.y - p1.y >= 0 && p2.x - p1.x < 0) {
x = Math.sqrt(600/(1 + slope*slope)) + p2.x;
} else if (p2.y - p1.y < 0 && p2.x - p1.x >= 0) {
x = - Math.sqrt(600/(1 + slope*slope)) + p2.x;
} else if (p2.y - p1.y < 0 && p2.x - p1.x < 0) {
x = Math.sqrt(600/(1 + slope*slope)) + p2.x;
}
double y = -slope*p2.x + slope*x + p2.y;
p3.set((int) x, (int) y);
double inverseSlope = 0;
if (slope == 0) {
inverseSlope = Double.MAX_VALUE;
} else {
inverseSlope = -1/slope;
}
x = -Math.sqrt(300/(1 + inverseSlope*inverseSlope)) + p3.x;
y = -Math.sqrt(300/(1 + inverseSlope*inverseSlope))*inverseSlope + p3.y;
Point p4 = new Point();
p4.set((int) x, (int) y);
x = Math.sqrt(300/(1 + inverseSlope*inverseSlope)) + p3.x;
y = Math.sqrt(300/(1 + inverseSlope*inverseSlope))*inverseSlope + p3.y;
Point p5 = new Point();
p5.set((int)x, (int) y);
Path path = new Path();
path.moveTo(p2.x, p2.y);
path.lineTo(p4.x, p4.y);
path.moveTo(p4.x, p4.y);
path.lineTo(p5.x, p5.y);
path.moveTo(p5.x, p5.y);
path.lineTo(p2.x, p2.y);
path.moveTo(p2.x, p2.y);
canvas.drawPath(path, mPaint);
Оно кажется, что в настоящее время вызвано наклоном всегда является целым, так когда < 1 это 0, не хорошо .. ,
Ваш Скобки не совпадают, вы имеете в виду: SQRT ((x2 - x1)^2 + (y2 - y1)^2) * т = (y2-y1)/(x2 -x1) –
, пожалуйста, не меняйте свой вопрос после принятия ответа, просто запустите новый вопрос в следующий раз ... – kritzikratzi
в порядке, так что вот код, который делает то, что вы на самом деле хотите: http: //studio.sketchpad. cc/WjZ7UqIq4F , когда вы имеете дело с ориентацией в пространстве, как правило, это плохая идея использовать наклоны, потому что вам придется иметь дело со всеми углами (бесконечным и нулевым) явно в большинстве случаев. вместо этого думать в терминах векторов - то есть точек, углов и расстояний. это упростит ваши уравнения на бумаге _and_ в результате кода.если вы посмотрите на мой код, вы увидите, что он не использует ничего, кроме теоремы о пихтагорее и фундаментальном определении синуса. окончательная мысль: назовите свои переменные! – kritzikratzi