За последние 24 часа нас посетили 22490 программистов и 1132 робота. Сейчас ищут 657 программистов ...

Реализовать класс 2-х мерный вектор.

Тема в разделе "PHP для новичков", создана пользователем Miwutka, 22 июн 2018.

Метки:
  1. Miwutka

    Miwutka Новичок

    С нами с:
    22 июн 2018
    Сообщения:
    11
    Симпатии:
    1
    Добрый день. Недавно начал изучать PHP. Занимаюсь программированием микроконтроллеров(умный дом, разработка устройств).
    Вот есть задание, реализовать класс двумерный вектор. Класс должен содержать атрибуты x и y - координаты вектора, а также публичные методы для сложения векторов, умножения вектора на число, вычитания векторов, вывода вектора на печать.

    Я не до конца понял суть задания. Может ктото сможет предположить или объяснить что нужно тут сделать? Я вот сто сделал:
    PHP:
    1. class Vector
    2. {
    3.     private $x;
    4.     private $y;
    5.  
    6.  
    7.     function __construct($xx)
    8.     {
    9.         $this->x = $xx;
    10.  
    11.     }
    12.  
    13.     public function PrintVect()
    14.     {
    15.  
    16.         for ($i = 0; $i < count($this->x);$i++)
    17.         {
    18.             for($j = 0; $j < count($this->x[$i]);$j++)
    19.             {
    20.                 echo $this->x[$i][$j];
    21.             }
    22.             echo "<br/>";
    23.         }
    24.  
    25.  
    26.     }
    27.  
    28.     public function summ($yy)
    29.     {
    30.         $this->y = $yy;
    31.  
    32.         for ($i = 0; $i < count($this->x);$i++)
    33.         {
    34.             for($j = 0; $j < count($this->x[$i]);$j++)
    35.             {
    36.  
    37.                 echo $this->x[$i][$j]+$this->y[$i][$j];
    38.             }
    39.             echo "<br/>";
    40.         }
    41.  
    42.     }
    43.     public function odd()
    44.     {
    45.  
    46.     }
    47.     public function mul()
    48.     {
    49.  
    50.     }
    51. }
    52.  
    53. $a = array (array(4,5,6,7,8),array(15,16,17,18,19));
    54. $b = array(array(5,5,6,6,6),array(10,15,10,15,15));
    55.  
    56. $MyVect1 = new Vector($a);
    57. $MyVect2 = new Vector($b);
    58.  
    59. $MyVect1->PrintVect();
    60. $MyVect2->PrintVect();
    61.  
    62. $MyVect1->summ($MeVect2);
    Как я понял вектор этот тотже массив. Нужно сделать операции над массивами через классы? Суммировать вектор с массивом $a получается. А вот как именно вектора суммировать (если именно так надо) я не могу понять?
    Помогите плиз разобраться с заданием....
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Ну так просто вспомните из математики, что такое вектор. По ходу, здесь именно геометрическое понятие вектора имеется в виду, а не массив. И всё гораздо проще.
    --- Добавлено ---
    P.S. Где-то класс 8-9 вектора :)
     
    Miwutka нравится это.
  3. Miwutka

    Miwutka Новичок

    С нами с:
    22 июн 2018
    Сообщения:
    11
    Симпатии:
    1
    Тот кто дал такое задание говорит ты делай как понимаешь , а мы проверим )) А я думал надо сделать аналогию вектора как в С++. Или чтото похожее как в PHP DSVector. Но вроде в математике нету двумерных векторов?... Придется вспоминать... Слово, двумерный, и надоумило с матрицами реализовывать...
     
    Danil005 нравится это.
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    @Miwutka, конечно есть двумерные. Вектор - это направленный отрезок. Если мы вводим систему координат на плоскости, он имеет два значения, т.е. двумерный. Если в пространстве, то трёхмерный, три значения. Вот накидал декартову систему, извиняй, что кривенько. И синим цветом изобразил вектор (1, 3) (т.е. 1 единицу вправо и 3 вверх от заданной точки)
    upload_2018-6-24_0-11-24.png
    И погугли, там есть правила сложения векторов, умножения на число и т.п. Совершенно не сложные
    --- Добавлено ---
    Не пересложняйте задачу. Здесь не надо умный дом программировать :) Тут элементарнейший класс
     
    Miwutka нравится это.