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

Определить класс Прямая на плоскости (пространстве)

01.04.2018, 19:11. Показов 4854. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Определить класс Прямая на плоскости (пространстве). Определить точки пересечения прямой с осями координат. Определить кориннаты пересечения двух прямых. создать массив/список/множество/ обьектов/ и определить группы паралельных прямых.
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2018, 19:11
Ответы с готовыми решениями:

Прямая на плоскости и прямая в пространстве
Помогите пожалуйста решить, + желательно как их решать. 1) 16x^2+25y^2+32x-100y-284 = 0 2)...

Класс ПРЯМАЯ на координатной плоскости
как описать класс ПРЯМАЯ на координатной плоскости. уравнение прямой y=ax+b. Данные: угловой...

По координатам трех точек на плоскости (в пространстве) определить, лежат ли они на одной прямой
По координатам трех точек на плоскости (в пространстве) определить, лежат ли они на одной...

Плоскость и прямая в пространстве
Нормаль к плоскости составляет с координатными осями и углы a = 60 ° и b = 45 °, а с осью - тупой...

1
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
02.04.2018, 01:41 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
public class Task019 {
    public static void main(String[] args) {
        StraightLine firstLine = new StraightLine(2, -1, -3);
        StraightLine secondLine = new StraightLine(-3, -1, 2);
 
        System.out.println(firstLine);
        System.out.println("Точки персечения с осями:");
        System.out.println(firstLine.getPointIntersectionWithX());
        System.out.println(firstLine.getPointIntersectionWithY());
 
        System.out.println();
 
        System.out.println(secondLine);
        System.out.println("Точки персечения с осями:");
        System.out.println(secondLine.getPointIntersectionWithX());
        System.out.println(secondLine.getPointIntersectionWithY());
 
        System.out.println();
 
        System.out.println("Точка пересечения 2-х прямых");
        System.out.println(firstLine.getPointIntersectionLines(secondLine));
    }
}
 
class StraightLine {
    private int a;
    private int b;
    private int c;
 
    public StraightLine(int a, int b, int c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
 
    public String getPointIntersectionWithX() {
        return String.format("x = %.2f, y = 0;", (double) -this.c / (double) this.a);
    }
 
    public String getPointIntersectionWithY() {
        return String.format("x = 0, y = %.2f;", (double) -this.c / (double) this.b);
    }
 
    public String getPointIntersectionLines(StraightLine line) {
        String result = null;
        if (line != null) {
            double coeffOne = (double) this.a / (double) line.a;
            double coeffTwo = (double) this.b / (double) line.b;
            double coeffThree = (double) this.c / (double) line.c;
 
            if (coeffOne == coeffTwo && coeffOne == coeffThree) {
                result = "Прямые равны. Имеют бесконечное множество точек пересечения.";
            } else if (coeffOne == coeffTwo && coeffOne != coeffThree) {
                result = "Прямые параллельны. Точек пересечения нет.";
            } else {
                double y = (double) (line.a * this.c - this.a * line.c) / (double) (this.a * line.b - line.a * this.b);
                double x = (this.b * y + this.c) / (double) -this.a;
                result = String.format("Точка пересечения: {%.2f, %.2f};", x, y);
            }
        }
        return result;
    }
 
    @Override
    public String toString() {
        String result = getBlock(this.a, "x", true);
        result = result.concat(getBlock(this.b, "y", this.a == 0));
        result = result.concat(getBlock(this.c, "", this.a == 0 && this.b == 0));
        return result.concat(" = 0");
    }
 
    private String getBlock(int number, String prefix, boolean first) {
        String result = "";
        if (number != 0) {
            if (first) {
                result = String.format("%d%s", number, prefix);
            } else {
                String sign = number < 0 ? "-" : "+";
                result = String.format(" %s %d%s", sign, Math.abs(number), prefix);
            }
        }
        return result;
    }
}
Добавлено через 47 минут
Не увидел об объединении групп параллельности прямых. Доделал. Вот код...

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
128
129
130
131
132
133
134
135
136
137
138
139
140
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class Task019 {
    public static void main(String[] args) {
        List<StraightLine> listLines = new ArrayList<>();
        listLines.add(new StraightLine(2, -1, -3));
        listLines.add(new StraightLine(-3, -1, 2));
        listLines.add(new StraightLine(-3, -1, 2));
        listLines.add(new StraightLine(-3, -1, 2));
        listLines.add(new StraightLine(-3, -1, 4));
        listLines.add(new StraightLine(-3, -1, 5));
        listLines.add(new StraightLine(-1, -1, 4));
        listLines.add(new StraightLine(-1, -1, 5));
 
 
        //печатаем все уравнения прямых и их точки пересечения с осями X и Y
        for (StraightLine line : listLines) {
            System.out.printf("Прямая: %s;%s", line, System.lineSeparator());
            System.out.printf("Точки пересечения с осями: %s, %s;%s",
                    line.getPointIntersectionWithX(), line.getPointIntersectionWithY(), System.lineSeparator());
            System.out.println();
        }
 
        //ищем пересечения прямых друг с другом (первые 2 из списка)
        System.out.println("Точки пересечения 2-х прямых:");
        System.out.printf("%s;%s%s;%s", listLines.get(0), System.lineSeparator(), listLines.get(1), System.lineSeparator());
        System.out.printf("%s%s", listLines.get(0).getPointIntersectionLines(listLines.get(1)), System.lineSeparator());
        System.out.println();
 
        //объеденяем в группы параллельности прямых
        Map<StraightLine, List<StraightLine>> groups = getGroupsParallel(listLines);
 
        //печатаем группы параллельности
        for (Map.Entry<StraightLine, List<StraightLine>> group : groups.entrySet()) {
            if (group.getValue().size() > 0) {
                System.out.printf("Прямая %s параллельна с:%s", group.getKey(), System.lineSeparator());
                for (StraightLine line : group.getValue()) {
                    System.out.printf("    %s;%s", line, System.lineSeparator());
                }
                System.out.println();
            }
        }
    }
 
    public static Map<StraightLine, List<StraightLine>> getGroupsParallel(List<StraightLine> list) {
        Map<StraightLine, List<StraightLine>> map = new HashMap<>();
        if (list != null && !list.isEmpty()) {
            boolean flag;
            while (!list.isEmpty()) {
                flag = false;
                StraightLine line = list.remove(0);
                for (StraightLine lineMap : map.keySet()) {
                    if (lineMap.isParallel(line)) {
                        map.get(lineMap).add(line);
                        flag = true;
                        break;
                    }
                }
                if (!flag) {
                    map.put(line, new ArrayList<>());
                }
            }
        }
        return map;
    }
}
 
class StraightLine {
    private int a;
    private int b;
    private int c;
 
    public StraightLine(int a, int b, int c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
 
    public String getPointIntersectionWithX() {
        return String.format("{%.2f, 0}", (double) -this.c / (double) this.a);
    }
 
    public String getPointIntersectionWithY() {
        return String.format("{0, %.2f}", (double) -this.c / (double) this.b);
    }
 
    public boolean isParallel(StraightLine line) {
        double coeffOne = (double) this.a / (double) line.a;
        double coeffTwo = (double) this.b / (double) line.b;
        double coeffThree = (double) this.c / (double) line.c;
        return coeffOne == coeffTwo && coeffOne != coeffThree;
    }
 
    public boolean isEquals(StraightLine line) {
        double coeffOne = (double) this.a / (double) line.a;
        double coeffTwo = (double) this.b / (double) line.b;
        double coeffThree = (double) this.c / (double) line.c;
        return coeffOne == coeffTwo && coeffOne == coeffThree;
    }
 
    public String getPointIntersectionLines(StraightLine line) {
        String result = null;
        if (line != null) {
            if (isEquals(line)) {
                result = "Прямые равны. Имеют бесконечное множество точек пересечения.";
            } else if (isParallel(line)) {
                result = "Прямые параллельны. Точек пересечения нет.";
            } else {
                double y = (double) (line.a * this.c - this.a * line.c) / (double) (this.a * line.b - line.a * this.b);
                double x = (this.b * y + this.c) / (double) -this.a;
                result = String.format("Точка пересечения: {%.2f, %.2f};", x, y);
            }
        }
        return result;
    }
 
    @Override
    public String toString() {
        String result = getBlock(this.a, "x", true);
        result = result.concat(getBlock(this.b, "y", this.a == 0));
        result = result.concat(getBlock(this.c, "", this.a == 0 && this.b == 0));
        return result.concat(" = 0");
    }
 
    private String getBlock(int number, String prefix, boolean first) {
        String result = "";
        if (number != 0) {
            if (first) {
                result = String.format("%d%s", number, prefix);
            } else {
                String sign = number < 0 ? "-" : "+";
                result = String.format(" %s %d%s", sign, Math.abs(number), prefix);
            }
        }
        return result;
    }
}
Добавлено через 1 минуту
Вывод:

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
Прямая: 2x - 1y - 3 = 0;
Точки пересечения с осями: {1,50, 0}, {0, -3,00};
 
Прямая: -3x - 1y + 2 = 0;
Точки пересечения с осями: {0,67, 0}, {0, 2,00};
 
Прямая: -3x - 1y + 2 = 0;
Точки пересечения с осями: {0,67, 0}, {0, 2,00};
 
Прямая: -3x - 1y + 2 = 0;
Точки пересечения с осями: {0,67, 0}, {0, 2,00};
 
Прямая: -3x - 1y + 4 = 0;
Точки пересечения с осями: {1,33, 0}, {0, 4,00};
 
Прямая: -3x - 1y + 5 = 0;
Точки пересечения с осями: {1,67, 0}, {0, 5,00};
 
Прямая: -1x - 1y + 4 = 0;
Точки пересечения с осями: {4,00, 0}, {0, 4,00};
 
Прямая: -1x - 1y + 5 = 0;
Точки пересечения с осями: {5,00, 0}, {0, 5,00};
 
Точки пересечения 2-х прямых:
2x - 1y - 3 = 0;
-3x - 1y + 2 = 0;
Точка пересечения: {1,00, -1,00};
 
Прямая -3x - 1y + 2 = 0 параллельна с:
    -3x - 1y + 4 = 0;
    -3x - 1y + 5 = 0;
 
Прямая -1x - 1y + 4 = 0 параллельна с:
    -1x - 1y + 5 = 0;
1
02.04.2018, 01:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2018, 01:41
Помогаю со студенческими работами здесь

Плоскость и прямая в пространстве
Вершина равнобедренного треугольника находится в точке (3,4,5); концы его основания лежат на осях...

Прямая L задана в пространстве общими уравнениями
Помогите блондинке, а то я совсем не знаю как это решить) Прямая L задана в пространстве общими...

По классам: прямая линия в пространстве, её обход
unit Actions; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Наследование: Определить класс vector2 как вектор на плоскости. Определить для него операции и функции
Уже который час мучаюсь не выходит помогите пожалуйста Определить класс vector2 как вектор...


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

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