VM2D 1.14
Vortex methods for 2D flows simulation
Loading...
Searching...
No Matches
VMlib::Point2Df Class Reference

Класс, опеделяющий двумерный вектор More...

#include <Point2D.h>

Inheritance diagram for VMlib::Point2Df:
Collaboration diagram for VMlib::Point2Df:

Public Member Functions

 Point2Df ()
 
 Point2Df (const numvector< float, 2 > &_r)
 Конструктор и приведение типа из numvector<double, 2>
 
 Point2Df (const Point2Df &_r)
 Конструктор копирования
 
 Point2Df (const std::initializer_list< float > &z)
 Конструктор инициализации списком
 
 ~Point2Df ()
 Деструктор
 
Point2Df rotated (const float angle=1.5707963267948966192313216916398f) const
 Поворот вектора на произвольный угол против часовой стрелки (по умолчанию 90 градусов)
 
float & operator[] (size_t i)
 
const float & operator[] (size_t i) const
 
size_t size () const
 
auto operator& (const numvector< P, n > &y) const -> typename std::remove_const< decltype(this->data[0] *y[0])>::type
 Оператор "&" скалярного умножения
 
auto operator^ (const numvector< P, 3 > &y) const -> numvector< typename std::remove_const< decltype(this->data[1] *y[2])>::type, 3 >
 Оператор "^" векторного произведения
 
auto operator^ (const numvector< P, 2 > &y) const -> typename std::remove_const< decltype(this->data[0] *y[1])>::type
 Оператор "^" вычисления третьей компоненты векторного произведения
 
numvector< float, n > & operator*= (P c)
 Оператор "*=" домножения вектора на действительное число
 
numvector< float, n > & operator/= (P c)
 Оператор "/=" деления вектора на действительное число
 
numvector< float, n > & operator+= (const numvector< P, n > &y)
 Оператор "+=" прибавления другого вектора
 
numvector< float, n > & operator-= (const numvector< P, n > &y)
 Оператор "-=" вычитания другого вектора
 
auto operator+ (const numvector< P, n > &y) const -> numvector< typename std::remove_const< decltype(this->data[0]+y[0])>::type, n >
 Оператор "+" сложения двух векторов
 
const numvector< float, n > & operator+ () const
 Оператор "+" унарного плюса
 
auto operator- (const numvector< P, n > &y) const -> numvector< typename std::remove_const< decltype(this->data[0] - y[0])>::type, n >
 Оператор "-" вычитания двух векторов
 
numvector< float, n > operator- () const
 Оператор "-" унарного минуса
 
auto operator* (const P c) const -> numvector< typename std::remove_const< decltype(this->data[0] *c)>::type, n >
 Оператор "*" умножения вектора на число (вектор слева, число справа)
 
bool operator== (const numvector< P, n > &y) const
 Оператор "==" логического равенства
 
bool operator!= (const numvector< P, n > &y) const
 Перегрузка оператора "!=" логического неравенства
 
auto norm1 () const -> typename std::remove_const< typename std::remove_reference< decltype(this->data[0])>::type >::type
 Вычисление 1-нормы вектора
 
auto norminf () const -> typename std::remove_const< typename std::remove_reference< decltype(this->data[0])>::type >::type
 Вычисление inf-нормы вектора
 
length () const
 Вычисление 2-нормы (длины) вектора
 
auto length2 () const -> typename std::remove_const< typename std::remove_reference< decltype(this->data[0])>::type >::type
 Вычисление квадрата нормы (длины) вектора
 
auto unit (P newlen=1) const -> numvector< typename std::remove_const< decltype(this->data[0] *newlen)>::type, n >
 Вычисление орта вектора или вектора заданной длины, коллинеарного данному
 
void normalize (P newlen=1.0)
 Нормирование вектора на заданную длину
 
size_t member (const P &s) const
 Проверка вхождения элемента в вектор
 
 operator std::set< P > () const
 Приведение вектора к типу std::set.
 
 operator std::vector< P > () const
 Приведение вектора к типу std::vector.
 
numvector< float, n > rotateLeft (size_t k) const
 "Вращение" вектора на несколько позиций влево
 
numvector< float, 2 > kcross () const
 Геометрический поворот двумерного вектора на 90 градусов
 
numvector< float, n > & toZero (P val=0)
 Установка всех компонент вектора в константу (по умолчанию — нуль)
 
numvector< float, n > proj (const numvector< P, n > &v)
 Проекция вектора на вектор v.
 
auto dist2To (const numvector< P, n > &y) const -> typename std::remove_const< decltype(this->data[0] - y[0])>::type
 Вычисление квадрата расстояния до другой точки
 
distTo (const numvector< P, n > &y)
 Вычисление расстояния между двумя точками
 

Protected Attributes

float data [n]
 

Detailed Description

Класс, опеделяющий двумерный вектор

Наследуется от numvector<double, 2>, имеет дополнительные возможности:

  • поворота на заданный угол против часовой стрелки;
Author
Марчевский Илья Константинович \Version 1.14
Date
6 марта 2026 г.

Definition at line 75 of file Point2D.h.

Constructor & Destructor Documentation

◆ Point2Df() [1/4]

VMlib::Point2Df::Point2Df ( )
inline

Definition at line 79 of file Point2D.h.

79{ };

◆ Point2Df() [2/4]

VMlib::Point2Df::Point2Df ( const numvector< float, 2 > &  _r)
inline

Конструктор и приведение типа из numvector<double, 2>

Parameters
[in]_rконстантная ссылка на копируемый объект типа numvector<double, 2>

Definition at line 84 of file Point2D.h.

84 {
85 data[0] = _r[0];
86 data[1] = _r[1];
87 };

◆ Point2Df() [3/4]

VMlib::Point2Df::Point2Df ( const Point2Df _r)
inline

Конструктор копирования

Parameters
[in]_rконстантная ссылка на копируемый вектор

Definition at line 92 of file Point2D.h.

92 {
93 data[0] = _r[0];
94 data[1] = _r[1];
95 }

◆ Point2Df() [4/4]

Point2Df::Point2Df ( const std::initializer_list< float > &  z)

Конструктор инициализации списком

Parameters
[in]zконстантная ссылка на список инициализации из чисел типа double
Warning
Длина списка инициализации не проверяется, от него берутся только 2 первых элемента

Definition at line 75 of file Point2D.cpp.

76{
77 for (size_t i = 0; i < 2; ++i)
78 data[i] = *(z.begin() + i);
79}//Point2Df(...)

◆ ~Point2Df()

VMlib::Point2Df::~Point2Df ( )
inline

Деструктор

Definition at line 106 of file Point2D.h.

106{ };

Member Function Documentation

◆ dist2To()

auto VMlib::numvector< float , n >::dist2To ( const numvector< P, n > &  y) const-> typename std::remove_const<decltype(this->data[0] - y[0])>::type
inlineinherited

Вычисление квадрата расстояния до другой точки

Template Parameters
Pтип данных второй точки
Parameters
[in]yконстантная ссылка на радиус-вектор второй точки
Returns
квадрат расстояния между точками

Definition at line 558 of file numvector.h.

559 {
560 return (*this - y).length2();
561 }//dist2To(...)

◆ distTo()

R VMlib::numvector< float , n >::distTo ( const numvector< P, n > &  y)
inlineinherited

Вычисление расстояния между двумя точками

Template Parameters
Pтип данных второй точки
Rтип данных результата (по умолчанию double)
Parameters
[in]yконстантная ссылка на радиус-вектор второй точки
Returns
расстояние между точками

Definition at line 571 of file numvector.h.

572 {
573 R res = (*this - y) & (*this - y);
574 return sqrt(res);
575 }//distTo(...)

◆ kcross()

numvector< float , 2 > VMlib::numvector< float , n >::kcross ( ) const
inlineinherited

Геометрический поворот двумерного вектора на 90 градусов

Исходный вектор при этом не изменяется
Эквивалентно умножению слева на орт третьей оси, т.е. \( \vec k \times \vec r \)

Template Parameters
Tтип данных
Returns
новый двумерный вектор, полученный поворотом исходного на 90 градусов

Definition at line 510 of file numvector.h.

511 {
512 numvector<T, 2> res;
513 res[0] = -this->data[1];
514 res[1] = this->data[0];
515 return res;
516 }//kcross()
Шаблонный класс, определяющий вектор фиксированной длины Фактически представляет собой массив,...
Definition numvector.h:99

◆ length()

P VMlib::numvector< float , n >::length ( ) const
inlineinherited

Вычисление 2-нормы (длины) вектора

Корень из скалярного квадрата вектора

Template Parameters
Pтип результата (по умолчанию double)
Returns
норма (длина) вектора

Definition at line 374 of file numvector.h.

375 {
376 P res = *this & *this;
377 return sqrt(res);
378 }//length()

◆ length2()

auto VMlib::numvector< float , n >::length2 ( ) const -> typename std::remove_const<typename std::remove_reference<decltype(this->data[0])>::type>::type
inlineinherited

Вычисление квадрата нормы (длины) вектора

Скалярный квадрат вектора

Returns
квадрат нормы (длины) вектора того же типа, что и компоненты вектора

Definition at line 386 of file numvector.h.

387 {
388 return (*this & *this);
389 }//length2()

◆ member()

size_t VMlib::numvector< float , n >::member ( const P &  s) const
inlineinherited

Проверка вхождения элемента в вектор

Template Parameters
Pтип данных проверяемого элемента
Parameters
[in]sпроверяемый элемент
Returns
позиция первого вхождения элемента s; если не входит — возвращает (-1), приведенный к типу size_t

Definition at line 433 of file numvector.h.

434 {
435 for (size_t i = 0; i < n; ++i)
436 if (this->data[i] == s)
437 return i;
438
439 return static_cast<size_t>(-1);
440 }//member(...)

◆ norm1()

auto VMlib::numvector< float , n >::norm1 ( ) const -> typename std::remove_const<typename std::remove_reference<decltype(this->data[0])>::type>::type
inlineinherited

Вычисление 1-нормы вектора

Сумма модулей компонент вектора

Returns
1-норма вектора

Definition at line 340 of file numvector.h.

341 {
342 typename std::remove_const<typename std::remove_reference<decltype(this->data[0])>::type>::type res = 0;
343 for (size_t i = 0; i < n; ++i)
344 res += abs(this->data[i]);
345 return res;
346 }//norm1()

◆ normalize()

void VMlib::numvector< float , n >::normalize ( newlen = 1.0)
inlineinherited

Нормирование вектора на заданную длину

Если в качестве новой длины указано отрицательное число — у вектора будет изменено направление

Template Parameters
Pтип числа, задающего длину вектора
Parameters
[in]newlenновая длина вектора (по умолчанию 1.0)
Warning
Работает корректно только для векторов с компонентами типа float и double

Definition at line 419 of file numvector.h.

420 {
421 auto ilen = static_cast<decltype(this->data[0] * newlen)>(newlen / std::max(this->length(), 1e-16));
422 *this *= ilen;
423 }//normalize(...)
P length() const
Вычисление 2-нормы (длины) вектора
Definition numvector.h:374

◆ norminf()

auto VMlib::numvector< float , n >::norminf ( ) const -> typename std::remove_const<typename std::remove_reference<decltype(this->data[0])>::type>::type
inlineinherited

Вычисление inf-нормы вектора

Наибольшая по модулю компонента вектора

Returns
inf-норма вектора

Definition at line 354 of file numvector.h.

355 {
356 typename std::remove_const<typename std::remove_reference<decltype(this->data[0])>::type>::type res = 0;
357 for (size_t i = 0; i < n; ++i)
358 {
359 if (abs(this->data[i]) > res)
360 res = abs(this->data[i]);
361 }
362 return res;
363 }//norminf()

◆ operator std::set< P >()

VMlib::numvector< float , n >::operator std::set< P > ( ) const
inlineinherited

Приведение вектора к типу std::set.

Template Parameters
Pтип данных компонент множества
Returns
множество типа std::set, состоящее из тех же элементов, что исходный вектор

Definition at line 449 of file numvector.h.

450 {
451 std::set<P> newset;
452 for (size_t i = 0; i < n; ++i)
453 newset.insert(this->data[i]);
454 return newset;
455 }//toSet()

◆ operator std::vector< P >()

VMlib::numvector< float , n >::operator std::vector< P > ( ) const
inlineinherited

Приведение вектора к типу std::vector.

Template Parameters
Pтип данных компонент std::vector
Returns
вектор типа std::vector, состоящий из тех же элементов, что исходный вектор

Definition at line 463 of file numvector.h.

464 {
465 std::vector<P> vec;
466 vec.reserve(n);
467 for (size_t i = 0; i < n; ++i)
468 vec.push_back(this->data[i]);
469 return vec;
470 }

◆ operator!=()

bool VMlib::numvector< float , n >::operator!= ( const numvector< P, n > &  y) const
inlineinherited

Перегрузка оператора "!=" логического неравенства

Template Parameters
Pтип данных компонент вектора, с которым производится сравнение
nдлина вектора
Parameters
[in]yконстантная ссылка на сравниваемый вектор
Returns
true, если векторы различаются, false в противном случае

Definition at line 327 of file numvector.h.

328 {
329 return !(*this == y);
330 }//operator!=(...)

◆ operator&()

auto VMlib::numvector< float , n >::operator& ( const numvector< P, n > &  y) const-> typename std::remove_const<decltype(this->data[0] * y[0])>::type
inlineinherited

Оператор "&" скалярного умножения

Template Parameters
Pтип данных компонент вектора - второго сомножителя
nдлина обоих векторов
Parameters
[in]yконстантная ссылка на второй множитель
Returns
результат вычисления скалярного произведения, приведенный к нужному типу

Definition at line 126 of file numvector.h.

127 {
128 typename std::remove_const<decltype(this->data[0] * y[0])>::type res = 0;
129 for (size_t j = 0; j < n; ++j)
130 res += this->data[j] * y[j];
131 return res;
132 }//operator&(...)

◆ operator*()

auto VMlib::numvector< float , n >::operator* ( const P  c) const-> numvector<typename std::remove_const<decltype(this->data[0] * c)>::type, n>
inlineinherited

Оператор "*" умножения вектора на число (вектор слева, число справа)

Template Parameters
Pтип данных множителя
nдлина вектора
Parameters
[in]cчисло-множитель
Returns
результат умножения вектора на число, приведенный к соответствующему типу

Definition at line 270 of file numvector.h.

271 {
272 numvector<typename std::remove_const<decltype(this->data[0] * c)>::type, n> res;
273 for (size_t i = 0; i < n; ++i)
274 res[i] = c * this->data[i];
275 return res;
276 }//operator*(...)

◆ operator*=()

numvector< float , n > & VMlib::numvector< float , n >::operator*= ( c)
inlineinherited

Оператор "*=" домножения вектора на действительное число

Template Parameters
Tтип данных компонент вектора
Pтип данных множителя
nдлина вектора
Parameters
[in]cчисловой множитель типа, приводимого к типу компонент вектора
Returns
ссылку на самого себя после домножения на число

Definition at line 175 of file numvector.h.

176 {
177 for (size_t i = 0; i < n; ++i)
178 this->data[i] *= c;
179 return *this;
180 }//operator*=(...)

◆ operator+() [1/2]

const numvector< float , n > & VMlib::numvector< float , n >::operator+ ( ) const
inlineinherited

Оператор "+" унарного плюса

Template Parameters
Tтип данных компонент вектора
nдлина вектора
Returns
константную ссылку на самого себя

Definition at line 298 of file numvector.h.

299 {
300 return *this;
301 }//operator+()

◆ operator+() [2/2]

auto VMlib::numvector< float , n >::operator+ ( const numvector< P, n > &  y) const-> numvector<typename std::remove_const<decltype(this->data[0] + y[0])>::type, n>
inlineinherited

Оператор "+" сложения двух векторов

Template Parameters
Pтип данных компонент вектора - второго слагаемого
nдлина вектора
Parameters
[in]yконстантная ссылка на прибавляемый вектор
Returns
результат сложения двух векторов, приведенный к нужному типу

Definition at line 238 of file numvector.h.

239 {
240 numvector<typename std::remove_const<decltype(this->data[0] + y[0])>::type, n> res;
241 for (size_t i = 0; i < n; ++i)
242 res[i] = this->data[i] + y[i];
243 return res;
244 }//operator+(...)

◆ operator+=()

numvector< float , n > & VMlib::numvector< float , n >::operator+= ( const numvector< P, n > &  y)
inlineinherited

Оператор "+=" прибавления другого вектора

Template Parameters
Tтип данных компонент вектора
Pтип данных компонент прибавляемого вектора
nдлина вектора
Parameters
[in]yконстантная ссылка на прибавляемый вектор
Returns
ссылку на самого себя после сложения с другим вектором

Definition at line 207 of file numvector.h.

208 {
209 for (size_t i = 0; i < n; ++i)
210 this->data[i] += y[i];
211 return *this;
212 }//operator+=(...)

◆ operator-() [1/2]

numvector< float , n > VMlib::numvector< float , n >::operator- ( ) const
inlineinherited

Оператор "-" унарного минуса

Template Parameters
Tтип данных компонент вектора
nдлина вектора
Returns
противоположный вектор

Definition at line 284 of file numvector.h.

285 {
286 numvector<T, n> res;
287 for (size_t i = 0; i < n; ++i)
288 res[i] = -this->data[i];
289 return res;
290 }//operator-()

◆ operator-() [2/2]

auto VMlib::numvector< float , n >::operator- ( const numvector< P, n > &  y) const-> numvector<typename std::remove_const<decltype(this->data[0] - y[0])>::type, n>
inlineinherited

Оператор "-" вычитания двух векторов

Template Parameters
Pтип данных компонент вектора - вычитаемого
nдлина вектора
Parameters
[in]yконстантная ссылка на вычитаемый вектор
Returns
результат вычитания двух векторов, приведенный к нужному типу

Definition at line 254 of file numvector.h.

255 {
256 numvector<typename std::remove_const<decltype(this->data[0] - y[0])>::type, n> res;
257 for (size_t i = 0; i < n; ++i)
258 res[i] = this->data[i] - y[i];
259 return res;
260 }//operator-(...)

◆ operator-=()

numvector< float , n > & VMlib::numvector< float , n >::operator-= ( const numvector< P, n > &  y)
inlineinherited

Оператор "-=" вычитания другого вектора

Template Parameters
Tтип данных компонент вектора
Pтип данных компонент вычитаемого вектора
nдлина вектора
Parameters
[in]yконстантная ссылка на вычитаемый вектор
Returns
ссылка на самого себя после вычитания другого вектора

Definition at line 223 of file numvector.h.

224 {
225 for (size_t i = 0; i < n; ++i)
226 this->data[i] -= y[i];
227 return *this;
228 }//operator-=(...)

◆ operator/=()

numvector< float , n > & VMlib::numvector< float , n >::operator/= ( c)
inlineinherited

Оператор "/=" деления вектора на действительное число

Template Parameters
Tтип данных компонент вектора
Pтип данных множителя
nдлина вектора
Parameters
[in]cчисловой делитель типа, приводимого к типу компонент вектора
Returns
ссылку на самого себя после деления на число

Definition at line 191 of file numvector.h.

192 {
193 for (size_t i = 0; i < n; ++i)
194 this->data[i] /= c;
195 return *this;
196 }//operator/=(...)

◆ operator==()

bool VMlib::numvector< float , n >::operator== ( const numvector< P, n > &  y) const
inlineinherited

Оператор "==" логического равенства

Template Parameters
Pтип данных компонент вектора, с которым производится сравнение
nдлина вектора
Parameters
[in]yконстантная ссылка на сравниваемый вектор
Returns
true, если векторы одинаковые, false в противном случае

Definition at line 311 of file numvector.h.

312 {
313 for (size_t i = 0; i < n; ++i)
314 if (this->data[i] != y[i])
315 return false;
316 return true;
317 }//operator==(...)

◆ operator[]() [1/2]

float & VMlib::numvector< float , n >::operator[] ( size_t  i)
inlineinherited

Definition at line 104 of file numvector.h.

105 {
106 return this->data[i];
107 }

◆ operator[]() [2/2]

const float & VMlib::numvector< float , n >::operator[] ( size_t  i) const
inlineinherited

Definition at line 109 of file numvector.h.

110 {
111 return this->data[i];
112 }

◆ operator^() [1/2]

auto VMlib::numvector< float , n >::operator^ ( const numvector< P, 2 > &  y) const-> typename std::remove_const<decltype(this->data[0] * y[1])>::type
inlineinherited

Оператор "^" вычисления третьей компоненты векторного произведения

Определен только для двумерных векторов

Template Parameters
Pтип данных компонент вектора - второго множителя
Parameters
[in]yконстантная ссылка на второй множитель
Returns
результат вычисления третьей компоненты векторного произведения двух двумерных векторов, приведенный к нужному типу

Definition at line 161 of file numvector.h.

162 {
163 return (this->data[0] * y[1] - this->data[1] * y[0]);
164 }//operator^(...)

◆ operator^() [2/2]

auto VMlib::numvector< float , n >::operator^ ( const numvector< P, 3 > &  y) const-> numvector<typename std::remove_const<decltype(this->data[1] * y[2])>::type, 3>
inlineinherited

Оператор "^" векторного произведения

Определен только для трехмерных векторов

Template Parameters
Pтип данных компонент вектора - второго сомножителя
Parameters
[in]yконстантная ссылка на второй множитель
Returns
результат вычисления векторного произведения, приведенный к нужному типу

Definition at line 143 of file numvector.h.

144 {
145 numvector<typename std::remove_const<decltype(this->data[1] * y[2])>::type, 3> vec;
146 vec[0] = this->data[1] * y[2] - this->data[2] * y[1];
147 vec[1] = this->data[2] * y[0] - this->data[0] * y[2];
148 vec[2] = this->data[0] * y[1] - this->data[1] * y[0];
149 return vec;
150 }//operator^(...)

◆ proj()

numvector< float , n > VMlib::numvector< float , n >::proj ( const numvector< P, n > &  v)
inlineinherited

Проекция вектора на вектор v.

Template Parameters
Tтип данных компонент вектора
Pтип данных константы
nдлина вектора
vвектор, на который проецируем
Returns
результирующий вектор

Definition at line 543 of file numvector.h.

544 {
545 numvector<T, n> res;
546 res = ((*this & v) / (v & v))* v;
547
548 return res;
549 }

◆ rotated()

Point2Df VMlib::Point2Df::rotated ( const float  angle = 1.5707963267948966192313216916398f) const
inline

Поворот вектора на произвольный угол против часовой стрелки (по умолчанию 90 градусов)

Parameters
[in]angleугол поворота в радианах (по умолчанию \( \frac{\pi}{2} \))
Returns
новый вектор, полученный поворотом старого

Definition at line 112 of file Point2D.h.

112 {
113 Point2Df res;
114 float cosa = cosf(angle);
115 float sina = sinf(angle);
116
117 res[0] = data[0] * cosa - data[1] * sina;
118 res[1] = data[0] * sina + data[1] * cosa;
119 return res;
120 }
Класс, опеделяющий двумерный вектор
Definition Point2D.h:77

◆ rotateLeft()

numvector< float , n > VMlib::numvector< float , n >::rotateLeft ( size_t  k) const
inlineinherited

"Вращение" вектора на несколько позиций влево

Исходный вектор при этом не изменяется

Template Parameters
Tтип данных компонент вектора
nдлина вектора
Parameters
[in]kколичество позиций, на которые производится "вращение"
Returns
вектор, полученный "вращением" исходного на k позиций влево

Definition at line 481 of file numvector.h.

482 {
483 if (k > n)
484 throw;
485
486 if (k == n)
487 return *this;
488
489 numvector<T, n> res;
490
491 //for (size_t i = 0; i < n; ++i)
492 // res[i] = r[(i + k) % n];
493
494 for (size_t i = 0; i < n - k; ++i)
495 res[i] = this->data[i + k];
496 for (size_t i = n - k; i < n; ++i)
497 res[i] = this->data[i + k - n];
498 return res;
499 }//rotateLeft(...)

◆ size()

size_t VMlib::numvector< float , n >::size ( ) const
inlineinherited

Definition at line 114 of file numvector.h.

115 {
116 return n;
117 }

◆ toZero()

numvector< float , n > & VMlib::numvector< float , n >::toZero ( val = 0)
inlineinherited

Установка всех компонент вектора в константу (по умолчанию — нуль)

Template Parameters
Tтип данных компонент вектора
Pтип данных константы
nдлина вектора
Parameters
[in]valконстанта, значению которой приравниваются все компоненты вектора (по умолчанию 0)
Returns
ссылка на сам вектор

Definition at line 527 of file numvector.h.

528 {
529 for (size_t i = 0; i < n; ++i)
530 this->data[i] = val;
531 return *this;
532 }

◆ unit()

auto VMlib::numvector< float , n >::unit ( newlen = 1) const-> numvector<typename std::remove_const<decltype(this->data[0] * newlen)>::type, n>
inlineinherited

Вычисление орта вектора или вектора заданной длины, коллинеарного данному

Если в качестве новой длины указано отрицательное число — вектор будет противоположно направленным

Template Parameters
Pтип числа, задающего длину вектора
Parameters
[in]newlenдлина получаемого вектора (по умолчанию 1.0)
Returns
вектор, коллинеарный исходному, заданной длины (по умолчанию 1.0)
Warning
для получения float-орта от вектора с компонентами типа float или целыми нужно явно указать параметр 1.0f

Definition at line 402 of file numvector.h.

403 {
404 auto ilen = static_cast<decltype(this->data[0] * newlen)>(newlen / std::max(this->length(), 1e-16));
405 return (*this * ilen);
406 }//unit(...)

Member Data Documentation

◆ data

float VMlib::numvector< float , n >::data[n]
protectedinherited

Definition at line 101 of file numvector.h.


The documentation for this class was generated from the following files: