Добавил:
Eatmore
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:отчеты по лабораторным работам / лабораторная работа 7 (jsf) / Lab3 / Lab3 / src / java / Lab3Package / LocationChecker
.java package Lab3Package;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import javax.servlet.*;
import javax.faces.context.FacesContext;
/**
* Managed bean - модель
* Проверяет попадание в область и рисует картинку
*/
public class LocationChecker
{
private double _coordX,_coordY,_radius;
private boolean _result;
//-------Свойства
public double getCoordX(){
return _coordX;
}
public void setCoordX(double coordX){
_coordX = coordX;
}
public double getCoordY(){
return _coordY;
}
public void setCoordY(double coordY){
_coordY = coordY;
}
public double getRadius(){
return _radius;
}
public void setRadius(double radius){
_radius = radius;
}
public boolean getResult(){
return _result;
}
public void setResult(boolean result){
_result = result;
}
//-------Методы
//Проверка попадания в область
public void isInArea(){
if (_coordY <= 0 && _coordX <= 0 && _coordY >= -_coordX - _radius)
_result = true;
else if (_coordX >= 0 && _coordY <= 0 && _coordX <= _radius / 2 &&
_coordY <= _radius)
_result = true;
else if ((Math.pow(_coordX, 2) + Math.pow(_coordY, 2)) <= Math.pow(_radius, 2) &&
_coordX >= 0 && _coordY >= 0)
_result = true;
else
_result = false;
}
/**
*Рисование картинки.
*Полученный результат сохраняется в "папка_проекта/build/web/имя_файла"
*/
public void drawImage(String fileName) throws IOException{
int w = 700;//ширина картинки
int h = 700;//высота кртинки
int r = 70;//радиус на картинке
int scale =(int)(r/_radius);//масштаб для преобразования координат
int grX = (int)(_coordX*scale);//x точки на картинке
int grY = (int)(_coordY*scale);//y точки на картинке
int type = BufferedImage.TYPE_INT_RGB;
BufferedImage img = new BufferedImage(w, h, type);
Graphics2D g2 = img.createGraphics();
//Очищаем фон
g2.setPaint(Color.WHITE);
g2.fillRect(0, 0, w, h);
//Рисуем область
g2.setPaint(new Color(0x99,0xCC,0x99));
g2.fillArc(w/2 - r, h/2 - r, 2*r, 2*r, 0, 90);
g2.fillRect(w/2, h/2, r/2,r);
g2.fillPolygon(new int[]{w/2,w/2-r,w/2}, new int[]{h/2,h/2,h/2+r},3);
//Рисуем оси
g2.setPaint(Color.BLACK);
g2.drawLine(0, h/2, w, h/2);
g2.drawLine(w/2, 0, w/2, h);
//Ставим деления на оси Ox
g2.drawLine(w/2+r/2, h/2+4, w/2+r/2, h/2-4);
g2.drawLine(w/2+r, h/2+4, w/2+r, h/2-4);
g2.drawLine(w/2-r/2, h/2+4, w/2-r/2, h/2-4);
g2.drawLine(w/2-r, h/2+4, w/2-r, h/2-4);
//Подписываем их
g2.drawString(Double.toString(_radius/2), w/2+r/2, h/2 + 15);
g2.drawString(Double.toString(_radius), w/2+r, h/2 + 15);
g2.drawString(Double.toString(-_radius/2), w/2-r/2, h/2 + 15);
g2.drawString(Double.toString(-_radius), w/2-r, h/2 + 15);
//Ставим деления на оси Oy
g2.drawLine(w/2+4, h/2+r/2, w/2-4, h/2+r/2);
g2.drawLine(w/2+4, h/2+r, w/2-4, h/2+r);
g2.drawLine(w/2+4, h/2-r/2, w/2-4, h/2-r/2);
g2.drawLine(w/2+4, h/2-r, w/2-4, h/2-r);
//Подписываем их
g2.drawString(Double.toString(-_radius/2), w/2 + 15, h/2 +r/2 + 2);
g2.drawString(Double.toString(-_radius), w/2 + 15, h/2 +r + 2);
g2.drawString(Double.toString(_radius/2), w/2 + 15, h/2 -r/2 + 2);
g2.drawString(Double.toString(_radius), w/2 + 15, h/2 -r + 2);
//Подписываем сами оси
g2.drawString("X", w-10, h/2 + 15);
g2.drawString("Y", w/2 + 10, 10);
//Выбор цвета точки в зависимости от результата
if(_result)
g2.setPaint(Color.BLUE);
else
g2.setPaint(Color.RED);
//Рисуем "точку"
g2.fillRect(w/2 + grX, h/2 - grY, 3, 3);
g2.dispose();
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String path = servletContext.getRealPath("");
File file = new File(path + fileName);
ImageIO.write(img, "png", file);
}
}
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import javax.servlet.*;
import javax.faces.context.FacesContext;
/**
* Managed bean - модель
* Проверяет попадание в область и рисует картинку
*/
public class LocationChecker
{
private double _coordX,_coordY,_radius;
private boolean _result;
//-------Свойства
public double getCoordX(){
return _coordX;
}
public void setCoordX(double coordX){
_coordX = coordX;
}
public double getCoordY(){
return _coordY;
}
public void setCoordY(double coordY){
_coordY = coordY;
}
public double getRadius(){
return _radius;
}
public void setRadius(double radius){
_radius = radius;
}
public boolean getResult(){
return _result;
}
public void setResult(boolean result){
_result = result;
}
//-------Методы
//Проверка попадания в область
public void isInArea(){
if (_coordY <= 0 && _coordX <= 0 && _coordY >= -_coordX - _radius)
_result = true;
else if (_coordX >= 0 && _coordY <= 0 && _coordX <= _radius / 2 &&
_coordY <= _radius)
_result = true;
else if ((Math.pow(_coordX, 2) + Math.pow(_coordY, 2)) <= Math.pow(_radius, 2) &&
_coordX >= 0 && _coordY >= 0)
_result = true;
else
_result = false;
}
/**
*Рисование картинки.
*Полученный результат сохраняется в "папка_проекта/build/web/имя_файла"
*/
public void drawImage(String fileName) throws IOException{
int w = 700;//ширина картинки
int h = 700;//высота кртинки
int r = 70;//радиус на картинке
int scale =(int)(r/_radius);//масштаб для преобразования координат
int grX = (int)(_coordX*scale);//x точки на картинке
int grY = (int)(_coordY*scale);//y точки на картинке
int type = BufferedImage.TYPE_INT_RGB;
BufferedImage img = new BufferedImage(w, h, type);
Graphics2D g2 = img.createGraphics();
//Очищаем фон
g2.setPaint(Color.WHITE);
g2.fillRect(0, 0, w, h);
//Рисуем область
g2.setPaint(new Color(0x99,0xCC,0x99));
g2.fillArc(w/2 - r, h/2 - r, 2*r, 2*r, 0, 90);
g2.fillRect(w/2, h/2, r/2,r);
g2.fillPolygon(new int[]{w/2,w/2-r,w/2}, new int[]{h/2,h/2,h/2+r},3);
//Рисуем оси
g2.setPaint(Color.BLACK);
g2.drawLine(0, h/2, w, h/2);
g2.drawLine(w/2, 0, w/2, h);
//Ставим деления на оси Ox
g2.drawLine(w/2+r/2, h/2+4, w/2+r/2, h/2-4);
g2.drawLine(w/2+r, h/2+4, w/2+r, h/2-4);
g2.drawLine(w/2-r/2, h/2+4, w/2-r/2, h/2-4);
g2.drawLine(w/2-r, h/2+4, w/2-r, h/2-4);
//Подписываем их
g2.drawString(Double.toString(_radius/2), w/2+r/2, h/2 + 15);
g2.drawString(Double.toString(_radius), w/2+r, h/2 + 15);
g2.drawString(Double.toString(-_radius/2), w/2-r/2, h/2 + 15);
g2.drawString(Double.toString(-_radius), w/2-r, h/2 + 15);
//Ставим деления на оси Oy
g2.drawLine(w/2+4, h/2+r/2, w/2-4, h/2+r/2);
g2.drawLine(w/2+4, h/2+r, w/2-4, h/2+r);
g2.drawLine(w/2+4, h/2-r/2, w/2-4, h/2-r/2);
g2.drawLine(w/2+4, h/2-r, w/2-4, h/2-r);
//Подписываем их
g2.drawString(Double.toString(-_radius/2), w/2 + 15, h/2 +r/2 + 2);
g2.drawString(Double.toString(-_radius), w/2 + 15, h/2 +r + 2);
g2.drawString(Double.toString(_radius/2), w/2 + 15, h/2 -r/2 + 2);
g2.drawString(Double.toString(_radius), w/2 + 15, h/2 -r + 2);
//Подписываем сами оси
g2.drawString("X", w-10, h/2 + 15);
g2.drawString("Y", w/2 + 10, 10);
//Выбор цвета точки в зависимости от результата
if(_result)
g2.setPaint(Color.BLUE);
else
g2.setPaint(Color.RED);
//Рисуем "точку"
g2.fillRect(w/2 + grX, h/2 - grY, 3, 3);
g2.dispose();
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String path = servletContext.getRealPath("");
File file = new File(path + fileName);
ImageIO.write(img, "png", file);
}
}
Соседние файлы в папке Lab3Package