forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   variable inf (http://forum.boolean.name/showthread.php?t=1922)

jimon 15.11.2006 19:04

variable inf
 
как определить сабж ?

понимаю что я ламер\чайник незнаю всемирных законов транспортации атомов из одной лажи в другую и тд ... просто C++ я учил как едисон - експерементально :)
поетому от хорошого RTFM по теме не откажусь

нигде в литературе не нашол как определять переменая ушла в бесконечность или нет :)
но если ее вывести в консоль - то пишется что переменая = бексонечности ....
тоесть определить то можно
но как ? :)

ps. где то в матрицах портятся углы ... моделька то нормально вращается
а вот дальше углы портятся ... и вообще плохо приравниваются к реальности :(

alcoSHoLiK 15.11.2006 19:36

Re: variable inf
 
Как частичное решение можно создать константу с очень большим значением. Потом проверять, если переменная больше этой константы, то infinity.

impersonalis 16.11.2006 00:38

Re: variable inf
 
мож через косвенную адресацию проверить состояние памяти?
хотя фигня какая-то... можно создать свой тип данных (не революционный - чисто врпаппер над числовым типом) и перегрузить для него арифметические опреации по типу:
z=a+b
внутри сложения проверяется критичность выполнения данной операции... это нексолько автоматизирует процесс... Но остаётся проблема рациональной оценки возможности переполнения...
Если мне не изменяет память за это отвечал один из регистров камня?

Ещё есть относительно медленный но надёжный вариант (судя по тому, что числа огромные - скорость выполнения уже не критична) - написать враппер для работы с большими числами. В сети есть статьи на эту тему (подобные задачи частенько бываю на олимпиадах): суть, в эмулировании какого угодно числа разрядов, путём хранения значения каждой позиции в массиве (динамическом массиве)

jimon 16.11.2006 17:02

Re: variable inf
 
трабла в трансформации матрицы physx -> irr
Код:

void CCar_PhysX::UpdateIrrCarBody()
{
        NxMat34 pose = GetNxVehicle()->getActor()->getGlobalPose();

        const NxVec3 pos = pose.t;
        const NxMat33 orient = pose.M;
        irr::core::matrix4 irrMat;
        orient.getColumnMajorStride4(&irrMat.M[0]);
        pos.get(&irrMat.M[12]);
        irrMat.M[3] = irrMat.M[7] = irrMat.M[11] = 0.0f;
        irrMat.M[15] = 1.0f;

        irr::core::matrix4 irrMat2;
        irrMat2.setRotationDegrees(irr::core::vector3df(0,-90.0f,0));
        irrMat*=irrMat2;


        car_node->setPosition(irrMat.getTranslation());
        car_node->setRotation(irrMat.getRotationDegrees());
        car_node->updateAbsolutePosition();
}

когда поворот обьекта в physx по оси Y будет приблежен к 0 и 180
то в матрице irrMat поворот по Y почему то обозначается как inf
и из-за етого модель "ищезает" - позицируется не правильно


Часовой пояс GMT +4, время: 12:47.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot