- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
template<typename T> struct OBB
{
vector3<T> position;
matrix3<T> transform;
vector3<T> GetPoint(bool positiveX, bool positiveY, bool positiveZ) const
{
const vector3<T> localUnitPoint = {T(positiveX)-T(0.5), T(positiveY)-T(0.5), T(positiveZ)-T(0.5)};
return vector3<T>(GetFullTransform()*vector4<T>(localUnitPoint, 1));
}
AABB<T> BoundingAABB() const
{
AABB<T> result;
result.max = result.min = position;
for(bool b1: {false, true})
for(bool b2: {false, true})
for(bool b3: {false, true}) //Перебираем все точки параллелепипеда
result.AddPoint(GetPoint(b1, b2, b3));
return result;
}
};
Что-то даже не могу вспомнить, когда я такое написал. Случайно наткнулся и решил, что это должно быть здесь.
guest 06.08.2016 00:39 # +22
Вот как надо, анскилябра.
gammaker 06.08.2016 00:52 # +19
for (int i=0; i<8; i++)
result.AddPoint(GetPoint(i >> 2, (i >> 1) & 1, i & 1));
Только надо тогда вместо bool числа поставить, а то варнинги будут. Или использовать !!
guest 06.08.2016 01:00 # +20
gammaker 06.08.2016 01:04 # +18
bormand 06.08.2016 08:08 # +18
kegdan 06.08.2016 08:26 # +17
bormand 06.08.2016 08:46 # +17
А чё с ней? В сигнатуре bool, а i & 4 - инт. Неявный каст, все дела. В общем-то после (i & 4) != 0 даже вижуалка ругаться перестаёт (а остальным компиляторам и так похуй).
kegdan 06.08.2016 09:24 # +17
bormand 06.08.2016 09:25 # +17
> AddPoint(GetPoint())
А тут то что не так?
kegdan 06.08.2016 03:56 # +18
PS - а внутри метода такой ебучий свич что бы понять какой угол обработать, ага...
Kozel 06.08.2016 10:58 # +22
Shamill 12.08.2016 15:27 # −1
guest 06.08.2016 11:08 # +12
netherwire 12.08.2016 12:01 # +21
Ну сколько уже можно движки писать? Т_Т
dxd 12.08.2016 12:08 # +16