Другие языки программирования и технологии

Что такое вектор и что должен содержать класс вектора? (С++)

Простите школоту за глупый вопрос, и если можете поправьте, где ошибся. Вектор - это направленный отрезок (верно?) тобишь класс должен иметь 3 переменные начальную точку, конечную точку и направление class point { float x; float y; float z; } class vector { public: point a; point b; bool direction; }
Владимир Юска
Владимир Юска
9 740
вектор - не направленный отрезок. точнее, это вообще не отрезок.
вот ускорение свободного падения - вектор. оно имеет направление (вниз, к земле) и интенсивность. не важно, к чему вы его прилагаете: к телу соседа, выпавшего из окна, или к столу, стоящему на полу.
вектор имеет ровно те же те же компоненты, что и точка. если точка характеризуется тремя координатами (x, y, z), то и вектор харакеризуется тройкой чисел (x, y, z). никаких точек и bool direction не придумывайте. разница между вектором и точкой в контексте реализации - только в семантике (в частности, в наборе операций) . однако отождествлять их и мешать всё в кучу тоже нельзя.
короче, объяснять матан на пальцах - упражняться в бесполезном. откройте любую книгу по линейной алгебре и аналитической геометрии - на первых же страницах сразу найдёте что такое вектора и как их варить.
вектор перемещения можно найти, "отняв" от конечной точки начальную (то, что вы щас пытаетесь описать) . но это только вектор перемещения и только в евклидовом пространтве.
Павел Головин
Павел Головин
9 617
Лучший ответ
> и направление

Нашиша направление-то, если точки и так его задают - от такой-то начальной к такой-то конечной ?)
Сергей Serj
Сергей Serj
32 502
Направление излишне. Есть начальная точка, она первая, есть конечная, она вторая. Этого достаточно, чтобы знать направление.
Михаил Ван вы путаете вектор с отрезком.
вектор - фаза + амплитуда, или направление + скорость. к чему вы прикладываете вектор - не важно, поэтому никаких точек там нет
Какая разница, класс или структура? Если, собираешься методы обработки векторов написать, то можно класс задать, если методы писать не будешь, достаточно структуры.

Вот, к примеру, класс:

class Vector
{
float x, y, z;
Vector() {};
Vector(float v) {x=y=z=v;}
Vector& operator = (const Vector& v)
{
x=v.x; h=v.y; z=v.z; return *this;
}
}
Владимир Юска float x, y, z; //допустим начало, где конец?

Я сказал,что структурой надо сделать POINT, а не VECTOR.

POINT - структура, содержащая положение точки в 3D пространстве...
>>Вектор - это направленный отрезок (верно? )
верно
>>тобишь класс должен иметь 3 переменные
нет, это подходит только для пространства размерностью 3.
в идеале класс вектор имеет n переменных, где n - число векторов в базисе пространства
>>начальную точку, конечную точку и направление
класс вектор должен содержать компоненты вектора в выбранном базисе.
точки и направления излишни
это необходимо для упрощения последующих арифметико-логических операций с объектом класса.
и после описания класса ставится точка с запятой.
Meirambek Mukashev
Meirambek Mukashev
486