Войти
ПрограммированиеФорумФизика

Функция определения минимального/максимального вектора.

#0
15:21, 22 сен. 2006

Читаю материал по физики Якобсента ...

Там есть такой псевдо-код:

for i = 1, 2, 3
   set xi = min(max(xi, 0), 1000)

Вопрос: как в данном случае должны выглядить функции min и max в случае вектора (X, Y, Z).


#1
18:00, 22 сен. 2006

Очевидно, возвращается меньший и больший аргумент соответственно. Аргумент не вектор, а его компонента.

#2
18:06, 22 сен. 2006

т.е. если скажем v1 = {1, 2, 3}, а v2 = {1, 4, 0}
то результатом, должен быть v_max = {1, 4, 3}, v_min = {1, 2, 0} ?

#3
0:51, 23 сен. 2006

denis2005

из Advanced Character Physics - вроде то :)

// Implements particles in a box
void ParticleSystem::SatisfyConstraints() {
   for(int i=0; i<NUM_PARTICLES; i++) { // For all particles
      Vector3& x = m_x[i];
      x = vmin(vmax(x, Vector3(0,0,0)), 
         Vector3(1000,1000,1000));
   }
}
> (vmax operates on vectors taking the component-wise maximum whereas vmin takes the component-wise minimum.) This keeps > all particle positions inside the cube and handles both collisions and resting contact.

да, по компонентам - чтобы частицы не вылетали за пределы куба (0, 0, 0) - (1000, 1000, 1000)

ПрограммированиеФорумФизика

Тема в архиве.