Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построение графика функции, не могу разобраться в коде 
V
    Опции темы
Folly
Дата 18.3.2009, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 10.12.2008

Репутация: нет
Всего: 1



есть 2 кода
1 - рассчитывает значение функции y=1/2*sin(x)+5, где х={1,2,3,4,5,6,7,8,9,10}
Код

public class Function        
{      
 public static void main(String [] args)    
 {    
   int [] x = new int [10];    
   double [] y = new double [10];    
   for(int i = 0; i < x.length; i++)    
  {    
   x [i] = i + 1;    
   y [i] = 1.0/2.0 * Math.sin(x[i]) + 5;    
   System.out.println("x = " + x [i] + " y = " + y [i]);    
  }    
  System.out.println(Arrays.toString(y));    
 }    



2 - строит график функции, но не y=1/2*sin(x)+5, а другой, но тоже с синусом. 
Код

import java.awt.Color; 
import java.awt.Graphics; 
import java.util.Iterator; 
import java.util.Vector; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class TG extends JFrame { 
    private GraphPanel g; 

   public TG() 
   { 
       Vector<Double> d = new Vector<Double>(); 

      // Заполняем вектор данными - например для функции 
      double t = 0; 
      while(t<=2*Math.PI) { 
        double s = Math.sin(t); 
        d.add(new Double(s)); 
        t += 0.1; 
      } 

      g = new GraphPanel(d); 
      getContentPane().add(g); 
      setBounds(100, 100, 300, 300); 
   } 
    /** Creates a new instance of TG */ 
    
    
    /** 
     * @param args the command line arguments 
     */ 
    public static void main(String[] args) { 
       TG t = new TG(); 
      t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      t.setVisible(true); 
    } 
    

class GraphPanel extends JPanel 

   private Vector<Double> data; 

   public GraphPanel(Vector<Double> data) 
   { 
      this.data = data; 
   } 

   public void paintComponent(Graphics g) 
   { 
      super.paintComponent(g); 

      // максимальная ширина графика - 2*PI 
      // максимальная высота = 1, минимальная = -1 
      // Вычисляем коэффициенты 

      double Kx = getWidth()/(2*Math.PI); 
      double Ky = getHeight()/2.0; 

      double xo = -1; 
      double yo = -1; 

      double x = 0; 
      for(Iterator<Double> it=data.iterator(); it.hasNext(); ) { 
         double y = it.next().doubleValue(); 

         // Рисование начинаем для второй точки 
         if(xo>=0.0) { 
            int x1 = (int) (xo*Kx); 
            int x2 = (int) (x*Kx); 
            // Учитываем, что координаты идут сверху вниз и максимальное число = 1 
            int y1 = (int) (getHeight()-(yo+1)*Ky); 
            int y2 = (int) (getHeight()-(y+1)*Ky); 
            g.drawLine(x1, y1, x2, y2); 
         } 
          
         xo = x; 
         yo = y; 
         x += 0.1; 
      } 
   } 


У меня никак не получается построить график моей функции, не могу совместить коды... помогите пожалуйста исправить код. это мой первый опыт работы с апплетами... заранее огромное спасибо.
PM MAIL   Вверх
Folly
Дата 19.3.2009, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 10.12.2008

Репутация: нет
Всего: 1



Сделала график функции!!!  smile  помогите построить оси координат, у меня никак не получается.

Код

public class TG extends JFrame {
    private GraphPanel g;

   public TG()
   {
       Vector<Double> d = new Vector<Double>();

      // Заполняем вектор данными - например для функции
      for (int x = 1; x <= 10; x++) {
            d.add(1.0 / 2.0 * Math.sin(x) + 5);

      }

      g = new GraphPanel(d);
      getContentPane().add(g);
      setBounds(100, 100, 300, 300);
   }
    /** Creates a new instance of TG */
    
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       TG t = new TG();
      t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      t.setVisible(true);
    }
    
}
class GraphPanel extends JPanel {
    private Vector<Double> data;

    public GraphPanel(Vector<Double> data) {
        this.data = data;
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        // максимальная ширина графика - 10
        // максимальная высота = 1, минимальная = -1
        // Вычисляем коэффициенты

        double Kx = getWidth() / 10.0;
        double Ky = getHeight() / 11.0;

        double xo = -1;
        double yo = -1;

        double x = 0;
        for (Iterator<Double> it = data.iterator(); it.hasNext();) {
            double y = it.next().doubleValue();

            // Рисование начинаем для второй точки
            if (xo >= 0.0) {
                int x1 = (int) ((xo + 1) * Kx);
                int x2 = (int) ((x + 1) * Kx);
                // Учитываем, что координаты идут сверху вниз и максимальное число = 1
                int y1 = (int) (getHeight() - (yo + 5) * Ky);
                int y2 = (int) (getHeight() - (y + 5) * Ky);
                g.drawLine(x1, y1, x2, y2);
            }

            xo = x;
            yo = y;
            x += 1;
        }
    }
}

PM MAIL   Вверх
Folly
Дата 19.3.2009, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 10.12.2008

Репутация: нет
Всего: 1



всё сделала.  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Апплеты | Следующая тема »


 




[ Время генерации скрипта: 0.0947 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.