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

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

Страницы: 1 2 3 4 5 6 Следующая »
werasaimonПостоялецwww5 июля 201822:50#60
Добавил новые методы в IMatrix4x4 !
werasaimonПостоялецwww5 сен. 201819:19#61
Как лутше делать такие функции как инициализации матриц , типа:
createLookAt(....) ,
createPerspective(...) ,
createLoretzRelativity(....) .и.т.д . !
Так вот эти функции , методы ,делать статическимми
типа " static IMatrix4x4::IMatrix4x4 func(...) " ,
или лучше напрямую чтоб функция сувала значения в созданный объект void IMatrix4x4::func(...) .
Ну тобишь функции будет вызываться из самого созданого обекта, и ему же присваивать значение !?

Пример использования первого варянта

IMatrix4x4 ModelView = IMatrix4x4::createLookAt(eye, origin, up);

Пример использования второго варянта

IMatrix4x4 ModelView;
ModelView.createLookAt(eye, origin, up);

P.S : скажите какой варянт лутше , и обснуйте почему ?

DODgeПостоялецwww5 сен. 201819:54#62
А почему не сразу оба?
Чтобы не дублировать функционал, внутри второго способа применяешь результат вызова статического метода из первого.
SuslikМодераторwww6 сен. 201810:53#63
werasaimon
второй вариант некорректный, потому что ничего не создаёт, а устанавливает, что не соответствует названию метода. ещё в нём возможна ситуация с неинициализированным объектом, которая для некоторых типов объектов может быть нежелательной.

в первом варианте синтаксически нет гарантии, что память объекта не будет дублирована. для матрицы 4х4 это разницы не играет, а для матрицы 4k x 4k ещё как принципиально.

Правка: 6 сен. 2018 10:55

DelfigamerПостоялецwww6 сен. 201812:17#64
Suslik
> в первом варианте синтаксически нет гарантии, что память объекта не будет
> дублирована.
Можно же
class ExpensiveMatrix
{
    ExpensiveMatrix(ExpensiveMatrix const&) = delete;
    ExpensiveMatrix(ExpensiveMatrix&&);
    ExpensiveMatrix copy() const;
};
Хотя врядли Вера имел в виду именно это.
werasaimonПостоялецwww6 сен. 201819:08#65
Delfigamer
Не делать класс используя патер singleton , вообще не ахти.
Этот патерн вообще называют антипатерном!
Так что даже не знаю стоит ли это делать ?


Suslik
> второй вариант некорректный, потому что ничего не создаёт, а устанавливает, что
> не соответствует названию метода. ещё в нём возможна ситуация в
> неинициализированным объектом, которая для некоторых типов объектов может быть
> нежелательной.
> в первом варианте синтаксически нет гарантии, что память объекта не будет
> дублирована. для матрицы 4х4 это разницы не играет, а для матрицы 4k x 4k ещё
> как принципиально.
>
>
Если не брать во внимания названия типа префикса create . Так какой варянт взять , чтоб гарантировать меньше ошыбок при использовании кода ?

P.S : в коде приветствует обобщоная матрица N × N , котороя потенциально может хоть 4м × 4м !

Правка: 6 сен. 2018 19:18

PanurПостоялецwww6 сен. 201821:42#66
werasaimon

вдруг пригодится для " подглядывания " ( физ.движок используемый американским министерством обороны):

сайт: https://projectchrono.org    репозиторий:  https://github.com/projectchrono

werasaimonПостоялецwww6 сен. 201821:58#67
Panur
О спасибо ! Если кто знает где ещё можно украсть , ой подсмотреть хорошый код то киньте силку пожалуйста !?
Посмотрел я репозитрий этого кода , движок более чем на половину , списаный из кучи других движков , а гдето под чистую вместе с ошыбочными алгоритмами ! "Я знаю про что говорю "

DelfigamerПостоялецwww6 сен. 201822:32#68
werasaimon
Оставляя в стороне твоё мнение о паттернах, где ты там вообще увидел синглетон?
werasaimonПостоялецwww7 сен. 201819:02#69

Delfigamer
> Оставляя в стороне твоё мнение о паттернах,
Это ни моё мнения, это мнения большинства , что этот патерн Silington г..!

Delfigamer
> где ты там вообще увидел синглетон?
Silington это класс одиночка , то бишь не может копироваттся.
А когда ты ставишь конструкотри в приват , тем самым заприщаешь копирование , так это и есть класс Silington по фокату. Видь Silington именно это и подрозумивает.

DelfigamerПостоялецwww7 сен. 201819:43#70
werasaimon
> А когда ты ставишь конструкотри в приват
Вот зануда же.
struct ExpensiveMatrix
{
    ExpensiveMatrix(ExpensiveMatrix const&) = delete;
    ExpensiveMatrix(ExpensiveMatrix&&);
    ExpensiveMatrix copy() const;
};

На всякий случай напомню, что это - пример ситуации, когда
Suslik
> в первом варианте синтаксически нет гарантии, что память объекта не будет
> дублирована
не является истиной.

Правка: 7 сен. 2018 19:45

slepovПостоялецwww7 сен. 201823:03#71
asvp
Обязательно делать через циклы?

это не самое страшное, компилятор развернет цикл

werasaimonПостоялецwww14 сен. 201820:10#72
Немного переписал операторы всех матриц , выправил все математические ошибки , особенно в октонионах  и  матрицах ,
а программных ошыбок было целых 8 !
Вот теперь когда я переписал код , я не уверен что я ещё каких ошыбок не допустил , будь то математических  , или будь то программных !
Помогите найти ошыбки или не точности ? , и раскритикуйте код  так , чтоб я понял почему код г...!? Только аргументировано критикуйте
Kод: https://github.com/werasaimon/IMath
P.S: в коде есть сборка cmake , и также make

Ах да ! Я определился с стилем кода , теперь мой стиль самый лучший  в мире !
Советую всем переходить на этот стиль кода , потому что это объективно самый лучший стиль кодирования в мире . Так что все переписывайте свои коды в этом стиле кода !
вот пример code:

class Test
{
    private:

     int   mData;

   public:


     int GetData() const 
     {
         return mData;
     }

     void SetData( int _data )
     {
        mData = _data; 
     } 

    void Func()
    {
       mData++;
    }

};

Правка: 14 сен. 2018 20:23

slepovПостоялецwww14 сен. 201820:33#73
чем бы дитя ни тешалось..

ну ок, держи порцию яда:

GetOpenGLMatrix - на кой хрен простите в "Математической библиотеке" мелькают слова про OpenGL? ты уже определись что у тебя, мат библиотека или свалка  гв-на под разные нужды.

/A\Постоялецwww14 сен. 201820:34#74
werasaimon
> Помогите найти ошыбки или не точности ?
SIMD_INLINE void SetXY(const IVector2D<T> _v)
во множестве местах _v передается по значению а не по ссылке

for (int i = 0; i < 4; i++)  ret.mRows = mRows - rhs.mRows;
магические числа, есть же константа:
    static const std::size_t components = 4*4;

ну и для функций возвращающих значения лучше добавить аттрибут [[nodiscard]] помогает найти ошибки

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

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

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