Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Математическая библиотека для физики и графики..и.т.д ! (3 стр)

Математическая библиотека для физики и графики..и.т.д ! (3 стр)

Страницы: 1 2 3 4 5 6 Следующая »
werasaimonПостоялецwww1 фев. 201822:30#30
/A\
> Я не пытался показать лучший код, я говорю что его код может сломаться если у
> структуры будет задано выравнивание и элементы окажутся не плотно упакованы,
> тогда по индексу 1 окажется не 'y' а пустое место оставленное для выравнивание,
> это конечно маловероятный случай, но все же.
Тогда надо делать через массив v[4]  который будет обеденёон  в union с (x , y , z, w ) Ну тобишь все пирименые будут указывать на одну и туже область памятьи . И перезагружать оператор так :
const T & operator[](const int& n) const
{
   assert( n >= 0 && n < 4 );
   return v[n];
}
Да ? Или нет ?
А почему v[] , а не data[] ?

P.S: Избавляться от пирименых x,y,z,w категорический запрещено вышыми силами !

Правка: 1 фев. 2018 22:35

denesikПостоялецwww1 фев. 201822:38#31
werasaimon
>
> Тогда надо делать через массив v[4]  который будет обеденёон  в union с (x , y
> , z, w ) Ну тобишь все пирименые будут указывать на одну и туже область памятьи
> . И перезагружать оператор так :
да
werasaimon
>
> А почему v[] , а не data[] ?
А почему не Вася а Петя?
/A\Постоялецwww1 фев. 201822:47#32
werasaimon
достаточно в функции написать
static_assert(sizeof(*this) == sizeof(T[4]), "");
тогда просто не скомпилируется
werasaimonПостоялецwww1 фев. 201823:11#33
denesik
> А почему не Вася а Петя?
Потому что вася мене информатвное имя чем Петя , в данной ситуации ! Ваааааааасилыыыыыыыыыий )))

/A\
> достаточно в функции написать
> static_assert(sizeof(*this) == sizeof(T[4]), "");
> тогда просто не скомпилируется
Типа этого :

const T & operator[](const int& n) const
{
   static_assert(sizeof(*this) == sizeof(T[4]), "");
   assert( n >= 0 && n < 4 );
   return (&x)[n];
}
Или что ты имееш виду ?


P.S: А знаете что ?

Правка: 1 фев. 2018 23:17

/A\Постоялецwww1 фев. 201823:25#34
werasaimon
> Типа этого :
да
denesikПостоялецwww2 фев. 20183:11#35
werasaimon
> const T & operator[](const int& n) const

Ссылка тут не нужна, кстати, она не экономит ничего. Передавай по значению.

werasaimonПостоялецwww2 фев. 201822:01#36
denesik
> Ссылка тут не нужна, кстати, она не экономит ничего. Передавай по значению
Сылка указывает не постретсвено на область памяти пирименых , чтоб компилятор не делал копию уже инцилизированых пирименых . И плюс это правило хорошого кода !


P.S: Кто-то умеет в алгебру Келли?

Правка: 2 фев. 2018 22:03

/A\Постоялецwww2 фев. 201823:08#37
denesik
> Ссылка тут не нужна, кстати, она не экономит ничего. Передавай по значению.
вариант 1
T operator [] (int i) const {}

const vec v;
v[0] += 1; // ok

вариант 2

const T& operator [] (int i) const {}

const vec v;
v[0] += 1; // fail

И что из этого правильно?
Но конечно именно ссылка не играет роли, но без ссылки можно забыть сделать константный результат.

denesikПостоялецwww2 фев. 201823:55#38
/A\
> И что из этого правильно?
const int& n
я про эту ссылку. Она бесполезная
werasaimonПостоялецwww3 фев. 201820:44#39
denesik
Чемь  эта ссылка там мишает ?

Правка: 3 фев. 2018 20:44

Vlad2001_MFSПостоялецwww4 фев. 201810:00#40
werasaimon
Встроенные типы данных в C++ правильно передавать по значению.
Я даже год или два назад видел результаты сравнения произодительности этих двух способов. По значению быстрее.
ProlenПостоялецwww4 фев. 201810:01#41
Слабоватая библиотека.
werasaimonПостоялецwww4 фев. 201811:49#42
Prolen
> Слабоватая библиотека.
почему ? В CMath всё эсть . Даже октонион для струн,  и ,тензорные примочки для релятьвиской физики .и.т.д !


Vlad2001_MFS
> Встроенные типы данных в C++ правильно передавать по значению.
> Я даже год или два назад видел результаты сравнения произодительности этих двух
> способов. По значению быстрее.
>
А почему ?

Правка: 4 фев. 2018 11:51

/A\Постоялецwww4 фев. 201814:01#43
werasaimon
> А почему ?
Потому что компилятор не осилил оптимизацию, такое бывает, если ему что-то мешает.
Но если функция инлайнится, то потерь в производительности быть не должно
werasaimonПостоялецwww4 фев. 201821:50#44
/A\
> Потому что компилятор не осилил оптимизацию, такое бывает, если ему что-то
> мешает.
> Но если функция инлайнится, то потерь в производительности быть не должно
Ну я ведь всё заинлайнил . Что же мне делать __forceilnine , или что ?

P.S : что делает эта дериктива  __attribute__((aligned(8))) . И как это помогает оптимизировать код ? Она выравнивает длину кешеривания  под ×64


Может кто подскажет в чёмь разница между file.h и file.hpp?

Правка: 5 фев. 2018 0:50

Страницы: 1 2 3 4 5 6 Следующая »

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр