1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Math2

Тема в разделе "RenderMan", создана пользователем -, 1 июн 2001.

Модераторы: Moderator.
  1. Guest

    То что SL понимает только одномерные массивы
    это блин было для меня как серпом по....
    Подскажите плиз:
    Можно ли индексы aa,bb,cc трехмерного массива размером [a],,[c]
    переконвертить в индекс одномерного массива аналогичной
    длинны? Типа формула какая и все такое...
    Потому как что то типа

    index = 0;
    for (i = 0; i < aa+1; i+=1){
    for (j = 0; j < bb+1; j+=1){
    for (k = 0; k < cc+1; k+=1){
    index += 1;
    }
    }
    }
    index -= 1;

    стоит слишком дорого для последнего элемента массива
    скажем 100х100х100.
    Да к тому же если можно будет сделать
    цивилизованным способом то движок разбиения
    пространства на воксели вообще заключаеться в
    трех строках :)
     
  2. Guest

    Можно.

    Двухмерный случай.

    Нужный нам элемент массива - [x,y], размерность массива - [0..a,0..b]. Первый элемент имеет номер 0.

    Тогда произвольный элемент имеет номер

    (a+1)y+x

    Ну то есть нужно просто посчитать, какая строчка, столбец и прочее.

    Трехмерный случай по идее будет:

    ((a+1)y+x)(b+1)+z

    хотя я могу и ошибаться...
     
  3. Guest

    Ага немного обшибся...
    Кажеться это работает (Mel)

    int $i,$j,$k;
    int $a = 4;
    int $b = 3;
    int $c = 4;
    int $count = 0;
    int $my = 0;
    for ($i = 0; $i<$a; $i++ ){
    for ($j = 0; $j<$b; $j++ ){
    for ($k = 0; $k<$c; $k++ ){
    $my =$i*$b*$c+($j+1)*$k + ($c-$k)*$j;
    $count+=1;
    $cprint = $count-1;
    print("My "+$my+" must be "+$cprint+"\n");
    }
    }
    }
     
  4. Guest

    Картинки покажи ;-)
     
  5. Guest

    Рано еще...там работы валом. Как сделаю - свистну.
     
Модераторы: Moderator.

Поделиться этой страницей