CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум программистов > Форум Java > Форум Java SE (J2SE)

Ответ Создать новую тему
 
Старый 03.02.2012, 09:44   #1
Pu1se
Новичок
 
Регистрация: 03.02.2012
Сообщений: 1
Репутация: 0 (0)
По умолчанию описать класс "отрезок"

Отрезок создается в трехмерном пространстве координатами концов. Класс должен иметь методы: вычисление длины, расстояние от точки до отрезка. Протестировать работоспособность каждого метода вашего класса.
С языком java у меня все очень плохо просьба подтолкнуть меня в нужном направление, что почитать, куда посмотреть и помочь разобраться
Код Java(TM) 2 Platform Standard Edition 5.0
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
public class Pnt {
int x;
int y;
int z;
}
Pnt P=1;
WSH.Echo(P.x);
/*public class Segm
{
Pnt P0;
Pnt P1;
}
public class Vect
{
int i;
int j;
int k;
}
public class Segment {
function VectorLength(x,y,z,x0,y0,z0){
return Math.sqrt((x-x0)*(x-x0)-(y-y0)*(y-y0)-(z-z0)*(z-z0));
}
function Distance(Pnt P, Segm S) {
Vect v = S.P1 - S.P0;
Vect w = P - S.P0;
Pnt
 
double c1 = dot(w,v);
if ( c1 <= 0 )
return d(P, S.P0);
 
double c2 = dot(v,v);
if ( c2 <= c1 )
return d(P, S.P1);
 
double b = c1/c2;
Pnt Pb = P0 + b * v;
return d(P, Pb);
}
function d(Pnt Up, Pnt Vp) {
Math.sqrt((Up.x*Vp.x + Up.y*Vp.y + Up.z*Vp.z));
}
}*/
 
Pu1se вне форума
Другие темы раздела
подстроки в java Java SE (J2SE)
есть строка, из нее надо вычленить подстроку. но! мы знаем пару символов до требуемой подстроки и пару после. есть ли что то в java чем можно было бы найти подстроку с неизвестным содержимым? + если начальная подстрока уникальная, но конец может встречаться в строке пару раз, то что в этом случае?.... подстроки в java
Байтовые и символьные потоки. Ввод-вывод Java SE (J2SE)
здраствуйте, сегодня на программирование начали изучать работы с файлами, понял как читать и записывать, но не понял как работать с битами байтов. не могли вы бы скинуть ссылки на литературу по данной теме? не могу выполнить такое условие:поменять местами второй и третий биты байта. мне сказали.... Байтовые и символьные потоки. Ввод-вывод
Старый 03.02.2012, 17:43   #2
KarmaMaker
Форумчанин
 
Аватар для KarmaMaker
 
Регистрация: 09.12.2011
Сообщений: 228
Репутация: 84 (84)
По умолчанию Re: описать класс "отрезок"

Задание весьма простое:
Попробуй для начала создать класс 3DPoint и выложить сюда. Если что-то не будет получаться попробуй поискать реализации на форуме и сделать по аналогии.
KarmaMaker вне форума
Старый 03.02.2012, 21:12   #3
S9
Волшебник
 
Аватар для S9
 
Регистрация: 18.12.2010
Адрес: Саратов 64
Сообщений: 384
Репутация: 414 (194)
По умолчанию Re: описать класс "отрезок"

примерно так будет
Код Java(TM) 2 Platform Standard Edition 5.0
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
/** Отрезок создается в трехмерном пространстве координатами концов. 
Класс должен иметь методы: вычисление длины, расстояние от точки до отрезка. 
Протестировать работоспособность каждого метода вашего класса. */
class TVector 
{
  /** координаты отрезка */
  private double Ox_begin;
  private double Oy_begin;
  private double Oz_begin;
  private double Ox_end;
  private double Oy_end;
  private double Oz_end;
  /** конструктор по умолчанию */
  TVector()
  {
    this.Ox_begin = 0.0;
    this.Oy_begin = 0.0;
    this.Oz_begin = 0.0;
    this.Ox_end = 0.0;
    this.Oy_end = 0.0;
    this.Oz_end = 0.0; /** ИМХО вроде можно писать вместо this.Ox_begin = 0 так Ox_begin = 0 и т.д. */
  }
  /** конструктор с входными параметрами (координатами концов отрезка) */
  TVector(double x_begin, double y_begin, double z_begin, double x_end, double y_end, double z_end)
  {
    this.Ox_begin = x_begin;
    this.Oy_begin = y_begin;
    this.Oz_begin = z_begin;
    this.Ox_end = x_end;
    this.Oy_end = y_end;
    this.Oz_end = z_end;
  }
  /** конструктор создающий копию объекта */
  TVector(TVector obj)
  {
    this.Ox_begin = obj.Ox_begin;
    this.Oy_begin = obj.Oy_begin;
    this.Oz_begin = obj.Oz_begin;
    this.Ox_end = obj.Ox_end;
    this.Oy_end = obj.Oy_end;
    this.Oz_end = obj.Oz_end;
  }
  /** вычисление длины */
  double getLength()
  {
    return Math.sqrt(Math.pow((Ox_begin - Ox_end), 2.0) + Math.pow((Oy_begin - Oy_end), 2.0) + Math.pow((Oz_begin - Oz_end), 2.0));
  }
  /** расстояние от точки до отрезка */
  double getDistance(double x, double y, double z)
  {
    double a = Math.sqrt(Math.pow((Ox_begin - Ox_end), 2.0) + Math.pow((Oy_begin - Oy_end), 2.0) + Math.pow((Oz_begin - Oz_end), 2.0));
    double b = Math.sqrt(Math.pow((Ox_begin - x), 2.0) + Math.pow((Oy_begin - y), 2.0) + Math.pow((Oz_begin - z), 2.0));
    double c = Math.sqrt(Math.pow((x - Ox_end), 2.0) + Math.pow((y - Oy_end), 2.0) + Math.pow((z - Oz_end), 2.0));
    return (a + b + c)/2;
  } 
}
 
/** основная программа */
public class so /* класс назван so т.к. исходный файл назван so.java */
{
  public static void main(String args[])
  {
/** решил создать три отрезка (vector1, vector2 и vector3) которые будут различаться способом создания отрезка */
    TVector vector1 = new TVector();/** создаем отрезок по умолчанию */
    System.out.println("Длина: " + vector1.getLength()); /** выводим длину отрезка vector1, очевидно, она будет равна нулю */
    System.out.println("Расстояние до точки (10, 10, 10) равно " + vector1.getDistance(10, 10, 10));
    
    TVector vector2 = new TVector(1.7, 2.8, 3.5, 24.2, 24.8, 39.2);/** создаем отрезок c заданными координатами */
    System.out.println("Длина: " + vector2.getLength()); /** выводим длину отрезка vector2 */
    System.out.println("Расстояние до точки (10, 10, 10) равно " + vector2.getDistance(10, 10, 10));
    
    TVector vector3 = new TVector(vector2);/** создаем копию отрезка vector2 */
    System.out.println("Длина: " + vector3.getLength()); /** выводим длину отрезка vector3, очевидно, она будет равна длине отрезка vector2 */
    System.out.println("Расстояние до точки (10, 10, 10) равно " + vector3.getDistance(10, 10, 10));
  }
}
во вложении исходный код

P.S. насчет нахождения расстояния (метод getDistance), то в нем могу ошибиться, поэтому правильность его не гарантирую, но в остальном все вроде верно
P.P.S. Просьба не пинать меня я на Java только начинаю прогать
Вложения
Тип файла: rar so.rar (1.1 Кб, 3 просмотров)
S9 вне форума
Старый 04.02.2012, 00:25   #4
KarmaMaker
Форумчанин
 
Аватар для KarmaMaker
 
Регистрация: 09.12.2011
Сообщений: 228
Репутация: 84 (84)
По умолчанию Re: описать класс "отрезок"

Как раз пример того, как делать не надо. Лучше напиши класс 3DPoint и юзай его.
KarmaMaker вне форума
Старый 04.02.2012, 11:08   #5
John_Pa9JIbHuK
Добрый самаритянин
 
Аватар для John_Pa9JIbHuK
 
Регистрация: 31.03.2009
Адрес: Саратов
Сообщений: 2,549
Репутация: 1067 (585)
По умолчанию Re: описать класс "отрезок"

S9 из названия класса TVector, я начинаю полагать что вы перешли с Delphi
John_Pa9JIbHuK вне форума
Старый 04.02.2012, 15:58   #6
S9
Волшебник
 
Аватар для S9
 
Регистрация: 18.12.2010
Адрес: Саратов 64
Сообщений: 384
Репутация: 414 (194)
По умолчанию Re: описать класс "отрезок"

Цитата Сообщение от KarmaMaker Посмотреть сообщение
Как раз пример того, как делать не надо. Лучше напиши класс 3DPoint и юзай его.
KarmaMaker если не сложно, то объясни, почему так делать не надо? Просто я на Java только начинаю прогать
John_Pa9JIbHuK вы абсолютно правы

Добавлено через 2 часа 58 минут
вот, по совету KarmaMaker написал класс "точка" и вот что получилось
Код Java(TM) 2 Platform Standard Edition 5.0
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
/** Отрезок создается в трехмерном пространстве координатами концов. 
Класс должен иметь методы: вычисление длины, расстояние от точки до отрезка. 
Протестировать работоспособность каждого метода вашего класса. */
 
/** класс "точка" */
class TPoint
{
  private double Ox;
  private double Oy;
  private double Oz;
  /** конструктор создающий копию объекта */
  TPoint(TPoint Point)
  {
    this.Ox = Point.Ox;
    this.Oy = Point.Oy;
    this.Oz = Point.Oz;
  }
  /** конструктор создающий точку по координатам */
  TPoint(double Ox, double Oy, double Oz)
  {
    this.Ox = Ox;
    this.Oy = Oy;
    this.Oz = Oz;
  }
  /** методы для записи координаты точки  */
  /** для х */
  void setOx(double Ox)
  {
    this.Ox = Ox;
  }
  /** для y */
  void setOy(double Oy)
  {
    this.Oy = Oy;
  }
  /** для z */
  void setOz(double Oz)
  {
    this.Oz = Oz;
  }
  /** методы возвращающие координаты точки */
  /** возращает координату х */
  double getOx()
  {
    return Ox;
  }
  /** возращает координату y */
  double getOy()
  {
    return Oy;
  }
  /** возращает координату z */
  double getOz()
  {
    return Oz;
  } /* примечание кэпа */
}
 
/** класс "отрезок" */
class TVector 
{
  /** координаты отрезка */
  private TPoint begin;
  private TPoint end;
  /** конструктор по умолчанию */
  TVector()
  {
    begin = new TPoint(0.0, 0.0, 0.0);
    end = new TPoint(0.0, 0.0, 0.0);
  }
  /** конструктор с входными параметрами (координатами концов отрезка) */
  TVector(double x_begin, double y_begin, double z_begin, double x_end, double y_end, double z_end)
  {
    begin = new TPoint(x_begin, y_begin, z_begin);
    end = new TPoint(x_end, y_end, z_end);
  }
  /** конструктор создающий копию объекта */
  TVector(TVector obj)
  {
    this.begin.setOx(obj.begin.getOx());
    this.begin.setOy(obj.begin.getOy());
    this.begin.setOz(obj.begin.getOz());
    this.end.setOx(obj.end.getOx());
    this.end.setOy(obj.end.getOy());
    this.end.setOz(obj.end.getOz());
  }
  /** вычисление длины */
  double getLength()
  {
    return Math.sqrt(Math.pow((begin.getOx() - end.getOx()), 2.0) + 
           Math.pow((begin.getOy() - end.getOy()), 2.0) + 
           Math.pow((begin.getOz() - end.getOz()), 2.0));
  }
  /** расстояние от точки до отрезка */
  double getDistance(double x, double y, double z)
  {
    double a = Math.sqrt(Math.pow((begin.getOx() - end.getOx()), 2.0) + 
               Math.pow((begin.getOy() - end.getOy()), 2.0) + 
               Math.pow((begin.getOz() - end.getOz()), 2.0));
    double b = Math.sqrt(Math.pow((begin.getOx() - x), 2.0) + 
               Math.pow((begin.getOy() - y), 2.0) + 
               Math.pow((begin.getOz() - z), 2.0));
    double c = Math.sqrt(Math.pow((x - end.getOx()), 2.0) + 
               Math.pow((y - end.getOy()), 2.0) + 
               Math.pow((z - end.getOz()), 2.0));
    return (a + b + c)/2;
  } 
}
 
/** основная программа */
public class so /* класс назван so т.к. исходный файл назван so.java */
{
  public static void main(String args[])
  {
/** решил создать три отрезка (vector1, vector2 и vector3) которые будут различаться способом создания отрезка */
    TVector vector1 = new TVector();/** создаем отрезок по умолчанию */
    System.out.println("Длина: " + vector1.getLength()); /** выводим длину отрезка vector1, очевидно, она будет равна нулю */
    System.out.println("Расстояние до точки (10, 10, 10) равно " + vector1.getDistance(10, 10, 10));
    
    TVector vector2 = new TVector(1.7, 2.8, 3.5, 24.2, 24.8, 39.2);/** создаем отрезок c заданными координатами */
    System.out.println("Длина: " + vector2.getLength()); /** выводим длину отрезка vector2 */
    System.out.println("Расстояние до точки (10, 10, 10) равно " + vector2.getDistance(10, 10, 10));
    
    TVector vector3 = new TVector(vector2);/** создаем копию отрезка vector2 */
    System.out.println("Длина: " + vector3.getLength()); /** выводим длину отрезка vector3, очевидно, она будет равна длине отрезка vector2 */
    System.out.println("Расстояние до точки (10, 10, 10) равно " + vector3.getDistance(10, 10, 10));
  }
}/** 04.02.2012 */
готов внимательно выслушать всю критику по коду
S9 вне форума
После регистрации реклама в сообщениях будет скрыта
Старый 04.02.2012, 16:21   #7
Золотце
Форумчанин
 
Регистрация: 21.04.2011
Адрес: 0chan.ru/c
Сообщений: 373
Репутация: 128 (91)
По умолчанию Re: описать класс "отрезок"

Код Java(TM) 2 Platform Standard Edition 5.0
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
class Point {
    final public double x;
    final public double y;
    final public double z;
 
    public Point(Point point) {
        x = point.x;
        y = point.y;
        z = point.z;
    }
 
    public Point(double x, double y, double z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }
 
}
 
class Vector {
    /** координаты отрезка */
    private final Point begin;
    private final Point end;
 
    /** конструктор по умолчанию */
    Vector() {
        begin = new Point(0.0, 0.0, 0.0);
        end = new Point(0.0, 0.0, 0.0);
    }
 
    /** конструктор с входными параметрами (координатами концов отрезка) */
    Vector(double x_begin, double y_begin, double z_begin, double x_end, double y_end, double z_end) {
        begin = new Point(x_begin, y_begin, z_begin);
        end = new Point(x_end, y_end, z_end);
    }
    
    public Vector (Point begin, Point end)
    {
        this.begin=begin;
        this.end=end;
    }
 
    /** конструктор создающий копию объекта */
    Vector(Vector vector) {
        this(vector.begin,vector.end);
    }
 
    /** вычисление длины */
    public double getLength() {
        return Math.sqrt(getVectorLength(begin.x, end.x) + getVectorLength(begin.y, end.y) + getVectorLength(begin.z, end.z));
    }
 
    private double getVectorLength(double begin, double end) {
        return Math.sqrt((begin - end) * (begin - end));
    }
 
    /** расстояние от точки до отрезка */
    double getDistance(double x, double y, double z) {
        Point dot=new Point(x,y,z);
        double a = getLength();
        double b = new Vector(begin,dot).getLength();
        double c = new Vector(dot,end).getLength();;
        return (a + b + c) / 2;
    }
}
Добавлено через 14 секунд
Пожалуйста, меньше коментов. Они не нужны
Золотце вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
С++ для начинающих Класс "Отрезок". Вычислить длину отрезка.
создать класс отрезок,чтобы также можно было вычислить длину отрезка
пацанчо
Java SE (J2SE) описать класс "многочлен".реализовать методы "произведение многочленов", "сравнение на равенство"
описать класс "многочлен".реализовать методы "произведение многочленов", "сравнение на равенство", чтение из файла и запись в файл. протестировать работоспособность каждого метода вашего класса.
Виктория08
С++ для начинающих Класс "линия" наследуется классом "отрезок"
Помогите, пожалуйста, разобраться с лабораторной. Нужно создать базовый класс "линия": координаты начала и конца, конструктор с параметрами, метод вычисления длины линии, и производный класс "отрезок": конструктор с параметрами, метод вычисления угла между отрезком и осью ОУ, метод вывода данных....
Alisson
C# для начинающих Описать класс "Самолет" и класс "Аэропорт"
Описать класс "самолет", содержащий следующие закрытые поля: -название пункта назначения; -шестизначный номер рейса; -время отправления. Предусмотреть свойства для получения состояния объекта. Описать класс "аэропорт", содержащий закрытый массив самолетов. Обеспечить следующие возможности:...
smith.gl
С++ для начинающих Создать класс "точка" и производный класс "отрезок"
Создать класс "точка" и производный класс "отрезок" ИСПОЛЬЗОВАТЬ КОНСТРУКТОРЫ И ДИСТРУКТОРЫ и к отрезку метод получения его длинны.... вообщем запара немного с конструктарами и диструкторами, не уверен что правильно всё написал.. И никак не могу понять какая формула для расчёта...
LuBu
Опции темы

Текущее время: 16:54. Часовой пояс GMT +4.

Компьютерный форум программистов и сисадминов
Powered by vBulletin® Version 3.8.7 PL2
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Рейтинг@Mail.ru