Development of Fashion CAD System 1. Introduction Sungmin Kim SEOUL NATIONAL UNIVERSITY Course Outline 강의 노트 http://fashiontech.snu.ac.kr 평가 방법 기말고사 30% Term Project 50% 출석 20% 2
Computer 초기의계산장치 계산을하는도구로서가장간단한것은주판 1642년프랑스의수학자 철학자인파스칼이톱니바퀴를이용한수동계산기를고안 최초의디지털계산기로덧셈과뺄셈만이가능 1671년독일의라이프니츠가곱셈과나눗셈도가능한계산기를발명 기계장치에더적합한진법인이진법을창안 3 Computer 입출력장치의등장 1801 년발명된 Jacquard 직기 (Joseph Marie Jacquard) 종이로된카드에구멍을뚫어서직물구조를설계 (Software algorithm) 구멍을이용해서경사를들어올려직물을제작 (Hardware) 4
Computer 본격적인계산장치의발명 찰스배비지 (Charles Babbage) 1823 년삼각함수를유효숫자 5 자리까지계산하여종이에인쇄하는차분 (difference) 기관제작 1830 년대에방정식을풀수있도록고안된기계식계산기해석기관 (analytical engine) 을설계» 수를저장하는기억장치» 저장된수치간의계산을하는연산장치» 기계의동작을제어하는제어장치» 문제를받아들이고결과를내보내는입출력장치 5 Computer 전자식컴퓨터의등장 제 2차세계대전직전과대전기간중에급격히발전 기계식연산장치 전자회로, 아날로그회로 디지털회로 1939년최초의전자식컴퓨터등장 미국아이오와주립대학의존아타나소프와클리포드베리가발표» ABC ( 아타나소프베리컴퓨터, Atanasoff-Berry Computer)» 1939년에시험모델이제작되어최초가동실험을했으며, 1942년에완성품이발표됨 6
Computer 독일에서의연구 콘라드추제 (Konrad Zuse) 1936 년제한적인프로그래밍기능과메모리를갖춘계산기 Z 시리즈의개발을시작 1938 년완성된기계식 Z1 은이진수로동작하였지만부품의정밀도의문제로정확히동작하지않았음 1941 년최초로프로그래밍가능한범용디지털컴퓨터 Z3 개발» 최초의고수준프로그래밍언어라여겨지는플랑칼퀼 (Plankalkül) 또한설계하였으나구현에실패» 추제사후 5 년이지난 2000 년에베를린자유대학교연구팀에의해구현 영국과미국에서는그의연구를거의알지못했으나 IBM 은그의연구에대해알고있었던것으로추정» 1946 년그의특허일부를취득하는조건으로추제가설립한회사를후원 7 Computer 영국에서의연구 콜로서스 2차대전중영국정부암호연구소 ( 블레칠리파크 ) 에서독일의군사암호시스템에니그마해독에성공» 앨런튜링이참여한 Bombe 를이용 독일의또다른암호시스템로렌츠 SZ 40/42 해석을위해콜로서스컴퓨터를설계» 1943년 12월콜로서스 1호를제작, 1944년 1월에연구소에설치 세계최초의프로그래밍이가능한완전전자식컴퓨터» 종이테이프로입력을받아다양한종류의논리연산을수행» 윈스턴처칠의지시로파괴되어한동안컴퓨터의역사에수록되지않음 8
Computer 미국에서의연구 Mark-I 1944 년 IBM 과하버드대학의하워드에이킨이제작 계전기 (Relay) 를써서 1 초에덧셈을 3 번수행 배비지의해석기관을계전기와스위치 전동기등으로구현 3,000 여개의계전기와기어로만들어천공된종이테이프로제어되는자동순차적제어방식 기계적제약때문에연산처리속도가느림 9 Computer 미국에서의연구 ENIAC (Electronic Numerical Integrator and Computer) 1946 년미국펜실베이니아대학의에커트와모클리가개발한다용도디지털컴퓨터 30 톤의기계로 18,000 여개의진공관과 1,500 개의계전기를사용 프로그램을배선판에일일이배선하는외부프로그램방식» 프로그램을바꾸는것이어려웠음 10
Computer 근대적인컴퓨터의개념정립 폰노이만 (John Von Neumann) 1945년컴퓨터내부의기억장치에소프트웨어를내장하는프로그램내장방식컴퓨터의개념을발표 1949년이를실용화한최초의컴퓨터인 EDSAC (Electronic Delay Storage Automatic Calculator) 이등장 몇개월후에개량형인 EDVAC (Electronic Discrete Variable Automatic Computer) 도발표 현재쓰이는대부분의컴퓨터가바로 ' 폰노이만식 ' 구조 11 Computer 컴퓨터의상업화 폰노이만형컴퓨터의개발로인해실용적인컴퓨터의기본개념은거의확립 1950년대부터컴퓨터의상용화가시작 최초의상용컴퓨터는 1950년에완성되어 1951년부터출시 Remington Rand 의 UNIVAC (Universal Automatic Computer) I - 대당 16 만달러에판매 12
Computer 컴퓨터의대중화 Apple II 초창기의컴퓨터는너무비싸고커서정부기관이나기업에서만사용 1977년미국의애플 (Apple) 사에서 애플 II 라는소형컴퓨터를출시하면서컴퓨터의대중화가시작 크기가작고사용법이간편했으며 1,300달러라는싼가격으로인기를끌게됨 13 Computer 컴퓨터의대중화 IBM-PC 1981 년미국 IBM 사에서 Personal Computer 5150 을출시 내부구조를완전히공개하여누구나호환기종을만들수있게함» 이전에나온애플 II 를완전히밀어내고개인용컴퓨터의대명사가됨» 현재사용하는 PC 들도기본적인아키텍처는여전히 IBM PC 호환규격을따르고있음 VLSI 의출현에의한하드웨어의대폭적인원가절감» 급속도로사용자에게보급되기시작 (8086/8088, 80286, 80386, 80486, Pentium...) 14
Computer Structure 중앙처리장치 (CPU, Central Processing Unit) 입력장치및기억장치로부터데이터를받아이를분석, 처리하는역할 컴퓨터의두뇌에해당하는핵심부품으로컴퓨터전반의성능을크게좌우 주기억장치 중앙처리장치가처리할데이터를보관해두는장치 ROM(Read Only Memory) 과 RAM (Random Access Memory) 보조기억장치 속도가느린편이지만, 전원이꺼져도데이터를안전하게보관 Tape, FDD, HDD, CD-R/RW, DVD, USB, SSD,... 15 Computer Structure 입력장치 각종자료나명령어를입력할때쓰는장치 키보드, 마우스, 태블릿, 조이스틱 카메라, 스캐너, 마이크, 터치스크린 각종센서 (sensor) 출력장치 CPU가처리한정보를실체화하여사용자에게전달 모니터 (GPU, Graphic Processing Unit 포함 ), 프린터 스피커 각종액추에이터 (actuator) 16
Computer How it Works 전자식컴퓨터 2진수기반구조 CPU 전압에의해 0, 1 을구분 (5V, 12V, 24V,...) 메모리는컨덴서의집약체» 전압이걸려있으면 1, 없으면 0» RAM의경우주기적 refresh 가필요 주기억장치 (RAM) CPU 가하는일 일정한주기로명령을수행» Clock (3GHz, 5GHz,...) 보조기억장치 (Software) Controller System Bus 특정메모리로부터정보를읽기» 8비트, 16비트, 32비트주소구조 특정메모리에정보를저장 정보를이용한연산» 덧셈, 뺄셈, 곱셈, 나눗셈등 정보비교를이용한판단» 논리회로 (AND, OR, NOT, XOR) Input Device Output Device Controller Controller I/O Bus Connection Unit 17 Computer How it Works 프로그램의실행단계 CPU 가저장된명령을하나씩실행 명령에따라다음작업을수행 메모리의특정어드레스로부터값을읽음 읽어온값을연산함 메모리의특정어드레스에결과를저장 연산결과에따라다음수행할명령을결정 버스를통해입출력장치와결과를주고받음 입출력장치 AD (Analog-Digital) Converter 실세계의물리적인값을디지털로변환 Controller 와 Bus 를통해메모리의특정주소에값을저장 DA (Digital-Analog) Converter CPU 가계산한값을실세계의물리적인값으로변환 메모리의특정주소에입력된값을바탕으로작동 18
How it Works 다양한입력장치의원리 키보드 Computer 키를누르면전기신호가발생되고컴퓨터로입력되어키값 (ASCII code 등 ) 을나타내는메모리에저장 CPU 가그값을읽어사용자가어떤키를눌렀는지알아냄 마우스 마우스를움직이면동작이 AD 컨버터를거쳐컴퓨터에입력되어특정메모리에저장됨 CPU 가메모리를읽어서마우스커서의좌표값을알아냄 디지털카메라 광자가 CCD 소자와반응하여발생한전기신호가 AD 컨버터를거쳐컴퓨터에입력 컴퓨터는이데이터로메모리상에 3차원배열을만들어이미지로재구성 마이크로폰 마이크로폰의진동판과자석이음향을전기신호로변환한뒤 AD 컨버터를거쳐컴퓨터에입력 입력된디지털신호를메모리에저장하고 CPU 가메모리를읽어서음성을처리 각종센서 센서가물리값을전기신호로변환 ( 온도, 압력, 습도, 밝기등등 ) AD 컨버터를거쳐컴퓨터에입력하여 CPU 가읽을수있는메모리에저장 19 How it Works 다양한출력장치의원리 모니터 Computer CPU 가계산한결과를그래픽카드의메모리로보냄 그래픽카드가이를바탕으로전기신호를생성 (DA 컨버젼 ) 모니터가전기신호를받아서화면으로표시 프린터 / 플로터 CPU 가계산결과를출력포트로보내면이를전기신호로바꾸어 (DA 컨버젼 ) 프린터로보냄 프린터나플로터는잉크젯, 열전사, 레이저전사, 나이프등을통해출력 스피커 CPU 가계산결과를사운드카드의메모리로보냄 사운드카드가이를바탕으로전기신호를생성 (DA 컨버젼 ) 스피커가이를음성으로재생 각종액추에이터 CPU 가계산한값을 DA 컨버터를통해외부로보냄 외부컨트롤러 ( 서보 / 스테핑모터컨트롤러, 솔레노이드, 릴레이등등 ) 가액추에이터를움직임 20
Programming Language 1940년이전 1801년자카드직기에천공카드가도입 1842년에이다러브레이스가배비지의해석기관을위한세계최초의프로그램을개발 1890년허먼홀러리스가천공카드의정보를부호화하여인구조사에적용 1940년대 1942년콘라드추제가 ' 플랑칼퀼 ' 제안 1943년 ENIAC 코딩시스템 1945~1954 UNIVAC 1950~1960년대 현대적프로그래밍언어가설계됨 BASIC, ALGOL, FORTRAN, LISP, COBOL, PL/I,... 21 Programming Language 1968~1978 C, Small Talk, Pascal, SQL (Structured Query Language) 1980년대 C++ ( 원래 C with Classes에서 1983년 7월 C++ 로변경 ) MATLAB, Mathematica, Objective-C (Apple), Perl,... 1990년대 Python, Visual BASIC, HTML, Java (& script), Delphi (Object Pascal), PHP,... 2000년이후 C#,.net, F#, Swift,... 22
Programming Language Classification 인간기준 저수준프로그래밍언어 인간이이해하기어려움 실행이빠르며기기의모든 resource 를사용할수있음 Assembler, C 언어등 고수준프로그래밍언어 1945. 9. 9. Grace Murray Hopper (Mark II Operator at Havard) 인간이이해하기쉬움 실행이느리고제한된 resource 밖에사용하지못함 BASIC, LISP, Swift 등 23 Programming Language Classification 실행방식기준 컴파일러방식 프로그램전체를기계어로변환해서실행 속도가빠르나디버깅 (debugging) 이어렵다 FORTRAN, COBOL, C,... 인터프리터방식 프로그램을한줄씩변환하면서실행 실행속도가느리지만디버깅이쉽다 BASIC, Java,... 24
Programming Language Classification 세대에의한분류 1 세대 Mechanic 메모리공간지정, 할당까지도프로그래머의역할 가장속도가빠르지만이해하기어렵고범용적이지못함 2 세대 Assembly 기계어를약간이해하기쉽게 (mnemonic) 만든언어 컴파일러방식 3 세대 COBOL, FORTRAN, LISP, BASIC, C 고수준프로그래밍언어의시작 인터프리터방식등장 4 세대 MATLAB, Python, DELPHI, C++ Builder, C# 초고수준 (High Level) 언어로인간이사용하는언어와친숙 재사용가능한 Object/Component 기반 RAD 언어 5 세대? 컴퓨터가스스로프로그래밍하는것이가능? 25 Software Classification 용도에의해 Software System Application Operating System Device Driver Development Tool General Windows OS X Linux ios Android... Monitor Printer Camera Graphic Card Sound Module... Language Compiler Integrated Development Environment (IDE) Interpreter... Office Tools Database Photo Shop SONAR 3D Max Fashion CAD Games... 26
Software Classification 작업영역에따라 Local 사용자컴퓨터의 resource 만을사용해서작업 Network 네트워크를이용한통신기능으로작업영역을확장 TCP/IP, HTTP 등 작업대상에따라 정보만을가공 포토샵 : 사진편집 워드 : 문서편집 파워포인트 : 시각자료편집 Real world 와소통 임베디드 (embedded) 컨트롤 : Wearable Computing 컴퓨터기반 (computer based) 컨트롤 27 Tool Software Development IDE (Integrated Development Environment) 4GL 부터등장 Borland 의 Delphi, C++ Builder 시리즈 Microsoft 의 Visual Studio 시리즈 직관적인 UI 설계, 쉬운디버깅등이장점 28
Tool C++ Builder 6 Personal License Free RAD Tool 2002 년 1 월부터사용 GUI (Graphics User Interface) 구성에최적화된 IDE 툴 29 Tool 1. 압축파일을푼폴더에서 setup.exe 를실행 2. Next 를눌러인스톨시작 3. Serial.txt 의내용대로 serial number 와 authorization key 를입력 30
Tool 4. License agreement 를 Accept 하고 Next 5. 이후모든질문에대해 Next 눌러 Finish 까지진행 6. Restart 해서인스톨을완료 31 Tool 7. 시작메뉴에서 C++ Builder 6 을실행 8. Register at a later time 을선택하고 Next 9. Exit 을눌러 C++ Builder 를실행 32
Tool C ++ Builder 6 Personal Edition 설치완료 33 Strategy 프로그래밍을공부하는최상의방법 터무니없이어렵고거의불가능한목표의설정 단계를최대한세분화한계획을수립 맹목적따라하기와무한한시행착오를거치며각단계를해결 도저히해결이안될때에만전문가에게도움을요청 34
Ultimate Goal Weave CAD / Pattern CAD 35 Ultimate Goal Drape Simulation 36
Ultimate Goal Body Surface Analysis / DTP Application 37 Ultimate Goal Hardware Control Software 38
Primary Goal A Simple 2D Pattern CAD System 주요기능 대화식으로패턴을제도 여러가지방법으로점을정의» 좌표지정, 이동, 내분, 대칭, 회전... 점을연결해서선과패턴을정의» 직선, 곡선, 봉제선, 재단선... 인체치수와각종변수, 수식사용» 인체치수입력, 수식해석기구현 사용자인터페이스 GUI 를이용한작업내용가시화 사용자입력을통한패턴식수정 파일입출력 패턴제도공식의저장및불러오기 제도된패턴을 DXF 파일로저장» Drawing exchange Format 39 Plan 개발단계예시 MDI 구조설계 좌표지정점만들기 점그리기 점선택 UI 만들기 복잡한점만들기 선만들기 선그리기 선선택 UI 만들기 패턴만들기 패턴그리기 점클래스만들기선클래스만들기패턴클래스만들기 스텝디자인구현 파라메트릭디자인구현 변수입력받기수식해석기구현파일로저장하기파일에서불러오기 DXF 로저장하기 40
Plan 배우게될내용 Windows Programming 기초 SDI/MDI 구조 Event-Driven 구조이해 고급 GUI 활용 C 언어기초 변수및구조체정의 조건문, 순환문사용 함수정의 C++ 언어기초 클래스를이용한객체지향프로그래밍 Algorithm 기초 자료구조, 정렬, 수치해석 파일입출력 41