русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Построение графиков функций на основе визуального интерфейса апплетов Java


Дата добавления: 2015-06-12; просмотров: 6875; Нарушение авторских прав


 

Цель лабораторной работы: научиться строить графики функций, используя стандартные средства, предоставляемые библиотекой awt Java.

Попробуем научиться строить графики, используя апплеты Java. Сразу нужно оговориться, что существует множество платных и бесплатных библиотек, реализующих различные приемы построения графиков. Например, такая известная вещь, как jfreechart. Но наша задача – разобраться с принципами построения графиков с использованием стандартного инструментария.

Для рисования графика необходимо решить, где он будет в принципе располагаться. Не будем усложнять задачу и нарисуем наш график непосредственно на «поверхности» основного окна апплета. Для этого используем класса Graphics. При запуске апплета используем метод paint непосредственно для рисования графика. Наш начальный код будет выглядеть примерно так:

import java.applet.*;

import java.awt.*;

 

 

public class MyApplet extends Applet {

 

// рисование апплета

public void paint(Graphics g)

{

 

}

}

Этот код создаст пустое окно апплета. Теперь нужно нарисовать график. Сперва надо вспомнить принципы рисования на экране, которые в общих чертах практически одинаковы для любого языка программирования. Верхняя левая точка экрана (в нашем случае – окна апплета) является нулем декартовой двумерной системы координат. Отрицательные точки по умолчанию на экране не отображаются (что естественно), положительное направление по x – вправо, по y – вниз (рис.7). Это несколько не совпадает с привычным видом декартовой системы координат.

 

 


Для начала нужно решить, какого размера будет наш графический апплет. Пусть размер будет 800 на 800 точек. Сразу же нарисуем оси координат. Пусть ось абсцисс находится посередине (координата y = 400), а ось ординат- на 10 точек от левого края экрана (координата x = 10). Для рисования линий используем метод drawLine. Аргументы метода – 4 координаты (x0, y0, x1, y1), задающие две точки. Соответственно, на контейнере будет нарисован отрезок, проходящий через две точки. Код, задающий размер контейнера-апплета и оси координат, будет выглядеть следующим образом:



this.setSize(800, 800);

g.drawLine(10, 0, 10, 800);

g.drawLine(0, 400, 800, 400);

 

Теперь перейдем непосредственно к рисованию графика. Пусть это будет график функции 350* cos (0.05*x). Для вызова математической функции используется класс Math. Поскольку он входит в стандартный пакет Java, то его не нужно подключать с помощью инструкции import. При вызове функции нужно внимательно смотреть на тип аргументов для нее и в случае необходимости приводить тип. Так, функция cos класса Math, как и большинство остальных функций, работают с аргументами типа double. Мы будем подставлять в качестве аргумента переменную цикла, однако она будет целочисленного типа (int). В этом случае нас выручает то, что мы умножаем аргумент на 0.05, что автоматически приведет результат к типу double. Однако рисовать график будем с помощью того же метода drawLine, а его аргументы должны быть целочисленными. Для этого придется приводить результат к типу int. Для перебора значений аргумента x организуем цикл с помощью инструкции for. Итак, код для построения собственно графика функции:

 

for (int i=1; i<790;i++){

g.drawLine(i+10, (int)(400-350*Math.cos(i*0.05)), i+11, (int)(400-350*Math.cos(0.05*(i+1))));

 

}

Мы рисуем график отрезками длиной в одну точку. Полученный график можно подписать с помощью инструкции drawString:

g.drawString("350*cos(i*0.05)", 15, 40);

 

Весь код апплета целиком:

 

import java.applet.*; // пакет, содержащий класс Applet

import java.awt.*; // пакет, содержащий класс Graphics

 

public class MyApplet extends Applet {

 

// рисование апплета

public void paint(Graphics g)

{

this.setSize(800, 800);

g.drawLine(10, 0, 10, 800);

g.drawLine(0, 400, 800, 400);

for (int i=1; i<790;i++){

 

g.drawLine(i+10, (int)(400-350*Math.cos(i*0.05)), i+11, (int)(400-350*Math.cos(0.05*(i+1))));

}

g.drawString("350*cos(i*0.05)", 15, 40);

}

}

 

Полученный график с окном апплета приведен на рис.8.

 

Рис.8. Результат построения графика функции

ЗАДАНИЕ: разработать приложение, с помощью которого можно построить два (!) графика функции. Варианты функции выбрать из списка ниже либо предложить свой. Графики функции должны быть построены НЕ В ОКНЕ ПРОГРАММЫ APPLETVIEWER, т.е. использовать какой-либо контейнер (Frame, Panel, etc). Кроме построения, приложение должно сохранить полученные значения в текстовом файле. Масштаб по осям абсцисс и ординат подобрать самостоятельно. Графики подписать.

Варианты:

1. 100*sin(0.1*x-pi/2);

2. 250*cos(10*x+pi);

3. 10*exp(-0.1*t)*sin(10*t);

4. 12*exp(-0.01*t)*cos(t);

5. 130*exp(-0.02*t)*sin(2*t);

6. 200*(1-exp(-0.02*t));

7. 100*(1-exp(-0.1*t));

8. 80*(1-exp(-0.04*t));

9. 40*cos(0.3*t);

10. 10*sin(5*t)+8*cos(7*t);

11. 10*sin(0.5*t)*sin(10*t);

 

Вопросы к лабораторной работе:

1. Что такое функция?

2. Что такое аргумент?

3. Что является графическим объектом в работе?

4. Каковы особенности системы координат для экрана ЭВМ?

5. Что означает Math в коде?

6. Какой тип алгоритма удобно использовать для получения последовательности значений аргумента и функции?

7. Как сохранить значения в текстовом файле?




<== предыдущая лекция | следующая лекция ==>
Разработка апплета по заданию к лабораторной работе | Лабораторная работа 8


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.028 сек.