Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > 3d график по точкам


Автор: cudi 25.4.2010, 22:14
подскажите пожалуйста, можно ли и как построить трехмерный график по заданным точкам и сединить их поверхностью?..

Автор: cudi 26.4.2010, 19:52
Ну и еще вопросик: пишет на 30 строчке, что массив zmat может быть не инициализирован. В чем дело?  
Код

package surface;

import de.dislin.Dislin;
import java.io.*;
import java.util.*;

public class surface {
  public static void main (String args [])
  {
      int n=30,m=30,i,j;
          float[] zmat;
      int k;
      try 
      {      
          RandomAccessFile f = new RandomAccessFile("D:/unsorted/java/energy.txt", "r");
          String s;
          for (i = 0; i < n; i++) 
          {
              for (j = 0; j < m; j++)
              {
                  while ( (s=f.readLine()) != null )
                  {
                      StringTokenizer st = new StringTokenizer(s);
                      k=0;
                      while (st.hasMoreTokens())
                      {
                          k++;
                          if(k%3==0)
                          {
                              zmat[i*m+j]=Float.parseFloat(st.nextToken());
                              break;
                          }
                      }
                      break;
                  }
              }
           }
            Dislin.metafl ("cons");
            Dislin.setpag ("da4p");
            Dislin.disini ();
            Dislin.pagera ();
            Dislin.complx ();

            Dislin.axspos (200, 2600);
            Dislin.axslen (1800, 1800);

            Dislin.name   ("X-axis", "x");
            Dislin.name   ("Y-axis",  "y");
            Dislin.name   ("Z-axis",  "z");

            Dislin.titlin ("Surface Plot (SURMAT)", 1);
            Dislin.titlin ("F(X,Y) = 2*SIN(X)*SIN(Y)", 3);

            Dislin.view3d (3.f, 2.f, 4.f, "ABS");
            Dislin.graf3d (0.f, 360.f, 0.f, 90.f,
                              0.f, 90.f, 0.f, 12.f,
                    -1000000000000000.f, 3000000000000000.f, -3000000000000000.f, 1000000000000000.f);
            Dislin.box3d();
            Dislin.light("OFF");
            Dislin.height (30);
            Dislin.title  ();

            Dislin.color  ("green");
            Dislin.surmat (zmat, n, m, 1, 1);
            Dislin.disfin ();

        }  
      catch (IOException e)
      {
          System.out.println("LOL"+e);
      }
  }
}


Добавлено через 2 минуты и 1 секунду
ах да, на Dislin не обращайте внимания.. 

Автор: jk1 26.4.2010, 20:12
Цитата

 пишет на 30 строчке, что массив zmat может быть не инициализирован. В чем дело?  

Как раз в том, что массив не инициализирован. Переменная объявлена, а объект не создан и память не выделена. Объявляйте так:
Код

float[] zmat = new float[size];

где size - размер массива.

Автор: cudi 26.4.2010, 22:25
И вот еще: как прочитать конкретную строку из файла, например под номером пять? Можно ли методом readline()? 

Автор: LSD 27.4.2010, 18:38
Модератор: Пожалуйста, один топик - один вопрос.

Создай новую тему, где опиши свой вопрос.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)