- Description
1. 얼굴이 포함된 2장의 컬러 이미지 파일을 열어서 얼굴 부분만 첫 번째, 두 번째 윈도우 창에 각각 보인다.
2. 얼굴 영역에 모폴로지를 적용하여 노이즈를 제거한 후 세 번째, 네 번째 윈도우 창에 각각 보인다.
3. 세 번째 얼굴에서 네 번째 얼굴로 서서히 변하는 이미지를 다섯 번째 윈도우 창에 보인다.
1. 이미지 파일을 열어서 첫 번째 윈도우 창에 보인다.
2. 첫 번째 윈도우에서 마우스 클릭을 두 번하면 두 개의 마우스 커서 좌표를 각각 사각형의 왼쪽 위 좌표, 오른쪽 아래 좌표로 하여 사각형 영역을 설정하고, 이 영역의 이미지만 r, g, b 평균을 하여 두 번째 윈도우 창에 보인다.
3. 이 때, 두 번째 창에는 선택된 영역의 크기만큼만 보여야 한다.
컴퓨터그래픽스 과제. 아니....명색이 OpenGL을 배우면 3D로 뭔가 멋진걸 만들어오라고 하시지.... 왠 점찍고 선 그리고 도형 그리기냐고 -_-;; 별것도 아닌데 개고생 했다;; 관건은 역시나 창 크기가 변화했을 때의 좌표 처리. 그 외에는 순조롭게 풀렸고, 점찍기 구현 다 하고 나니 선 그리기와 도형 그리기는 5분만에 해결됐다. 소스는 첨부해놨으니 베끼고싶으면 베끼고 참고하고싶으면 참고하시길. 아래 그림은 그냥 허전해서 올려놓은것이니까 참고하시고, 그림이 잘 안보이면 클릭해서 보시길;
메인화면. 오른쪽버튼을 누르면 점찍기, 선그리기, 도형그리기 메뉴가 나온다.
점찍기 모드. 별다른거 없다. 그냥 점 찍는다.
선 그리기. 이것도 그냥 선 그린다.
도형그리기. 이것도 물론 도형만 그린다. 원, 사각형 이딴걸 그리는게 아니라 점 찍히는대로 따라가서 그리는거다.
#include <glut.h>
#include <gl.h>
#include <glu.h>
#include <stdio.h>
#define NUMBER_OF_POINT1000// 그릴 수 있는 총 점의 갯수
enum __shape// 그릴 도형의 종류를 지정하는 Enumerator
{
POINT = 1,
LINE = 2,
POLYGON = 3
}Shape;
GLfloat myVertices[NUMBER_OF_POINT][2];// 그려질 점의 위치를 저장하는 배열
GLfloat currentWidth = 640.0;// 현재의 창 크기를 저장하는 변수
GLfloat currentHeight = 480.0;
GLfloat initWidth = 640.0;// 처음 창 크기를 저장하는 변수
GLfloat initHeight = 480.0;
GLint count = 0;// 전체 점의 갯수를 저장하는 변수
void MyDisplay()
{
GLint index;
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1, 0, 0);// 그려지는 객체의 색상, 여기서는 R 값만 1이므로 붉은색
glPointSize(3.0f);// 그려지는 점의 크기
glEnableClientState(GL_VERTEX_ARRAY);// 배열을 사용 가능하도록 함
SP3 네번째 과제, C#으로 구현한 아주아주아주 간단한 그림판. 기능은 선 그리기(실선, 점선, 파선), 도형 그리기(원, 채워진 원, 사각형, 채워진 사각형), 선 색 바꾸기, 선 두께 바꾸기. 자잘한 버그 수정하고 파일로 저장하는 기능 등 추가하고 Windows 내장 그림판 정도의 기능을 구현해보자. 근데.....언제??? -_-;;; 암튼...소스는 매우매우매우 스파게티같으니....베낄려면 베끼시고... 근데 지금 봐도 소스 정말 더럽다;;