종 합 설 계 draw together 조장 60042577 박 건 조원 60022398 이영권 조원 60022360 류성무
프로젝트의 개요 본 프로그램은 iphone에서 실행되는 어플리케이션이다. 거대한 판에 그림을 그린다. 다른 유저가 그리는 그림도 실시간으로 보여진다.
프로젝트의 선정이유 언어는 다른 나라 사람들간의 의사소통에 큰 문제가 생긴다. 바디랭귀지 역시 한계가 존재한다. 이를 극복하고 서로간에 자유롭게 의사소통하고 즐길 수 있는 공간을 만들고 싶었다.
프로젝트의 선정이유 그림은 만국민이 공감하는 최고의 의사소통 수단이라고 생각해 그림을 이용한 프로그램을 개발하기로 하였다.
프로젝트의 선정이유 최종적으로 다같이 그림을 그리고 서로의 그림을 감상도 하는 사람냄새나는 즐거운 어플리케이션 개발을 하기로 하였다.
개발환경 OS : Mac OS ( Snow Leopard 10.3.2 version ), Ubuntu Hardware : Mac Mini, PC Software Development Kit : iphone SDK 3.1.3 Development tools : Xcode 3.2.1 Development Language : ObjectC, C Poting Machine : iphone 3gs
구조 LINUX SERVER TCP/IP SOCKET IPHONE CLIENT
SERVER 구조 UBUNTU LINUX SERVER 벡터 관리 그림 관리 쓰레드로 그림합병 쿼드트리 구현 벡터 이미지화 리스트를 이용한 벡터저장 쓰레드로 그림합병 벡터 이미지화 코헨-서더런드 알고리즘
SERVER 구조 벡터관리 Node Flag Image Vector ROOT 1. 쿼드트리구현 CHILD1 CHILD2 2. 리스트를 이용한 벡터저장 CHILD1 CHILD2 CHILD3 CHILD4 CHILD… CHILD… CHILD… CHILD…
SERVER 구조 벡터관리 1 4 5 Level 1 Level 2 2 3 1. 쿼드트리구현 2. 리스트를 이용한 벡터저장 1024 픽셀 512 픽셀 16 17 20 21 14 15 18 19 Level 3 Level 4 8 9 12 13 6 7 10 11 256픽셀 128픽셀
SERVER 구조 벡터관리 Node Flag Image Vector 2. 리스트를 이용한 벡터저장 Vect 1. 쿼드트리구현 2. 리스트를 이용한 벡터저장 Vect fromX, fromY toX, toY R, G, B *Vect Vect fromX, fromY toX, toY R, G, B *Vect …. ….
SERVER 구조 그림관리 85 X 16 X 8 = 10880개의 128x128이미지 1.벡터 이미지화 16 x 8 2.쓰레드로 그림합병 3.코헨-서더런드 알고리즘 16 x 8 8192 픽셀 16384 픽셀 12
SERVER 구조 그림관리 Image 1.벡터 이미지화 Level4 Child Node Vect Vect Vect 2.쓰레드로 그림합병 3.코헨-서더런드 알고리즘 Level4 Child Node Vect 10,10 20,20 255,0,0 Vect 20,20 40,40 0,255,0 Vect 50,50 90,90 0,0,255 13
SERVER 구조 그림관리 Thread 1.벡터 이미지화 2.쓰레드로 그림합병 3.코헨-서더런드 알고리즘 Flag = 1 14
SERVER 구조 그림관리 Thread 1.벡터 이미지화 2.쓰레드로 그림합병 3.코헨-서더런드 알고리즘 Flag = 1 15
SERVER 구조 그림관리 Thread 1.벡터 이미지화 2.쓰레드로 그림합병 3.코헨-서더런드 알고리즘 Flag = 1 16
SERVER 구조 그림관리 1.벡터 이미지화 2.쓰레드로 그림합병 3.코헨-서더런드 알고리즘 BMP PNG Thread 17
SERVER 구조 그림관리 1.벡터 이미지화 2.쓰레드로 그림합병 3.코헨-서더런드 알고리즘 18
CLIENT 구조 IPHONE CLIENT 벡터 그림 물리적인 위치 -> 논리적인 위치 현 논리적위치에 뿌릴 그림 요청 줌 물리적인 좌표 -> 논리적인 좌표 현 논리적위치에 뿌릴 그림 요청 변경된 그림 요청
CLIENT구조 벡터 Zoom 값 (1) Zoom 값 (6.4) 논리적 Size (2048, 3072) 초기 아이폰 화면 최대로 줌인한 화면 물리적인 위치 -> 논리적인 위치 2. 줌 물리적인 좌표 -> 논리적인 좌표 (8192, 8192) (-8192, -8192) 20
CLIENT구조 벡터 물리적인 위치 -> 논리적인 위치 2. 줌 물리적인 좌표 -> 논리적인 좌표 21
CLIENT구조 벡터 이동 가능한 레벨 그리기 가능한 레벨 2. 줌 Zoom 1 Zoom6.4 물리적인 위치 -> 논리적인 위치 2. 줌 물리적인 좌표 -> 논리적인 좌표 Zoom 1 Zoom6.4 22
CLIENT구조 벡터 그리기 가능한 레벨 길이를 2씩 끊어 서버에 좌표 값을 보낸다. 2. 줌 이런 경우 물리적인 위치 -> 논리적인 위치 2. 줌 물리적인 좌표 -> 논리적인 좌표 이런 경우 이런 식으로 절단하여 보낸다 또한 색은 랜덤하게 생성된다. Zoom6.4 23
CLIENT구조 벡터 물리적인 위치 -> 논리적인 위치 2. 줌 물리적인 좌표 -> 논리적인 좌표 24
CLIENT구조 벡터 물리적인 좌표 논리적인 좌표 물리적인 좌표 -> 논리적인 좌표 물리적인 위치 -> (0,0) (100,100) 논리적인 좌표 -> (0+현위치, 0+현위치 ) (100+현위치, 100+현위치 ) 물리적인 위치 -> 논리적인 위치 2. 줌 물리적인 좌표 -> 논리적인 좌표 (8192, 8192) (-8192, -8192) 25
CLIENT구조 그림 그림 요청 최초로 만나는 유닛에서부터 오른쪽으로 4개 위쪽으로 5개 그림을 서버에 요청 2. 변경된 그림요청 (8192, 4096) (-8192, -4096) 26
CLIENT구조 그림 그림 요청 2. 변경된 그림요청 줌 값 1~2 줌 값 2~4 줌 값 4~6.2 줌 값 6.2~6.4 27 1024 픽셀 512 픽셀 256 픽셀 128 픽셀 27
CLIENT구조 그림 그림 요청 ROOT 2. 변경된 그림요청 CHILD1 CHILD2 CHILD3 CHILD4 CHILD… 줌 값 1~2 ROOT 그림 요청 2. 변경된 그림요청 줌 값 2~4 CHILD1 CHILD2 CHILD3 CHILD4 줌 값 4~6.2 CHILD… CHILD… CHILD… CHILD… 줌 값 6.2~6.4 CHILD… CHILD… CHILD… CHILD… 28
CLIENT구조 그림 2. 변경된 그림요청 client server 그림 요청 그림들의 생성 시간을 3초마다 서버로 보낸다. 받은 시간이 서버가 가지고 있는 그림의 생성 시간보다 빠르면 새로운 그림을 클라이언트에 보냄 그림 요청 2. 변경된 그림요청 1:00:00 1:00:01 29
CLIENT구조 그림 그림 요청 2. 변경된 그림요청 30
감사합니다.