Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/76: Рейтинг темы: голосов - 76, средняя оценка - 4.61
c4off
1

Как найти координаты точки пересечения прямых?

19.12.2012, 00:40. Показов 15490. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Есть точка "а" с координатами x,y и отрезок прямой, заданный начальной и конечной точкой. Нужно найти минимальное расстояние от точки до прямой и координаты точки на прямой, расстояние до которой от "a" и есть минимальное. Или, хотя бы, координаты пересечения двух отрезков прямых, заданных точками начала и конца. Если возможно, стандартными средствами
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2012, 00:40
Ответы с готовыми решениями:

как посчитать координаты точки пересечения диагоналей параллелограмма
Подскажите пожалуйста как посчитать координаты точки пересечения диагоналей параллелограмма, зная...

Как найти координаты точки пересечения прямых в пространстве?
Имеются 2 уравнение прямых в пространстве в каноническом виде: L1 = (X-0)/0 = (Y+204.75)/0.25 =...

Найти координаты точки пересечения прямых
Даны координаты вершин треугольника ABC: A(2,-1) B(0,3) C(4,5) Найти: Координаты точки D...

Найти координаты точки пересечения прямых
Даны вещественные числа a1,b1,c1,a2,b2,c2. Напечатать координаты точки пересечения прямых...

1
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
19.12.2012, 10:09 2
Лучший ответ Сообщение было отмечено как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
class Point {
    private double x, y;
    Point() {
        this(0, 0);
    }
    Point(double x, double y) {
        this.x = x;
        this.y = y;
    }
 
    public double getX() {
        return x;
    }
 
    public void setX(double x) {
        this.x = x;
    }
 
    public double getY() {
        return y;
    }
 
    public void setY(double y) {
        this.y = y;
    }
 
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Point)) return false;
 
        Point point = (Point) o;
 
        if (Double.compare(point.x, x) != 0) return false;
        if (Double.compare(point.y, y) != 0) return false;
 
        return true;
    }
 
    @Override
    public int hashCode() {
        int result;
        long temp;
        temp = x != +0.0d ? Double.doubleToLongBits(x) : 0L;
        result = (int) (temp ^ (temp >>> 32));
        temp = y != +0.0d ? Double.doubleToLongBits(y) : 0L;
        result = 31 * result + (int) (temp ^ (temp >>> 32));
        return result;
    }
    @Override
    public String toString() {
        return "Point{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }
}
 
/**
 * Линия, выраженная уравнением вида y = k * x + b
 */
class Line {
    private double k;
    private double b;
 
    Line(Point a, Point b) {
        if (a.equals(b))
            throw new IllegalArgumentException("Points are equal. There are endless number of lines through one point.");
        double A = a.getY() - b.getY();
        double B = b.getX() - a.getX();
        if (B == 0)
            throw new IllegalArgumentException("Points lay on same vertical line.");
        double C = a.getX() * b.getY() - b.getX() * a.getY();
        this.k = - A / B;
        this.b = - C / B;
    }
 
    Line(Double k, Double b) {
        this.k = k;
        this.b = b;
    }
 
    /**
     * Возвращает угловой коэффициент линии из формулы вида y = k * x + b
     * @return угловой коэфициент
     */
    public double getK() {
        return k;
    }
 
    /**
     * Возвращает смещение линии из формулы вида y = k * x + b
     * @return смещение линии
     */
    public double getB() {
        return b;
    }
 
    Line getPerpendicularLine(Point point) {
        return new Line(-1 / k, point.getY() + point.getX() / k);
    }
 
    Point getIntersectionPoint(Line other) {
        if (getK() == other.getK())
            throw new IllegalArgumentException("Lines are parallel and do not intersect.");
        Double x  = (other.getB() - getB()) / (getK() - other.getK());
        Double y = getK() * x + getB();
        return new Point(x, y);
    }
 
    @Override
    public String toString() {
        return "Line{" +
                "y = " + k +
                " * x + " + b +
                '}';
    }
}
 
public class Tutorial0007 {
    public static void main(String[] args) {
        Line line = new Line(new Point(0, -2), new Point(2, 0));
        Line perpendicular = line.getPerpendicularLine(new Point(-1, 1));
        System.out.println(line + "\n" + perpendicular);
        System.out.println(line.getIntersectionPoint(perpendicular));
    }
}
3
19.12.2012, 10:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2012, 10:09
Помогаю со студенческими работами здесь

Найти координаты точки пересечения прямых
Решите пожалуйста задачки по VBA Много проболел поэтому не смог разобраться в нем.сейчас опять...

Найти координаты точки пересечения этих прямых
Через фокусы гиперболы \frac{{a}^{2}}{16}-\frac{{y}^{2}}{9}=1 проведены две взаимно...

Как вычислить координаты точки пересечения двух прямых на PictureBox
Пример: имеются на карте два прямые отрезка с известнми координатами и они пересекаются (в лучшем...

Координаты точки пересечения прямых
1.Имеются две прямые заданные уравнениями: y=a1x+b1 и y=a2x+b2 2.Написать программу,выдающую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru