2015-06-04 3 views
-1

Я хочу нарисовать фрактальное дерево в обработке, но я не знаю, как это сделать. И моя идея состоит в том, чтобы нарисовать двоичное дерево. Но у дерева должно быть больше ветвей. И я не знаю, как это кодировать. Пожалуйста, помогите мне, спасибо. Теперь я нарисовал 2D-дерево, но мой босс попросил меня изменить его на 3D. И это мой код, и я не знаю, как это сделать. И я новый человек в Обработка программного обеспечения. Пожалуйста, помогите мне.Рисование дерева фракталов обработкой

void tree(float treeLength, float strokeWeight, int currentTreeStep) 
{ 
    if (currentTreeStep < maxTreeSteps) { 

     if(currentTreeStep >= 8 && currentTreeStep <=10) 
      stroke(#558351); //set color light green 
     else{ 
      if(currentTreeStep >10 && currentTreeStep <=20) 
       stroke(#199B0E); //set hard green   
      else{ 
       stroke(#311919);//set branch color 
      } 
     } 
     strokeCap(PROJECT); 
     strokeWeight(strokeWeight); 
     line(0, 0, 0, -treeLength); 
     translate(0, -treeLength); 

     strokeWeight *= 0.5; 
     treeLength *= 0.75; 

     if (treeLength > 1) { 
      pushMatrix(); 
      rotate(radians(branchAngle)); 
      tree(treeLength, strokeWeight, currentTreeStep + 1); 
      popMatrix(); 

      pushMatrix(); 
      rotate(-radians(branchAngle)); 
      tree(treeLength, strokeWeight, currentTreeStep + 1); 
      popMatrix(); 
     } 
    } 
} 
+1

Какая часть, которая дает вам неприятности? Где находится ваш [MCVE] (http://stackoverflow.com/help/mcve)? Обратите внимание, что редактор обработки содержит массу примеров, в том числе несколько фрактальных деревьев. –

+0

Спасибо за вашу помощь, и я установил 2D-дерево через Google. Но есть проблема, как изменить его на 3D. – WangYao

ответ

0

Вообще-то это не так интуитивно, как можно было перейти от 2D (тригонометрия) в основном в 3D (линейная алгебра: вектор и умножение матриц).

Посмотрите на это example с одного из курсов, которые я сделал.

enter image description here

Надеюсь, вы также будете видеть 3D-матрица умножения часть в действии, а

+0

Я запускаю свой код в своей обработке, но он не может работать, я исправил некоторые проблемы, и он не может работать. Мне нужно изменить вектор на PVector, но компилятор говорит «метод get (float []) в типе Pvector не применим для аргументов (float) "(я запускаю его в Processing 3.0a5). И изменился мой код. for (int i = 0; i WangYao

+0

@WangYao Vector ссылается на [java.util.Vector] (https://docs.oracle.com/javase/7/docs/api/java/util/Vector.html), который примерно соответствует размеру/динамическому массиву. Пожалуйста, не заменяйте это PVector. Просто добавьте эту строку: '' 'import java.util.Vector;' ''. Обработка 2.0 и новее удалили импорт в '' 'java.util. *' '', Поэтому вы получаете сообщение об ошибке –

+0

Большое вам спасибо, я исправил его вашим гидом. И еще раз спасибо. Я сожалею моя репутация не достигает 15. Я не могу проголосовать за ваш ответ. Так извините. – WangYao

 Смежные вопросы

  • Нет связанных вопросов^_^