2016-12-05 7 views
1

Как и в предыдущем упражнении, я компоную кубы в письме W. Опять же, если у вас возникли проблемы с визуализацией конечного результата, подумайте о каждый куб как пиксель, создавая спрайт «W».MEL (майя) - W-образное кубическое устройство не пересекается в точках

я создал 4 разделов моего кода, 1 для каждого хода, составляющих письмо, но 2 из имеют один и тот же «корневой точки»:

file -f -new; 

//Specifies starting coordinates 

int $xpnt1 = 5.5; 
int $xpnt2 = -5.5; 

////////////////// 

for($i=1;$i<=25;$i++) { //BRANCH 1, POINT 1, DIR L 
    polyCube; 
    move -ws $xpnt1 0 0; 
    //select "pCube1"; 
    move -r ($i*1) ($i*1) 0; 
    move -r $xpnt1 0 0 pCube1.scalePivot; 
    } 
for($i=1;$i<=25;$i++) {//BRANCH 2, POINT 1, DIR R 
    polyCube; 
    move -ws $xpnt1 0 0; 
    //select "pCube26"; 
    move -r ($i*-1) ($i*1) 0; 
    move -r $xpnt1 0 0 pCube26.scalePivot; 
    } 
for($i=1;$i<=25;$i++) {//BRANCH 3, POINT 2, DIR L 
    polyCube; 
    move -ws $xpnt2 0 0; 
    //select "pCube51"; 
    move -r ($i*1) ($i*1) 0; 
    move -r $xpnt2 0 0 pCube51.scalePivot; 
    } 
for($i=1;$i<=25;$i++) { //BRANCH 4, POINT 2, DIR R 
    polyCube; 
    move -ws $xpnt2 0 0; 
    //select "pCube76"; 
    move -r ($i*-1) ($i*1) 0; 
    move -r $xpnt2 0 0 pCube76.scalePivot; 
    } 

До сих пор я был в состоянии получить кубики, чтобы порождать, как мне хотелось бы. Основная проблема здесь - это ошибка, возникшая ошибочно: несмотря на то, что у каждой из двух сторон каждая из 5 или 5,5 как начальная координата, они заканчиваются разнесением на то, что представляется программой: this is the current result. Что бы я ни потерял или проигнорировал это вызывает эту проблему?

ХРАНИТЬ В ВИДУ, ЧТО Я осознаю 5,5/-5,5 вырабатываться не будет ПРАВИЛЬНЫЙ W. Я ИСПОЛЬЗУЮ ЭТИ COORDS ИСПЫТАНИЯ Нерест БАЗОВЫЕ КУБОВ оккупировать ЖЕ ПРОСТРАНСТВО.

ответ

1

Смещение детали в петлях от for($i=1;$i<=25;$i++) до for($i=0;$i<25;$i++) остановится на промежутке.

Раньше, когда петли начинались с $ i = 1, это означало, что на первой итерации линии с move -r ($i*±1) ($i*±1) 0; перенесли первый блок на 1 диагональ от начальной координаты.

Поскольку мы хотим, чтобы первый блок в каждой ветви не сдвигался с начальной координаты, мы хотим, чтобы строка move -r ($i*±1) ($i*±1) 0; не оказывала влияния на первую итерацию. Чтобы исправить это, мы можем иметь $ i равным 0 в первой итерации, чтобы линия стала move -r 0 0 0; для первого блока.

И в конце вы все еще хотите, чтобы в каждой ветви было 25 блоков, поэтому условие завершения для цикла For изменяется с $i<=25 на $i<25, чтобы учесть, что в начале есть сдвиг.

Вот код (единственное, что изменилось, это условия для каждого из 4 Для петель.)

file -f -new; 

//Specifies starting coordinates 

int $xpnt1 = 5.5; 
int $xpnt2 = -5.5; 

////////////////// 

for($i=0;$i<25;$i++) { //BRANCH 1, POINT 1, DIR L 
    polyCube; 
    move -ws $xpnt1 0 0; 
    //select "pCube1"; 
    move -r ($i*1) ($i*1) 0; 
    move -r $xpnt1 0 0 pCube1.scalePivot; 
    } 
for($i=0;$i<25;$i++) {//BRANCH 2, POINT 1, DIR R 
    polyCube; 
    move -ws $xpnt1 0 0; 
    //select "pCube26"; 
    move -r ($i*-1) ($i*1) 0; 
    move -r $xpnt1 0 0 pCube26.scalePivot; 
    } 
for($i=0;$i<25;$i++) {//BRANCH 3, POINT 2, DIR L 
    polyCube; 
    move -ws $xpnt2 0 0; 
    //select "pCube51"; 
    move -r ($i*1) ($i*1) 0; 
    move -r $xpnt2 0 0 pCube51.scalePivot; 
    } 
for($i=0;$i<25;$i++) { //BRANCH 4, POINT 2, DIR R 
    polyCube; 
    move -ws $xpnt2 0 0; 
    //select "pCube76"; 
    move -r ($i*-1) ($i*1) 0; 
    move -r $xpnt2 0 0 pCube76.scalePivot; 
    } 

Here is an image of what it now looks like и два блока в начальной координаты, как и ожидалось.

+0

Я думаю, что в моих объяснениях был немного длинным, пожалуйста, дайте мне знать, если это так. –

+0

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

+0

А, я имел в виду, что редактирование было полезным, и чтобы спасти других, время от времени работает, но «не одобрено». Полагаю, я пытался объяснить, что я понял из чтения. Первый раз слишком мало, второй раз слишком много здесь. Наверное, сейчас я оставлю его. –