Алгоритм midpoint-displacement - Java

Узнай цену своей работы

Формулировка задачи:

Пытаюсь реализовать алгоритм midpoint-displacement в Java Вот код:
Листинг программы
  1. Graphics g = getGraphics();
  2. Random rand =new Random();
  3. int arrln=512;//длина массива
  4. double R=0.1;//шероховатость
  5. int[] narr=new int[arrln];
  6. for ( int i=0; i<512;i++) narr[i]=-1;//изнач. значение -1
  7. narr[0]=rand.nextInt(300);
  8. narr[arrln-1]=rand.nextInt(300);
  9. for ( int dv=1; dv<=512;) {
  10. dv=dv*2;//на сколько делить
  11. int dvrs=arrln/dv;//результат деления
  12. for(int stp=0;stp<dv/2;stp++){
  13. int plpi=arrln/(dv/2)*stp;//лев. столбец
  14. int prpi=arrln/(dv/2)*(stp+1);//прав. столбец
  15. int linlen=(int) Math.sqrt(Math.pow(prpi-plpi,2)+Math.pow(Math.max(narr[prpi-1],narr[plpi])-Math.min(narr[prpi-1],narr[plpi]),2));//длина рассекаемого отрезка
  16. int otl=narr[plpi];//знач. лев. столбца
  17. int otr=narr[prpi-1];//знач. прав. столбца
  18. int res=(int) ((otl+otr)/2+rand.nextInt((int) (R*linlen*2+1))-R*linlen);//результат
  19. narr[plpi+dvrs]=res;
  20. System.out.println("dv:"+dv+"\ndvrs:"+dvrs+"\nplpi:"+plpi+"\nprpi:"+prpi+"\nlinlen:"+linlen+"\notl:"+otl+"\notr:"+otr+"\nres:"+res+"\n----------\n");
  21. }
  22. }
  23.  
  24. // for(int n=0;n<narr.length;n++){
  25. // if(narr[n]==-1) narr[n]=narr[n-1];
  26. // }
  27. //отрисовка
  28. for(int narn=1; narn<500;narn++){
  29. g.drawLine(narn,300-narr[narn-1],narn,300-narr[narn]);
  30. }
Но выходит явно не то, что надо (см. вложения) Может где-то есть ошибка? Заранее спасибо.

Решение задачи: «Алгоритм midpoint-displacement»

textual
Листинг программы
  1.         int[] narr = new int[arrln + 1];
  2.      //...
  3.         for ( int dv=1; dv<512;) {  
  4.      //...
  5.         int otr = narr[prpi];

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут