• LF몰 이벤트
  • 파일시티 이벤트
  • 캠퍼스북
  • 서울좀비 이벤트
  • 탑툰 이벤트
  • 닥터피엘 이벤트
  • 아이템베이 이벤트
  • 아이템매니아 이벤트

[소스코드(컴퓨터 그래픽스)]midpoint, clipping알고리즘 scaling,translation,rotation 모두 구현

*열*
개인인증판매자스토어
최초 등록일
2005.11.25
최종 저작일
2005.11
파일확장자 JAVA
가격 3,000원 할인쿠폰받기
다운로드
장바구니

소개글

컴퓨터 그래픽스 라는 과목을 수강하면서
과제로 나왔던 것입니다.
midpoint로 선을 그리는 소스와 clipping알고리즘을 이용하여 선을 클리핑하는 소스, 그리고 scaling,translation,rotation 모두 구현하였습니다...
마우스 오른쪽버튼을 누르면 midpoint알고리즘에 의해 선을 rubber banding하며 그립니다...
그리고 마우스 왼쪽버튼을 누르고 영영지정하면 선을 클리핑합니다.....
자바로 작성하였습니다. 이 프로그램을 작성하는데 꼬박 2주가 걸렸군요.....
그리고 소스코드를 작성하면서...주석을 달아 놓았습니다... 해석하기 편할거에요..

컴파일 실행환경

자바로 컴파일 하시고 실행하면 됩니다...
jdk1.5 환경에서 하는것이 깔끔하고 좋을것 같군요

본문내용

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.Math;
import java.util.Vector;

import javax.swing.JInternalFrame;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JPanel;
import javax.swing.JDesktopPane;
import javax.swing.JButton;
import java.awt.FlowLayout;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JLabel;
import javax.swing.JList;

public class e extends JPanel{

private JTextField textField_5;
int[] array1 = new int[100];
int[] array2 = new int[100];
int[] array3 = new int[100];
int[] array4 = new int[100];

int select; //여러선 중에서 하나의 선을 선택한 변수를 저장 하기 위해서

int count=0;

boolean flag=false; //러버 밴딩을 선택적으로 그래주기 위해




private JTextField textField_4;
private JTextField textField_3;
private JTextField textField_2;
private JTextField textField_1;
private JTextField textField;

int text1,text2; //텍스트 필드의 값을 받아오기 위한 정수 변수

int a,b,c,d; //마우스 오른쪽 버튼을 클릭 했을 때 초기값를 저장 할 변수
int last_c,last_d; //마우스 클릭했던 이전 값을 저장하여 선의 trace를 지우기 위한 변
int xmin,ymin,xmax,ymax;
Graphics g; //페인트 함수로 그림 그리기 위한 그래픽 객체 선언

JFrame f;



public e(){ //생성자



g=getGraphics();
f=new JFrame("컴퓨터 그래픽스 과제2");
f.getContentPane().setBackground(new Color(255, 255, 255));


///////////마우스 오른쪽 버튼을 누르면 선을 그릴 좌표를 인식하는 이밴트가 먹힌다....
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){ //마우스를 찍을 때 첫번째 좌표를 변수 x,y에 넣는다.
if ( SwingUtilities.isRightMouseButton(e) ) { //마우스 오른쪽 버튼을 눌렀을 때 이밴트가 먹히도록 한다....
flag=true;

a=e.getX(); //마우스가 눌러졌을 때 좌표를 변수에 저장
b=e.getY();
last_c=a;
last_d=b;

// repaint(); //페인트 함수를 불러서 해당되는 픽셀 값을 찍어줌
//System.out.println(a);
//System.out.println(b);
}
}
});


addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){ //마우스를 드래그 하는동안의 좌표를 변수 xe,ye에 넣는다.
if ( SwingUtilities.isRightMouseButton(e) ) { //마우스 오른쪽 버튼을 눌렀을 때 이밴트가 먹히도록 한다....

last_c=c; //마우스 찍었을 때 이전 좌표값을 저장
last_d=d;
c=e.getX(); //마우스 드래그 하는 동안의 좌표값을 저장
d=e.getY();



repaint(); //페인트 함수를 불러서 해당되는 픽셀 값을 찍어줌

}
//System.out.println(c);
//System.out.println(d);
}
});




addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){ //마우스를 뗏을 때의 좌표를 변수 xe,ye에 넣는다.
if ( SwingUtilities.isRightMouseButton(e) ) { //마우스 오른쪽 버튼을 눌렀을 때 이밴트가 먹히도록 한다....

flag=false;

array1[count]=a;
array2[count]=b;
array3[count]=c;
array4[count]=d;

count++;
//repaint(); //페인트 함수를 불러서 해당되는 픽셀 값을 찍어줌

}
//System.out.println(c);
//System.out.println(d);
}
});

/////////마우스 왼쪽 버튼을 누르면 클리핑 할 좌표를 인식하는 이밴트가 먹힌다....
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent ee){ //마우스 왼쪽 버튼을 눌렀을 때 이밴트가 먹히도록 한다....
if ( SwingUtilities.isLeftMouseButton(ee) ){
xmin = ee.getX();
ymin = ee.getY();
}
}
});

addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent ee){
if ( SwingUtilities.isLeftMouseButton(ee) ){ //마우스 왼쪽 버튼을 눌렀을 때 이밴트가 먹히도록 한다....
xmax = ee.getX();
ymax = ee.getY();

for(int i=0;i<count;i++){
boolean clip= LineClip(array1[i],array2[i],array3[i],array4[i], xmin, xmax, ymin, ymax); //코헨서틀랜드 알고리즘에 넣어 클리핑 영역에 해당 되는지 검사한다...

if(clip) //만약 클리핑 영역에 해당 된다면
{

참고 자료

없음

자료후기(1)

*열*
판매자 유형Bronze개인인증

주의사항

저작권 자료의 정보 및 내용의 진실성에 대하여 해피캠퍼스는 보증하지 않으며, 해당 정보 및 게시물 저작권과 기타 법적 책임은 자료 등록자에게 있습니다.
자료 및 게시물 내용의 불법적 이용, 무단 전재∙배포는 금지되어 있습니다.
저작권침해, 명예훼손 등 분쟁 요소 발견 시 고객센터의 저작권침해 신고센터를 이용해 주시기 바랍니다.
환불정책

해피캠퍼스는 구매자와 판매자 모두가 만족하는 서비스가 되도록 노력하고 있으며, 아래의 4가지 자료환불 조건을 꼭 확인해주시기 바랍니다.

파일오류 중복자료 저작권 없음 설명과 실제 내용 불일치
파일의 다운로드가 제대로 되지 않거나 파일형식에 맞는 프로그램으로 정상 작동하지 않는 경우 다른 자료와 70% 이상 내용이 일치하는 경우 (중복임을 확인할 수 있는 근거 필요함) 인터넷의 다른 사이트, 연구기관, 학교, 서적 등의 자료를 도용한 경우 자료의 설명과 실제 자료의 내용이 일치하지 않는 경우
최근 본 자료더보기
탑툰 이벤트
[소스코드(컴퓨터 그래픽스)]midpoint, clipping알고리즘 scaling,translation,rotation 모두 구현
  • 레이어 팝업
  • 레이어 팝업
  • 레이어 팝업