The Grasshopper Primer, Second Edition - for version Copyright 2009 All Right Reserved

Size: px
Start display at page:

Download "The Grasshopper Primer, Second Edition - for version Copyright 2009 All Right Reserved"

Transcription

1

2 The Grasshopper Primer, Second Edition - for version Copyright 2009 All Right Reserved

3 서문 Grasshopper의환상적인신세계에오신여러분을환영합니다. 본서는 Primer의두번째판입니다. 이는 Rajaa Issa의엄청난공헌없이불가능한작업이었습니다. Rajaa는 Robert McNeel사의개발자이며 ArchCut을포함한여러라이노 Plugin과잘알려진 Paneling Tools 를제작했습니다. 본서는첫번째판보다 70페이지이상의새로운장들을추가하여자신만의맞춤형 scripting 컴포넌트생성에대해훨씬더자세한가이드를제공하고있습니다. 본매뉴얼의발행은두가지일과관련이있습니다. 첫째는 Grasshopper 버전 의출시이며, 이미완성도있게개발된 Grasshopper Platform 위에더욱발전된기능들을업그레이드한것입니다. 기존사용자들은미묘한변화그리고그다지미묘하지않은변화들을발견할것입니다. 데이터가현재버전에저장되는방법의차이가있고, 이전버전에서작성된정의 (definitions) 의일부가사용불가능한경우도있습니다. 본매뉴얼은새로운사용자와기존사용자들이본소프트웨어체계의변화를이해하는데도움을줄것입니다. 둘째로는본매뉴얼은캘리포니아미술대학에서열린 흐름 : 파라메트릭환경에서의건축 (FLUX: Architecture in a Parametric Landscape)' 컨퍼런스와도같은시기에출판되었습니다. 이컨퍼런스는파라메트릭모델링, 디지털패브리케이션, 그리고스크립팅과같은디자인기술의변화를통해현대건축과디자인을탐험하는것이었습니다. 무엇보다도이는전시회와파라메트릭소프트웨어와깊게관련된일련의워크샵으로구성될것입니다. 필자는영광스럽게도그래스호퍼모델링입문을강의하게되었고, Rajaa Issa와 Gil Akos는그래스호퍼모델링고급과정과 VB.Net 스크립팅워크샵을담당하게되었습니다. 우리는이번 Primer 매뉴얼에많은새로운정보를담았습니다. 이플러그인에대해더많이알고싶어하는사용자들에게좋은자료가되기를바랍니다. 그러나이소프트웨어의가장큰이점중하나는사용자인여러분들, 즉더많은사람들이파라메트릭모델링을탐험하고이해하기시작하면서, 전체사용자그룹이혜택을받게된다는것입니다. 필자는본 Primer 매뉴얼을읽는여러분각자가온라인커뮤니티에가입하여포럼에여러분의질문을올리고, 그문제의해결책을기꺼이나누고자하는분들이더욱많아지기를바랍니다. 보다자세한정보가필요하신분들은아래의싸이트를방문해주시기바랍니다. 감사합니다. 그리고행운을빕니다! 앤드류페인 (Andrew Payne) 리프트건축설계사무소 (LIFT architects) 라자이싸 (Rajaa Issa) 로버트맥닐사 (Robert McNeel and Associates) For plugin version

4 번역의변 Geometry lies at the core of the architectural design process." 역자가 2008년비엔나에서참석했던 Advanced Architectural Geometry 08 세미나의홈페이지의첫화면을장식한문구다. 역자가항상마음에담고있던말이기도하다. 그러나내가그동안건축에몸담고일해온해수만큼, 기하학은나와멀어져있었던것이다. 지금까지의국내건축계는여러부분에서많은발전을이루어왔다. 반면, 많은것을잃어버리기도했던것같다. 디자인의중심에서기하학을버린것이그것이아니었을까. 그렇다면어떻게기하학을건축으로되돌릴수있을까. 거기에 Grasshopper라는대안이있다. 역자는이비엔나세미나에서 Grasshopper를접하게된다. 이것은 Rhino의일부기능인 History 기능이발전한것인데, 건축속의기하학을이해하고디자인에적극적으로사용하도록돕는탁월한플러그인이다. 라이노 3d 와 Grasshopper 를개발한 McNeel 사는파라메트릭디자인이다가오는건축의트렌 드라는것을미리알고잘준비해온것같다. 역자는국내최초 BIM 턴키프로젝트인용인시민체육공원실무에서그래스호퍼기능을일 부사용하였고, 그가능성을확인하였다. 앞으로우리나라의많은건축학도와실무진들이이 를배워서사용하였으면좋겠다는생각에영문튜토리얼을번역하기에이르렀다. 끝으로공동번역및편집작업에수고한우리 ( 주 ) 알피종합건축사사무소직원들, 특히박아 름, 신재원, 이주성, 윤길준에게감사한다. 또베타테스터로번역판리뷰를진행해준김한 결, 송재우에게도깊은감사의마음을전한다. * 그래스호퍼프로그램이영문버전인관계로프로그램명과프로그램메뉴는번역하지않고원문그대로사용하였습니다 년 11 월 ( 주 ) 알피종합건축사사무소 대표유기찬 (U_BIM) For plugin version

5 Table of Contents 서문 2 목차 시작하기 2. 인터페이스 5 3. Grasshopper Objects( 그래스호퍼객체 ) 8 4. 지속적인데이터관리 상속데이터의가변성 데이터흐름매칭 Scalar 컴포넌트유형 조작 ( 연산자 ) 조건명령문 Range/ Series/ Interval 함수와 Boolean 함수와 Numeric Data( 수치데이터 ) 삼각법에의한 Curve 고정된점들의집합 목록과데이터관리 데이터조합하기 데이터의이동 엑셀로데이터내보내기 Vector 기본 Point/ Vector 정밀조작 Point 견인자로수학적 Vector/Scalar를사용하는법 ( 원활용하기 ) 견인자로수학적 Vector/ Scalar를사용하는방법 ( 박스활용하기 ) Curve의종류 Curve 분석학 Surface 유형 Surface의연결 Paneling 도구 Surface Diagrid( 대각선그리드 ) 균일하지않은 Diagrid 생성하기 Scripting 소개 Scripting 인터페이스 Script 컴포넌트의위치 입력매개변수 출력매개변수 Out 윈도우와 Debug 정보 Script 컴포넌트의내부 80 For plugin version

6 14. Visual Basic DotNet 개요 설명 변수 Array( 정렬 ) 과 Lists( 목록 ) 연산자 조건명령문 Loop 다중 Loop Sub와함수 Recursion( 회귀 ) Grasshopper에서 List의처리과정 Grasshopper에서다차원데이터처리과정 파일 I/O Rhino.NET SDK 개관 Nurbs 이해하기 Open Nurbs 객체들의위계 계층구조 상수와비상수의경우 Point와 Vectors OnNurbsCurve OnCurve에서파생되지않은 Curve Classes OnNurbsSurface OnSurface로부터파생되지않은 Surface Classes OnBrep 기하학적구조의변환 Global Utility 함수 도움말 137 For plugin version

7 1 시작하기 Grasshopper 설치하기 Grasshopper 플러그인을설치하려면 홈페이지좌측상단의 Download link를클릭하고다음화면이뜨면, 자신의이메일주소를입력합니다. 이제, Download link를클릭하고메뉴에서 Save Target As를선택합니다. 자신의하드드라이브의위치를선택하고실행파일을저장합니다. ( 주의 : 파일은반드시로컬컴퓨터의하드드라이브에저장되어야만합니다. 네트워크상에서는파일이로드될수없습니다.) 다운로드대화상자에서 Run 을선택하고설치안내문을따라설치합니다. ( 주의 : 플러그인이 제대로설치되기위해서는 Rhino 4.0 의 SR4b 또는상위버전이이미자신의컴퓨터에설치 되어있어야합니다.) For plugin version

8 2 인터페이스 * 메인화면 플러그인을로드하고, Rhino 명령창에서 "Grasshopper" 를입력하면, 아래와같은 Grasshopper 창이새로열립니다. 이인터페이스는많은요소들을포함하고있습니다. 그중대부분은라이노유저들에게는 친숙한것들입니다. A. 메인메뉴바 이메뉴는전형적인윈도우메뉴와유사하며, 추가적으로오른쪽상단 (B) 에파일검색메뉴가위치합니다. 파일검색메뉴의드롭다운박스를이용하여로드된다른파일들을빠르게전환하며열어볼수있습니다. 활성창위주로명령이실행되기때문에단축키를사용할때는주의하시기바랍니다. 활성창은라이노창또는 Grasshopper 플러그인창또는라이노내부의다른창이될수도있습니다. 아직되돌리기 (undo) 기능을사용할수없기때문에잘라내기 (Ctrl-X), 저장하기 (Ctrl-S) 그리고삭제 (Del) 단축키를사용할때주의하시기바랍니다. * 출처 : RhinoWiki For plugin version

9 B. 파일검색메뉴 이메뉴는앞에서살펴본바와같이로드된파일들을전환하며열어볼때사용할수있습니 다. C. 컴포넌트패널 이부분에는모든컴포넌트카테고리들이보입니다. 모든컴포넌트들은특정카테고리 ( 예를들면모든원시데이터유형들을위한 Params" 또는모든커브를위한 Curves" 그리고모든카테고리들이독립적인툴바패널형태로활용가능합니다. 툴바의높이와폭은조정할수있어서각카테고리마다화면에떠있는버튼의수도조절할수있습니다. 툴바패널은그카테고리에속한모든컴포넌트들을포함하고있습니다. 컴포넌트의수가 상당히많기때문에가장최근에사용한몇개의아이템들을우선적으로보여줍니다. 전체 내용을보기위해서는패널하단의바를클릭하시면됩니다. 클릭하면카테고리패널이확장되어모든컴포넌트에접근할수있습니다. 팝업리스트의컴포넌트를클릭하거나리스트로부터바로드래그하여캔버스에컴포넌트를불러올수있습니다. 카테고리패널의컴포넌트를클릭하면추후손쉽게참조하기위해툴바에위치시킬수있습니다. 버튼을클릭하는것이캔버스에컴포넌트를추가하는것은아닙니다. 캔버스에컴포넌트를띄우려면반드시드래그하여캔버스위로올려놓아야합니다. 또한캔버스상의어느곳이든더블클릭하여검색팝업창을띄우고컴포넌트의이름을입력 하여컴포넌트를불러올수있습니다. 컴포넌트의이름을입력하면, 찾고자하는매개변수나 컴포넌트의목록을볼수있습니다. For plugin version

10 윈도우타이틀바 : D 편집용윈도우타이틀바는마이크로소프트윈도우의다른대화창들과다르게조정됩니다. 보통창을최소화하거나최대화할때더블클릭을하는데, 타이틀바를더블클릭하면대화창을숨기거나열게됩니다. 이는플러그인화면과라이노화면을효과적으로전환하기위한최적의방법입니다. 이방법으로플러그인의창을화면아래나다른창뒤로옮기지않고도최소화할수있기때문입니다. 주의할점은플러그인창을닫으면뷰포트상의 Grasshopper geometry 미리보기가사라진다는것입니다. 그러나파일이실제로닫히는것은아닙니다. 다시라이노명령창에 Grasshopper를입력하면, 플러그인창은같은파일이로드된상태로돌아오게됩니다. 캔버스툴바 : E 캔버스툴바는자주사용되는기능들에대해빠르게접근하도록합니다. 모든툴은메뉴를통해서도이용가능하며, 필요시툴바를숨길수있습니다. ( 숨겨진툴바를다시열고싶을때는 View menu로부터열수있습니다.) 캔버스툴바에는아래의툴들이포함됩니다. ( 좌측으로부터우측순으로설명 :) 1. Definitiona properties editor [ 정의속성편집자 ] 2. Sketch Tool [ 스케치툴 ]: 포토샵또는윈도우페인트의 Pencil-Type 툴처럼작동합니다. 선의유형과굵기, 색상을조절할수있습니다. 그러나미리정의된형태나직선을그리기는어려울수있습니다. 이를해결하려면, 캔버스위에아무스케치선을그리고선위에서오른쪽클릭합니다. 그리고 Load from Rhino" 를선택하고, 라이노화면에서미리정의된선을선택합니다. ( 이는사각형, 원, 별등과같은 2차원형태가될수있습니다.) 참조할형태를선택하고엔터를치면사전에그려진스케치선이라이노에서참조한선의형태에따라재구성됩니다. 3. Zoom defaults [ 기본 Zoom 조절 ] 4. Navigation Map [ 네비게이션팝업맵 ] 캔버스상에더작은도표창을열어스크롤과팬 For plugin version

11 을사용하지않고도캔버스주위를빠르게살펴볼수있도록합니다. 포토샵의네비게이션창과유사합니다. 5. Zoom Extents[ 전체화면보기 ] ( 캔버스상작성된정의가너무커서화면상에들어가지않을경우, 전체회로도를화면의중심영역으로맞추어줍니다.) 6. 부분화면보기 ( 네개의버튼을통해캔버스의네모서리를기준으로화면을맞추어줍니다 ) 7. Named views ( 저장할메뉴를보여주고이미저장된뷰를불러올수있습니다.) 8. Rebuild solution [ 솔루션재생성 ] (History 정의를완전히다시생성하도록합니다.) 9. Rebuild event [ 이벤트재생성 ] ( 기본값에의해, Grasshopper는라이노와캔버스상의변화에반응합니다. 이메뉴로부터이기능을비활성화할수있습니다.) 10. Cluster compactor ( 선택된모든객체들을하나의클러스터객체로전환해줍니다.) 클러스터객체들은아직마무리된것은아니며추후완전히재작업될가능성이더크다고볼수있습니다. 현재파일에이기능을사용하는것을주의하시기바랍니다. 11. Cluster exploder ( 선택된모든클러스터들을각각의객체로분리해줍니다.) 클러스터객체들은아직마무리된것은아니며추후완전히재작업될가능성이더크다고볼수있습니다. 현재파일에이기능을사용하는것을주의하시기바랍니다. 12. Bake tool [ 굽기툴 ] ( 선택된모든컴포넌트들을실제라이노객체들로전환해줍니다.) 13. Preview settings [ 미리보기설정값 ] (Grasshopper에서생성된기하형태는기본값으로미리보기가가능합니다. 각객체마다미리보기를활성화또는비활성화할수있으며, 모든객체에대해미리보기설정을덮어씌울수도있습니다. 미리보기설정을꺼두면커브나트림된면을가진객체의경우화면보기속도가월등히빨라질수있습니다. 14. Hide button [ 숨기기버튼 ] 이버튼은캔버스툴바를숨깁니다. 숨겨진툴바는 View 메뉴를통해다시열수있습니다. -캔버스 : 프로젝트를정의하고편집하는실제편집기입니다. 캔버스에는정의를이루는개체와일부 UI위젯이배치됩니다. 캔버스에있는개체는색깔로구분되고상태를표시합니다. 캔버스는정의를내리는곳의실제편집기이고, History 네트워크를편집합니다. 캔버스는규정된객체들과 UI위젯양쪽모두를연결합니다. 캔버스객체들의상태는암호로코드화된색상입니다. F: 캔버스 캔버스는 history 네트워크를정의하거나편집하는실제편집자입니다. 캔버스는정의들로이루어진객체들과몇몇 UI widget[ 장치 ] 들 G 모두를포함하고있습니다. 캔버스상의객체들은보통각각의상태에대한피드백을제공하기위해설정된색깔을나타내게됩니다. For plugin version

12 A) 매개변수이매개변수는경고가있는매개변수로주황색으로표시됩니다. 대부분의매개변수는데이터값이없는상태로캔버스에배치되며, 이것이경고사항으로간주되어주황색으로표시됩니다. B) 매개변수 이매개변수는경고나오류가없는상태입니다. C) 컴포넌트컴포넌트는입력매개변수와출력매개변수를갖고있어서항상보다많은연결이이루어지는객체입니다. 이컴포넌트는적어도 1개이상의경고를갖고있는상태이며, 객체의콘텍스트메뉴에서경고또는오류를찾아볼수있습니다. D) 컴포넌트 이컴포넌트는경고나오류가없는상태입니다. E) 컴포넌트이컴포넌트는적어도 1개이상의오류를갖고있습니다. 이는컴포넌트자체의오류이거나이컴포넌트에연결된입력또는출력매개변수의오류일수있습니다. 컴포넌트구조에대해서는다음장에서좀더자세히알아보겠습니다. 선택된모든객체들은투명한녹색으로표현됩니다. G: UI Widgets 현재사용가능한 UI widget은 Compass 기능이며, 캔버스의우측하단에위치합니다. Compass widget은작성된전체정의중현재작업창에보여지는부분의위치에대한그래픽네비게이션을제공합니다. 이 widget은 View 메뉴를통하여열고닫을수있습니다. For plugin version

13 H: 상태바 상태바는선택된세트에대한피드백을제공하고플러그인상에서일어나는주요이벤트를보여줍니다. 작성된정의에오류나경고가있는지에대한핵심정보는여기에나타납니다. 상태바좌측하단에있는주황색사각형아이콘은 Grasshopper 포럼의실시간 RSS reader 입니다. 이아이콘을클릭하면, Grasshopper 사용자그룹웹싸이트와연결되어가장최근게시글의목록이나타납니다. 이중하나를선택하면그룹멤버들이게시한글로바로연결됩니다. Grasshopper 사용자그룹의웹싸이트를방문해보시기바랍니다. Remote Control Panel[ 원격조정패널 ] Grasshopper 창이상당히크기때문에, 항상창을띄워놓고싶지않을수도있습니다. 물론창을최소화하거나닫아버릴수있지만, 그렇게되면더이상설정값을편집할수없게됩니다. 이때 Remote control panel을활성화하면, 현재정의에포함된설정값들을편집하기위한최소한의인터페이스가나타납니다. 이는고정된대화창으로모든슬라이더와 boolean 조정의트랙을포함하고있습니다. ( 그리고향후버전에서는다른설정값들도조정할수있게될것입니다.) Remote Panel 은또한기본미리보기, 이벤트그리고파일전환조정을제공합니다. 메인창 의 View 메뉴를통하여이패널을열거나닫을수있습니다. GrasshopperPanel 명령어를 사용하여열수도있습니다. For plugin version

14 뷰포트미리보기피드백 : A) 파란색 geometry 는마우스로현재선택된객체입니다. B) 뷰포트상녹색 geometry 는현재선택된컴포넌트에속해있는객체입니다. C) 뷰포트상빨강색 geometry 는현재선택되지않은컴포넌트에속한객체입니다. D) Point geometry 는라이노의 point 객체들과구분하기위하여사각형이아니라십자가 형태로나타납니다. For plugin version

15 3 Grasshopper 객체 * Grasshopper 정의객체 Grasshopper 정의는많은종류의객체들로구성될수있습니다. 그러나정의작성을시작하 기위해서는다음두가지객체에익숙해질필요가있습니다. Ÿ 매개변수 (Parameters) Ÿ 컴포넌트 ( 컴포넌트 s) 매개변수는데이터를포함하며, 저장하는객체입니다. 컴포넌트는액션을포함하며실행하는 객체입니다. 다음그림은 Grasshopper 정의를사용할때마주칠가능성이있는객체들의사 례를보여줍니다. A) 이매개변수는데이터를포함하고있습니다. 객체의좌측으로부터나오는선이없으므로, 이객체는다른곳으로부터데이터를입력받지않습니다. 오류나경고가없는매개변수는 객체명의텍스트를포함한박스가검정색으로나타납니다. B) 이매개변수는아무데이터도갖고있지않습니다. 데이터를수집하는데실패한어느객체라도 Explicit History 정의에서의심스러운것으로간주됩니다. 이러한객체는모두의시간과돈을낭비하기때문입니다. 그러므로모든매개변수는 ( 새롭게추가되었을경우 ) 주황색으로표시되어아무데이터도포함하고있지않다는것을나타내며, History Solution에아무영향을미치지못합니다. 매개변수가데이터를입력받거나정의하면검정색으로나타납니다. C) 이컴포넌트는선택된상태입니다. 선택된모든객체들은녹색으로나타납니다. D) 정상적인컴포넌트 * 출처 : RhinoWiki For plugin version

16 E) 경고를포함한컴포넌트. 컴포넌트는다수의입력, 출력매개변수를포함하고있습니다. 따라서단지컴포넌트를보는것만으로는어떤객체가경고를일으켰는지알수없습니다. 경고의원인이둘이상이될수도있습니다. 이때 context 메뉴 ( 아래를참조 ) 를활용하여문제를찾아갈수있습니다. 경고가반드시정정되어야할필요는없다는것을주의하시기바랍니다. 경고는완전히합법적인것일수도있습니다. F) 오류를포함하는컴포넌트. 경고와유사하게, 컴포넌트안에어떤오류가발생했는지알수는없습니다. 이를확인하려면 Context 메뉴 ( 아래를참조 ) 를사용해야합니다. 경고와오류를모두포함하는컴포넌트는빨간색으로나타나며오류표시색깔이경고표시색깔보다우선하여나타납니다. G) 연결선. 연결선은입출력매개변수사이에항상나타납니다. 어느특정매개변수에연결되는선의수에는제한이없습니다. 그러나순환되거나반복적인연결은허락하지않도록개발되었습니다. 그러한반복연결선이발견되면전체솔루션이합선되고첫번째컴포넌트나매개변수에반복연결오류메시지로나타납니다. 연결선에관한보다자세한설명은데이터상속장을참조하시기바랍니다. 컴포넌트파트 컴포넌트는일반적으로액션을수행하기위하여데이터를필요로하며, 데이터는보통결과값으로나타납니다. 이는대부분의컴포넌트가내포된입력과출력의매개변수의셋트를각각갖고있는이유입니다. 입력매개변수는좌측에, 출력매개변수는우측에위치합니다. A) Division 컴포넌트의 3 개의입력매개변수입니다. 기본값으로매개변수명칭은항상축약 형으로나타납니다. 필요에따라각매개변수의명칭은자유롭게변경할수있습니다. B) Division 컴포넌트영역 ( 일반적으로컴포넌트의명칭을포함합니다 ) C) Division 컴포넌트에는 3 개의출력매개변수를갖고있습니다. 마우스를컴포넌트객체위의개별파트위에올려놓으면, 현재마우스가올려진파트에대 한자세한툴팁을볼수있습니다. 툴팁은개별매개변수에대한유형과데이터모두에대 한매우유용한정보를제공합니다. For plugin version

17 Context 팝업메뉴사용하기 캔버스의상의모든객체들은각각의 context 메뉴를갖고있으며각컴포넌트의특징의대부분을포함하고있습니다. 컴포넌트는모든하위메뉴를단계적으로노출하도록설계되어이용하기약간까다로울수있습니다. 예를들어, 컴포넌트또는컴포넌트와연결된특정매개변수가주황색으로표시된다면경고를의미합니다. 무엇이잘못되었는지확인하고싶다면컴포넌트 context 메뉴를사용하면됩니다. 위의그림에서메인컴포넌트메뉴가입력데이터인 R 값에대하여단계적으로펼쳐진모습 을볼수있습니다. 메뉴는보통해당메뉴의명칭을보여주는편집가능한텍스트필드로 For plugin version

18 시작됩니다. 메뉴명칭은보다더자세하게변경할수있지만, 모든명칭의기본값은화면상차지하는자리를최소화하기위해최대한짧게작성되어있습니다. 메뉴의두번째아이템 (Preview flag) 은이객체에의해생산되거나정의된 geometry가라이노뷰포트상에가시화될지아닐지를표시합니다. 필수정보를포함하지않는컴포넌트의미리보기를꺼놓으면라이노뷰포트움직임의속도를빠르게하고 ( 메쉬가포함되어있을경우 ) History 솔루션에소요되는시간을줄일수있습니다. 매개변수나컴포넌트의미리보기를비활성화하면엷은흰색해치가뷰포트상에나타납니다. 모든매개변수 / 컴포넌트가뷰포트상에나타나는것은아닙니다. 예를들면, 숫자와같은객체의경우미리보기아이템에서보통생략됩니다. R" 입력매개변수를위한 context 메뉴는주황색경고아이콘을포함합니다. 이는차례로 이매개변수에의해생성된모든경고목록을보여줍니다. 위의그림은 1 개의경고가표시 된경우입니다. For plugin version

19 4 Persistent 데이터관리 데이터유형 매개변수는단지정보를저장하는데사용되어왔습니다. 그러나대부분의매개변수는두가지유형의데이터를저장할수있습니다. 이는 Volatile 데이터와 Persistent 데이터입니다. Volatile 데이터는하나또는그이상의소스매개변수로부터전달받고새로운솔루션이시작될때마다소멸됩니다 ( 즉, 다시수집됩니다 ). ( 기록을저장하거나소스의세트를정의하지않는출력매개변수는예외이며, 출력매개변 수는매개변수가속한해당컴포넌트에서완전히제어합니다.) Persistent 데이터는메뉴를통해접근할수있으며, 매개변수의종류에따라관리자가달라 집니다. 예를들면 Vector parameter 는메뉴를통해단일또는복수의 vector 를설정하는 것을허용합니다. 하지만, 몇단계를거슬러올라가서기본 Vector parameter 가어떻게기능하는지살펴보겠 습니다. Params Panel 로부터 Vector parameter 를드래그하여캔버스상에올려놓으면다음 과같이나타납니다. 매개변수는주황색으로나타나며, 경고가발생했음을의미합니다. 심각할것도없이이경고는단지매개변수가비어있음을알려주는것입니다. ( 매개변수는 Persistent 기록을포함하지않으며 volatile 데이터를수집하는데실패한상태입니다.) 그리고 History 솔루션의결과물에아무런영향을미치지않습니다. 매개변수의 context 메뉴는 Persistent 데이터를설정하는 2 가지방법을제공합니다. 단일 Vector와복수 Vector를설정할수있습니다. * 출처 : RhinoWiki For plugin version

20 이메뉴아이템중하나를클릭하면, Grasshopper 창은사라지고라이노뷰포트에서하나의 Vector 를선택할수있습니다. 필요한모든 Vector 를정의하고엔터를누르면, 이 Vector 들은매개변수 Persistent 데이터 기록의일부가됩니다. 이는그매개변수가더이상비어있지않음을의미하며, 매개변수의 색은주황색에서검정색으로바뀝니다. 이시점부터이매개변수를여러분이원하는만큼많은수의객체를생성하는 Seed[ 종자 ] 로사용할수있습니다. 이객체들은독자적인 vector 들을포함합니다. For plugin version

21 5 Volatile 데이터의상속성 (Inheritance)* 데이터상속성 데이터는매개변수안에 (Volatile 또는 Persistent 형식으로 ) 저장되고컴포넌트에사용됩니다. 데이터가매개변수의영구기록세트에저장되어있지않다면그것은다른곳으로부터상속된것입니다. 출력매개변수를제외한모든매개변수는어디서데이터를얻을지를정의하며, 대부분의매개변수는특별히다르지않습니다. 두개의매개변수를 ( 이는단지어떤십진수의한숫자를의미합니다 ) 정수 [interger] 소스로연결할수있으며, 변환도이루어집니다. Grasshopper 플러그인은많은변환스키마를정의하지만해석과정이정의되어있지않으면, 받는쪽의매개변수에서변환오류가생성됩니다. 예를들어, Point 데이터가필요할때, Surface 데이터를입력하면 Point 매개변수에서오류메시지가생성되고빨간색으로표시됩니다. ( 오류메시지는해당매개젼수의메뉴로부터접근할수있습니다.) 매개변수가컴포넌트에속하는경우, 빨간색의상태는계층구조의위쪽으로전파되며, 해당컴포넌트도자체에오류가없더라도빨간색으로바뀝니다. 연결선관리 매개변수는각각자신의데이터소스를담당하기때문에, 해당매개변수를통해이러한설정에접근할수있습니다. 세개의컴포넌트와두개의매개변수를포함하는아래의정의를살펴봅시다. 이단계에서모든객체는연결되어있지않은상태이며, 직접연결할필요가있습니다. 연결하는순서는중요하지않지만, 왼쪽에서오른쪽으로연결하기로합니다. 매개변수의작은원 ( 그립 ) 가까이를마우스로끌기시작하면와이어가마우스에붙어두개의개체를연결합니다. * 출처 : RhinoWiki For plugin version

22 왼쪽마우스를클릭한상태에서대상매개변수로마우스를끌면와이어가연결되어실선이 됩니다. 왼쪽마우스를떼기전까지는완전히연결된것이아닙니다. PtGrid 컴포넌트의매개변수 Y" 와 Line(Ln) 컴포넌트의매개변수 A" 와 B" 를같은방식으로 연결해봅니다. 클릭 + 드래그 + 릴리즈... For plugin version

23 매개변수는양쪽방향으로연결할수있고, 기본설정에의해새로운연결이기존연결을지우도록되어있으므로주의해야합니다. 단일연결선을가장많이사용할것을가정하고있으므로복수의소스를정의하기위해서는추가적인단계가필요합니다. 연결선을드래그하는동안 Shift키를유지한다면, 마우스포인터는추가적인행위를지시하기위해변경될것입니다. 마우스버튼을소스매개변수위에서풀때 ADD" 커서를활성화하면, 그매개변수는소스 목록에추가될것입니다. 만약소스로이미정의되어있는소스매개변수를명시한다면, 아무 것도일어나지않을것입니다. 같은소스를한번이상상속받을수는없습니다. 같은이유로, Control the REM" 커서를유지하면가시화되고타겟소스는소스목록에서제 거될것입니다. 타겟이참조되지않으면아무일도일어나지않습니다. For plugin version

24 또한, 매개변수메뉴에서소스의연결을해제할수있습니다. ( 연결은되지않습니다.) Grasshopper는 Params 탭의특별한하위카테고리에포함된 Receiver를사용하여무선으로정보를전달할수있습니다. 다른컴포넌트들을연결하는것과같은방식으로 Receiver와객체를연결할수있습니다. 그러나연결선으로부터마우스왼쪽버튼을떼는즉시연결선은자동적으로사라집니다. Receiver는선택되었을때에만점선으로연결선을나타내도록기본설정되어있습니다. Receiver를오른쪽클릭하면연결선을 selected 일때보기, 또는 For plugin version

25 always" 또는 never" 보기를설정할수있습니다. Receiver 의출력데이터는필요한만큼의 많은다른컴포넌트에연결할수있습니다. 여기에서점선으로된연결선을볼수있는데, 현재 Receiver 가선택된상태이기때문입니 다. Receiver 컴포넌트의입력부분앞에있는숫자 1 은하나의연결선이입력값으로수신되고 있음을나타냅니다. 그러나 Receiver 컴포넌트가선택되어있지않기때문에연결선은더이 상보이지않습니다. ( 하지만정보는여전히전송되고있는상태입니다.) For plugin version

26 6 데이터스트림매칭 * 데이터매칭 데이터매칭은해결하기까다로운문제입니다. 데이터매칭은컴포넌트에다양한값을입력할때발생합니다. 두점을잇는선을컴포넌트라고가정할때, 이선은두개의포인트좌표값을입력매개변수로갖습니다. (Stream A와 Stream B) 이매개변수들이어디로부터데이터를수집하는지는관련이없습니다. 컴포넌트는입력및출력매개변수를넘어서서 볼 수가없습니다. 위의그림과같이이점들의세트사이를연결하는다양한방법이존재합니다. Grasshopper 플러그인은현재세가지매칭알고리즘을지원하지만더많은방법도가능합니다. 가장간단한방법은각스트림의점데이터를가능한범위까지일대일대응하는것입니다. 이를 Shortest List 알고리즘 이라고합니다. Longest List 알고리즘 은모든스트림이연결될때까지계속연결합니다. 이는컴포넌트의 기본설정동작입니다. 마지막으로, Cross Reference" 방법은가능한모든연결을수행합니다. * 출처 : RhinoWiki For plugin version

27 이방식은출력된결과의수가엄청날수있기때문에잠재적인위험성이있습니다. 더많 은입력매개변수가포함되고 Volatile 데이터상속이데이터를증가시키면문제는보다복 잡해집니다. 그러나논리는여전히같습니다. 원격매개변수에서다음의데이터를 x, y, z 값으로상속받는 Point(Pt) 컴포넌트가있다고 가정해봅시다. X 좌표 : {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0} Y 좌표 : {0.0, 1.0, 2.0, 3.0, 4.0} Z 좌표 : {0.0, 1.0} 이데이터를 Shortest List" 방식으로결합하면, Z 좌표 가단지두개의값을포함하기 때문에두개의점만을얻을수있습니다. 이것이 shortest list 이기때문에솔루션의범위를 다음과같이결정합니다. For plugin version

28 Longest List" 알고리즘은 Y 와 Z 스트림에있을수있는가장높은값을재활용하여열개 의점을생성합니다. Cross Reference" 방식은 X 의모든값을 Y 와 Z 의모든값을연결합니다. 결과적으로 =100 개의점이생성됩니다. 모든컴포넌트는이규칙중한가지를만족하도록설정될수있습니다. ( 컴포넌트아이콘 을오른쪽클릭하면열리는메뉴를통해설정할수있습니다. 이기능에는큰예외가있음을유의하시기바랍니다. 특정컴포넌트는입력필드의하나또는그이상의데이터목록을갖게됩니다. 예를들어, Polyline 컴포넌트는입력점들의배열에의해 Polyline curve를생성합니다. 입력매개변수는 List 매개변수라불리는하나이상의값에배정됩니다. 데이터매칭이이루어질때 List 매개변수는무시됩니다. For plugin version

29 7 Scalar 컴포넌트유형 Scalar 컴포넌트유형들은일반적으로여러가지수학적인작용을위하여사용되며, 다음요소들로구성되어있습니다. A) Constants[ 상수 ] Pi, 황금비등과같은상수값을되돌려줍니다. C) Intervals[ 구간 ] 숫자의범위 ( 양극단또는영역 ) 를나누어 Interval 파트로분할하는데사용합니다. Interval 탭에는많은컴포넌트들이있습니다. 이는다양한 interval 유형을생성하거나재구성하는것을허락합니다. D) Operators[ 연산자 ] 덧셈, 뺄셈, 곱셈등과같은수학적인연산자들이사용됩니다. E) Polynomials[ 다항식 ] 어떤거듭제곱에의해수치를끌어올리는데사용합니다. E) Trigonometry[ 삼각법 ] 사인, 코사인, 접선등과같은전형적인삼각법값을되돌려줍니다. F) Utility(Analysis)[ 분석 ( 유틸리티 )] 둘이상의많은수치들의값을평가하는데사용됩니다. 7.1 Operators 앞서언급했듯이 Operators는컴포넌트의집합입니다. 컴포넌트들은두개의수치입력값을가진대수함수를이용하여하나의출력값을도출합니다. Operators를보다자세히이해하기위해다른 Operator 컴포넌트유형을탐험하며간단한수학정의를만들것입니다. 주의 : 이정의의최종버전을보려면, 이문서와함께제공되는소스파일폴더의 Scalar_Operators.ghx 파일을엽니다. 아래그림은완성된정의를보여줍니다. For plugin version

30 처음부터정의생성하기 Ÿ Params/Special/Numeric Slider 메뉴에서 Numeric Slider를드래그하여캔버스에올려놓습니다. Ÿ Slider를더블클릭하고다음과같이설정합니다. 최소값 : 0.0 최대값 : 결과값 : 50.0 ( 주의 : 이값은임의의값이며, 상 하한값사이에서어떤값으로도수정할수있습니다.) Ÿ Slider를선택하고 Ctrl+C( 복사하기 ) 와 Ctrl+V( 붙여넣기 ) 를사용하여 Slider를복제합니다. Ÿ Params/Special/Numeric Slider 메뉴에서 2개의 Integer 컴포넌트를캔버스위로드래그앤드롭합니다. Ÿ Slider 1과첫번째 Integer 컴포넌트를연결합니다. Ÿ Slider 2와두번째 Integer 컴포넌트를연결합니다. Slider의기본값유형은 Floating Point[ 부동소수점 ] 으로설정되어있습니다.( 십진수값으로어떤결과를표현합니다.) Integer 컴포넌트에서 Slider를연결하면, Floating Point를 Integer 혹은어떤전체적수치로변환할수있습니다. Params/ Special/ Panel 메뉴에서 Post-It panel을꺼내각 Integer 컴포넌트의출력값으로연결하면, 실시간으로변환되는것을볼수있습니다. Slider를왼쪽과오른쪽으로움직이면, Floating Point가전체숫자로변환되는것을볼수있습니다. 물론이 Slider 유형을 Integer로설정하면이단계를간단하게처리할수있습니다. Ÿ Scalar/Operator/Add 메뉴에서 Add 컴포넌트를드래그앤드롭하여캔버스에추가합니다. Ÿ Add 컴포넌트입력-A에첫번째 Integer 컴포넌트를연결합니다. Ÿ Add 컴포넌트입력-B에두번째 Integer 컴포넌트를연결합니다. Ÿ Params/ Special/ Panel 메뉴의 Post-It panel을드래그앤드롭하여캔버스에추가합니다. Ÿ Add 출력-R을 Post-It panel 입력에연결합니다. Post-It panel에서두정수값의합을볼수있습니다. Ÿ Scalar 메뉴에속한다른 Operators 컴포넌트를캔버스위로드래그앤드롭합니다. 뺄셈 곱셈 나눗셈 계수, 율, ( 복소수의 ) 절대값 거듭제곱, 집합수 Ÿ 첫번째 Integer 컴포넌트를각각의 Operator 입력단자 A에연결합니다. Ÿ 두번째 Integer 컴포넌트를각각의 Operator 입력단자 B에연결합니다. Ÿ 캔버스위에다섯개의 Post-It panel을드래그앤드롭하고각 Operator의출력단자에연결합니다. 이정의는완성되었습니다. 이제각 Slider의값들을바꾸면, Post-It panel 상에서각 Operator가적용된결과를볼수있습니다. For plugin version

31 7.2 Conditional Statesments[ 조건명령문 ] Scalar 탭의 Operators 컴포넌트중몇몇컴포넌트들은앞장에서설명되지않았습니다. 이는 버전에새롭게추가된 4개의컴포넌트가수학적인연산자들과는약간다르게작용하기때문입니다. 이컴포넌트들은대수식계산을수행하는것이아니라두개의데이터목록을비교합니다. 4개의컴포넌트는 Equality( 등식 ), Similarity( 닮음 ), Larger Than( 보다크고 ), Smaller Than( 보다작고 ) 의연산을수행합니다. 보다자세한기능은아래에서설명하겠습니다. 주의 : 이정의의최종버전을보려면, Conditional Statements.ghx 파일을이문서에첨부된 소스파일에서찾아서열면됩니다. 아래는완성된정의의화면캡처이미지입니다. A) Equality Equality 컴포넌트는두개의목록을취하여, 목록 A의첫번째아이템을목록 B의첫번째아이템과비교합니다. 만약두값이같다면 True Boolean 값이생성됩니다. 반대로두값이같지않다면 False Boolean 값이생성됩니다. 컴포넌트는데이터매칭알고리즘에설정된 List를통해순환합니다. ( 기본값은 Longest List로설정되어있습니다.) 이컴포넌트는두개의출력단자를갖습니다. 첫번째출력단자는목록의값들이서로같음을보여주는 boolean 값의목록을보여줍니다. 두번째출력단자는값이서로같지않음을보여주는목록또는첫번째출력단자로부터반전된목록으로나타납니다. For plugin version

32 B) Similarity Similarity 컴포넌트는데이터의두가지목록을평가하고두숫자간의 similarity 를검토합 니다. 이는 Equality 컴포넌트가두가지목록을비교하는방식과거의동일합니다. 그러나 한가지예외가있는데, 목록 A 의비율을정의하는백분율입력단자가있습니다. inequality 가가정되기전까지의편차를허용하는...in that it has a percentage input that defines the ratio of list A that list B is allowed to deviate before inequality is assumed. Similarity 컴포넌트는또한두입력목록사이의절대값을결정하는출력단자를가집니다. C) Larger than 컴포넌트는두개의데이터목록을가질것이고, 목록 A의그첫번째목록 B의그첫번째항목보다더큰지를결정할것입니다. 만약두개의목록을보다큰것또는보다크거나같은조건을따르도록그두개의목록을평가하고싶다면, 그두개의출력을결정할수있게합니다. D) Smaller Than 컴포넌트는보다큰컴포넌트작동과정반대로실행합니다. 보다작은컴포넌트는목록 A가목록 B보다적다면, 논리값의목록을반환하도록결정합니다. 마찬가지로, 만약그두개의목록을보다작거나같은조건을따르도록그두개의목록을평가하고싶다면, 그두개의출력을결정할수가있습니다. For plugin version

33 7.2 Range vs Series[ 일련화 ] vs Interval Series 그리고 Interval 컴포넌트들은두개의숫자맨앞, 맨끝의사이에값들을배치하도 록만듭니다. 하지만컴포넌트들은서로다른방식으로작용합니다. Range 컴포넌트는숫자범위의도메인이라불리는낮은값과높은값사이에고르게간격을두게되는수들의목록을생성합니다. 위의예제에서, 두개의 numeric Sliders는 Range 컴포넌트의입력값으로연결되었습니다. 그첫번째 Slider는값의범위를위해도메인수를정의합니다. 이번예제에서그 Slider는 1로설정되어있어서그도메인은 0에서 1로정의되었습니다. 그두번째 Slider는이번예제에서 10으로설정되어있는그도메인을나누기위해단계의그수를정의합니다. 그러므로그출력은 0과 1 사이에고르게분할된 11 개의수목록입니다. Series 컴포넌트는 Series에서시작값, 단계크기그리고값에기초하는수들을설정합니다. 예제에서컴포넌트들에연결된세개의 numeric Sliders를나타내고있습니다. 첫번째 Slider는그연속적수에있어서시작점을정의하는 Series-S 입력에연결되어졌을때, 그두번째 Slider가 10으로그시리즈를위한그단계값을정의합니다. 그시작값은 1로설정되었고, 그단계크기는 10으로설정되었으므로, 다음값은 11이될것입니다. 끝으로세번째 Slider는값이 10으로설정되었으므로, 정의된최종출력값은 1에서시작하여각각단계가 10으로증가하는 10개의수가보여집니다. Interval 컴포넌트는낮고높은수사이에모든가능한수들의범위를만듭니다. Interval 컴 For plugin version

34 포넌트는 Range 컴포넌트를위해우리가정의한도메인수와유사합니다. 주된차이는 Range 컴포넌트는 0과어떤입력값으로정의된것사이에서기본값의도메인수를만듭니다. Interval 컴포넌트는 A와 B 입력값들에의해낮고, 높은값이정의될수있습니다. 우리는두개의 Slider로 10과 20 사이에모든가능한값들의범위를정의했습니다. Interval 컴포넌트를위한그출력값은우리의새로운도메인수를반영하여 10에서 20으로나타납니다. 만약우리가지금 Interval -I 출력을 Range-D 입력에연결하면, 우리는 Interval 값사이에수의범위를만들수있습니다. 이전에 Range 예제경우처럼, 우리가그 Range를위한단계의수를 10으로설정하면, 우리는 10의낮은 Interval 값과 20의높은 Interval 값사이에서고르게분할된 11개의값을볼수있습니다. For plugin version

35 7.3 함수와 Booleans 코드는첫번째 Object를보고, 그것이곡선인지아닌지에대해하나의논리값을결정합니다. 거기에는중간이없습니다. 그논리값은그 Object가곡선이면 True, 그 Object가곡선이아니면 False 입니다. 그명제의두번째부분이그조건명제의결과에의존하는기능을실행하는경우, 만약그 Object가곡선이라면, 그다음그것을삭제합니다. 이런조건명제는 If/ Else 명제라고불립니다. Grasshopper는함수컴포넌트의사용을통해조건명제들을분석하는능력을가집니다. 예제처럼, 함수컴포넌트 (Logic/ 스크립트 /F1) 의 x-입력으로 numeric Slider를연결했습니다. 추가적으로조건명제는 x 는 5 보다더큽니까? 그질문을정의하면서그함수의 F- 입력에 연결되었습니다. 만약그 numeric Slider 가 5 이하일때는, 그 r- 출력은 False 값으로바뀝니 다. 어떤기능을실행하기우해우리가함수의논리값을결정했다면, 우리는 Dispatch(Logic/ List/ Dispatch) 컴포넌트로 True/ False 패턴정보를공급할수있습니다. 그 Dispatch 컴포넌트는정보의목록을이용하여작동하며, 그정보여과기는하나의변화하기쉬운함수의논리패턴결과에기초합니다. 만약, 그패턴이 True 값을나타내면, 그정보목록은 Dispatch-A 출력으로넘어갈것입니다. 만약, 그패턴이 False 값을나타내면, 그것은 Dispatch-B 출력으로정보목록은넘어갑니다. 이번예제를위해우리는그 Slider 값이 5보다더큰경우에만원을만들기로결정했습니다. 우리는논리값이 Dispatch 컴포넌트안에서 True로넘어가는경우에만 numeric Slider 에의해지정된반지름으로원이만들어질수있도록하기위해, Circle 컴포넌트 (Curve/ Primitive/ Circle) 를 Dispatch-A 출력에연결했습니다. 어떤컴포넌트도 Dispatch-B 출력에연결하지않은경우, 그논리값이 False 라면, 그때는원뿐만아니라무엇도생성되지않을것입니다. For plugin version

36 다각형 N-sided로부터 B를출력해내는관계에서, 생성되어지는다각형 R-입력에연결되는선으로서다각형의반지름을정의할수있다. numeric Slider가 5보다아래로떨어진다면, 그때는 number Slider에정의된반지름을가지는오각형이원점에서만들어질것입니다. 만약, 5보다높은 Slider 값을가질때에는, 원이만들어질것입니다. 이러한방법으로우리는정의전체에정보를공급하기위한만큼많은 If/ Else 명제를만들수있습니다. For plugin version

37 7.4 함수와숫자데이터 함수컴포넌트는여러다른용도로사용될수있기때문에매우유용합니다. 우리는이미조건명제를평가하고, 논리값출력을전달하기위해우리가함수컴포넌트를어떻게사용할수있는지논의했습니다. 그러나우리는또한복잡한수학적알고리즘을푸는기능컴포넌트를사용할수있고, 출력으로숫자데이터를표시할수있습니다. 다음예제에서, 우리는 David Rutten 의 Rhino 스크립트 101 manual 에서제공된예제와유사 한수학적나선을만들것입니다. 처음부터정의를만들기위해 Ÿ Logic/ Sets/ Range 캔버스에 Range 컴포넌트를끌어다놓습니다. Ÿ Parama/ Special/ Slider 캔버스위에두개의 numeric Slider를끌어다놓습니다. Ÿ 첫번째 Slider를오른쪽클릭하고아래와같이설정합니다. ο 이름 : Cry Length ο Slider 유형 : Floating 점 ( 기본값설정 ) ο 최소값 : 0.1 ο 최대값 : 10.0 ο 결과값 : 2.5 Ÿ 이제두번째 Slider를오른쪽클릭하고아래와같이설정합니다. ο 이름 : Num Pts on Cry ο Slider 유형 : Integers ο 최소값 : 1.0 ο 최대값 : ο 결과값 : Ÿ Cry Length Slider Range-D 입력에연결 Ÿ Num Pts on Cry Slider를 Range-N 입력에연결함수컴포넌트들로제공할수있는 0에서 2.5 범위로고르게간격을둔 101개수들의범위를만들었습니다. Ÿ Logic/ Script/ F1 캔버스위에하나의함수컴포넌트를끌어다놓습니다. Ÿ 함수컴포넌트의 F-입력을오른쪽클릭하고 Expression Editor를엽니다. For plugin version

38 Ÿ 새로뜨는대화상자에서아래의방정식을입력합니다. ο x*sin*(5*x) 정확하게그편집자안에그알고리즘을입력했다면, 그오류롤아웃 ( 내부주기억장치의내용을외부보조기억장치로옮기는것.) 아래에서 No syntax errors detected in expression- 표현식에서발견된구문오류가없다. 라는명령문을보아야만합니다. ο 알고리즘을받아들이기위해 OK를클릭합니다. Ÿ Expression Editor 대화상자에아래의방정식을입력합니다. ο x*cos*(5*x) 이방정식에서유일한차이는우리가 sin함수를 cos함수로교체한것입니다. ο 알고리즘을받아들이기위해 OK를클릭합니다. Ÿ 양쪽함수컴포넌트에서 X-입력으로 Range-R 출력을연결합니다. 수학적알고리즘을풀고숫자데이터의새로운목록을출력하는그함수컴포넌트안에 Range 구성요소에의해만들어진 101개의수를제공했습니다. 각방정식의 r-출력에의한결과값을확인할수있습니다. Ÿ 캔버스위에점 XYZ 컴포넌트를끌어다가놓습니다. Ÿ 점컴포넌트의 X-입력으로첫번째함수-r 출력을연결합니다. Ÿ 점컴포넌트의 Y-입력으로두번째함수-r 출력을연결합니다. Ÿ 점컴포넌트의 Z-입력으로그 Range-R 출력을연결합니다. 뷰포트에나선을형성하는포인트의배치를확인할수있을것입니다. 또나선의길이또는그나선위에포인트들의수를변경하기위해그정의를시작할때그두개의 numeric Slider를조절할수있습니다. Ÿ Curve/ Spline/ Curve 캔버스위에 Curve 컴포넌트를끌어놓습니다. For plugin version

39 Ÿ Curve-V입력에점-Pt 출력을연결합니다. 나선의각점을통과하는하나의곡선을만들었습니다. 곡선차수를설정하기위해 Curve-D입력에오른쪽클릭을하면, 차수 =1 곡선은각포인트사이에서직선구획을만들것이며, 그곡선이각포인트를실제로통과하는것처럼보여줍니다. 차수 =3 곡선의포인트들은매끄러운곡선을만들어냅니다. 그러나그선들은각포인트들을실제로통과하지는않습니다. For plugin version

40 7.5 삼각법에의한 Curve 다른수학적곡선과나선을만들기위해복잡한공식을평가할수있도록함수컴포넌트를사용할수있습니다. Grasshopper 또한 Scalar 컴포넌트구성안에서삼각컴포넌트를만들수있습니다. sin, cos, tan같은함수들은, ɵ라고불리는특정각도를포함하고있는직각삼각형의두개의측면들사이비율을정의하기때문에수학자, 과학자그리고엔지니어들에게중요한도구입니다. 또한해파, 음파그리고광파의형태로자연에서종종발견된 sin파함수와같은주기적구조를위해단순한벽돌이건축에사용될수있다는것을발견하였고, 거의모든주기적파형을설명했습니다. 그과정은푸리에해석이라고불립니다. 다음예제에서는곡선, 파장, 진동수그리고진폭위에점들의수가 numeric Slider의설정에의해제어될수있는 sin파형상을만듭니다. 정의를만들기위하여 Ÿ Params/ Special/ Slider- 캔버스위에 3개의 numeric Slider를끌어놓습니다. Ÿ 첫번째 Slider를선택하고, 아래와같이 Parameter를설정합니다. ο 이름 : Num Pts on Curve ο Slider 유형 : Integers ο 최소값 : 1 ο 최대값 : 50 ο 결과값 : 40 Ÿ 두번째 Slider를선택하고, 아래와같이 Parameter를설정합니다. ο 이름 : Wave Length( 파장 ) ο Slider 유형 : Integers ο 최소값 : 0 ο 최대값 : 30 ο 결과값 : 10 Ÿ 세번째 Slider를선택하고, 아래와같이 Parameter를설정합니다. ο 이름 : Frequency( 진동수 ) ο Slider 유형 : Integers For plugin version

41 ο 최소값 : 0 ο 최대값 : 30 ο 결과값 : 12 Ÿ Logic/ Sets/ Range 캔버스위에 Range 컴포넌트를끌어놓습니다. Ÿ 첫번째 Range-D입력에 Wave Length Slider를연결합니다. Ÿ Range-D입력에 Frequency Slider를연결합니다. Ÿ 양쪽 Range-N입력에 Num Pts on Curve Slider를연결합니다. 첫번째는 0 에서 10 까지고르게분할되는수의범위, 그리고두번째는 0 에서 12 까지정렬 하는고르게분할되는수의목록을정의하였습니다. Ÿ Scalar/ Trigonometry/ Sine 캔버스위에 Sine 컴포넌트를끌어놓습니다. Ÿ 두번째 Range-R 출력을 Sine 컴포넌트의 x-입력으로연결합니다. Ÿ Vector/ Point/ Point XYZ-캔버스위에점 XYZ 컴포넌트를끌어놓습니다. Ÿ Range-R 출력을점 XYZ 컴포넌트의 X-입력으로연결합니다. Ÿ Sine 컴포넌트의 y-출력을점 XYZ 컴포넌트의 Y-입력으로연결합니다. Ÿ 그럼, Sin파형태의연속적인점들을볼수가있습니다. Range 출력이삼각함수컴포넌트의제공없이점컴포넌트의 X-입력에직접연결되므로포인트에서 x값은일정하고고르게간격을두게됩니다. 그러나 Sine 컴포넌트는 Point 컴포넌트의 Y-입력으로제공하고있기때문에포인트의 y값에있어서물결패턴의형상을볼수있습니다. 물결패턴의형상을변경하기위해 numeric Slider를변경할수있습니다. Ÿ Curve/ Spline/ Interpolate- 캔버스위에 Interpolated Curve 컴포넌트를끌어놓습니다. Ÿ Point-Pt 출력을 Curve-V 입력으로연결합니다. Num Pts on Curve, Wave Length, Frequency Slider 를사용하여정의를설정하였고, sin 곡 선의진폭을제어하기위하여마지막한개의 Slider 를설정할수있습니다. For plugin version

42 Ÿ 새로운 Slider 위에오른쪽클릭하고아래와같이설정합니다. ο 이름 : Amplitude( 진폭 ) ο Slider 유형 : Floating 점 ο 최소값 : 0.1 ο 최대값 : 5.0 ο 결과값 : 2.0 Ÿ Scalar/ Operators/ Multiplication- 캔버스위에 Multiplication( 곱셈 ) 컴포넌트를끌어놓습니다. Ÿ Amplitude Slider를 Multiplication-A 입력으로연결합니다. Ÿ Sin 컴포넌트의 y-출력을 Multiplication-B 입력으로연결합니다. Ÿ Multiplication-r 출력을점 XYZ 컴포넌트의 Y-입력으로연결합니다. Ÿ Sin 컴포넌트의출력으로이전에연결되어있었던기존의연결을교체합니다. Amplitude Slider는 Sin 값에배율을곱하고있으며, 그 Slider는 Sin 곡선의 Y-값을조정하는것이므로진폭값을증가할때, 곡선의진폭을차례로늘립니다. Ÿ Vector/ Point/ Point XYZ 컴포넌트를끌어놓습니다. Ÿ 첫번째 Range-R 출력을새로운점 XYZ 컴포넌트의 X-입력으로연결합니다. Ÿ Curve/ Primitive/ Line 캔버스위에 Line 컴포넌트를끌어놓습니다. Ÿ 첫번째 Point-Pt 출력을 Line-B입력으로연결합니다. Ÿ 두번째 Point-Pt 출력을 Line-A입력으로연결합니다. Sin 곡선의동일한 x-좌표에 X-축을따라고르게간격을두는 Point의두번째설정을정의하였습니다. Line 컴포넌트는첫번째포인트의목록, sin 곡선을만듭니다. X- 축을정의하는두번째포인트의목록사이에서선분을만듭니다. 그새로운선들은물결형태패턴에서수직이동의시각적인대조를보여줍니다. For plugin version

43 sin 파장곡선을만드는방법입니다. Scalar/ Trigonometry 탭아래에서찾게되는 Cosine 또는 Tangent 컴포넌트로 Sine 컴포넌트를교체하는방법을통해 cos 또는 tan 함수와같은물결형태의곡선을구성할수있습니다. For plugin version

44 8 고정된점들의집합 xx버전에앞서공개되었던 Grasshopper의모든버전에서, 매개변수내부의데이터는하나의목록에보관되었습니다. 그리고그와같은것은목록색인을필요로하지않았습니다. 그러나데이터가저장된방법의완전한분해검사가 Grasshopper에있었고, 이제그것이하나의매개변수내부에서다양한데이터의목록을가지는것이가능합니다. 다양한목록을이용할수있음으로, 각개개의목록을확인하는방법이필요합니다. 아래이미지는꽤복잡한표현이지만멋지게구성된나무도형으로써, David Rutten에의해만들어졌습니다. 위의이미지에는 0 경로에서하나의줄기가있습니다. 이경로는데이터를포함하고있지않지만, 3개의보조가지가있습니다. 그러한각각의보조가지들은그상위가지인 0 의색인을상속받고, 그것들은자신보조색인 ( 제각기 0, 1, 2) 을추가합니다. 그것은단지하나의수를암시하는것이기때문에, 이것을색인이라고부르는것이아니고원반모양의폴더구조와닮았으므로 경로 와같이참조합니다. 각각의보조가지들은두개의하위가지들에게, 그것들은다시어떤그들자신의데이터를포함하지않습니다. 이것은하위가지들도마찬가지입니다. 만일레벨 4에도달하게되면일부데이터 ( 목록은색채가다양한두꺼운라인으로표현되며, 데이터항목은원으로표현됩니다.) 를마주합니다. 모든하위가지 ( 또는레벨 4가지 ) 는그것들이그이상분할하지않는것을의미합니다. For plugin version

45 각각의데이터항목은그나무에서오직하나의가지이므로, 각각의항목은가지내에그 위치를지정하는색인을가집니다. 각각의가지들은나무내에그위치를지정하는경로가 있습니다. 나무구조를보다섬세하게분석하기위해매우단순한예제를가지고살펴보겠습니다. Grasshopper에서언급하는두개의곡선을시작으로양쪽곡선을 20개의개별적인구간으로나누기위해, 우리는하나의곡선분할 (Curve/ Division/ Divide Curve) 컴포넌트를사용할것입니다. 결국, 각각의곡선에 21개의점을생성하는것입니다. 그분할점들을통해새로운선을만드는폴리라인 (Curve/ Spline/ Polyline) 컴포넌트로그러한점들에모두바로공급합니다. 만약우리가 Grasshopper 0.5또는이전버전을사용하고있었다면, Polyline 곡선은전체점목록 (Divide Curve) 컴포넌트의결과와같이 41 포인트를가지는것을통하여하나의선을그릴것입니다. 이것은포인트전체가한개의목록 ( 가지또는경로없이 ) 에보관되었기때문입니다. 그래서그컴포넌트는목록에포인트모두를통하여 Polyline을그리도록되어있습니다. 만약, Grasshopper 0.5 버전을사용하고있었다면, 그포인트색인과결과적인폴리라인은다음과같이보여졌을것입니다. 그러나우리는 Grasshopper가경로와가지를통합하는능력을가지는것을알고있으므로, 그색인을사용하여 Polyline 컴포넌트가어떻게작용하는지제어할수있습니다. 만약, 우리가 Grasshopper xx 버전또는높은버전을사용하여이전처럼정확하게이단계를따랐다면, 그것이각각나누어진경로가 20개의구분이라고인정하기때문에 Polyline의컴포넌트는 2개의 Polyline을만들것입니다. 우리는매개변수뷰어 (Params/ Special/ Param Viewer) 를이용하여나무구조를조사할수있습니다. 아래의구조가각각두개의경로로시작에서한개의결과로서생기는곡선을나타내는모습입니다. 두개의폴리라인의포인트색인과그결과곡선입니다. 우리는정의가두개의경로를가진다는것을알고있습니다. 하지만, 우리가실제로한개 의경로와그결과한개의폴리라인의결과를원했더라도, 정의는두개의경로를가진다 For plugin version

46 는것을알고있습니다. Grasshopper는나무구조의제어를도울수있게 Logic탭의 Tree 하위카테고리아래에서다양한구조컴포넌트들을가지고있습니다. 그데이터가 0.5 또는이전버전에서표시되어진것과흡사하다면, 하나의목록으로써전체나무구조를무너뜨리는 Flatten Tree 컴포넌트 (Logic/ Tree/ Flatten Tree) 를사용할수있습니다. 결과값으로생기는곡선과더불어구조는한개의경로를가진다는것을이미지에서알수 가있습니다. 결국, 이전 Grasshopper 버전에서와같은하나의폴리라인을갖게됩니다. For plugin version

47 또한, 구성요소내부의 Flatten 컴포넌트를거쳐서이정의를단순화할수있습니다. Polyline 컴포넌트의 V- 입력위에오른쪽클릭하고 Flatten" 를선택하여전환합니다. 이방법을통해두개의나무구조가한개의경로로변환합니다. For plugin version

48 8.1 목록과데이터관리 Grasshopper의흐름에관해서그래픽인터페이스는특별한형식의컴포넌트를안에서밖으로흘려정보를가지도록디자인되었습니다. 그러나그것은컴포넌트의안과밖으로흐르는정보를정의하는데이터 ( 포인트, 곡선, 표면, 문자열, 논리, 숫자, 등등 ) 입니다. 목록데이터를조작하는방법을이해하는것은 Grasshopper 플러그인을이해하기위해중요합니다. 다음은 Logic 탭의보조카테고리목록아래에나타나는여러가지 List 컴포넌트를사용하고있는숫자데이터의목록을통제할수있는방법의예입니다. For plugin version

49 시작하기위해 0.0 으로시작하는값, 1.0 의단계값그리고 10 개의총계와 Series 컴포넌트 를만듭니다. Series-S 출력에연결된패널은다음의수목록을보여줍니다. 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 For plugin version

50 그것들은패널에서오른쪽선택을하고등록수미리보기를 on 또는 off 로변경할수있습 니다. 그러나그것이목록색인수에각각의값에할당된것이무엇인지정확하게보도록 허용할것이므로이번예제에서는등록수를켜지게할것입니다. A) 그숫자데이터는목록내에특정의등록을회수하기위해사용되는 List Item 컴포넌트 (Logic/ List/ List Item) 로그다음공급됩니다. 목록에서개개의항목에접근할때, 한개는색인값을사용해야합니다. 어떠한목록에서그첫번째항목은위치 0, 두번째항목은위치 1, 등등에항상보관됩니다. 일반적으로색인 -5에접근하기시작하면어떤위치도존재하지않으므로오류가발생할것입니다. 그목록을 Item-L 입력안으로 Series-S 출력을연결합니다. 추가적으로원하는목록색인수를정의하는 Item-i 입력안으로정수를제공합니다. 이값을 5.0에조정했으므로, 출력된항목은이경우 5.0인다섯번째등록수와관련되는숫자데이터를보여줍니다. B) List Length 컴포넌트는본질적으로목록의등록수를평가하고, 목록의마지막등록수 또는길이를출력합니다. 이번예제는그목록에서 10 값을보여주기위해 Series-S 출력을 List Length-L 입력으로연결합니다. C) 목록의순서를 Reverse List 컴포넌트 (Logic/ List/ Reverse List) 를사용하여거꾸로할수 있습니다. Reverse List 컴포넌트로수의올라가고있는목록을입력합니다. 그것에의하여 출력은 9.0 부터 0.0 으로내려가고있는목록을보여줍니다. D) Shift 컴포넌트 (Logic/ List/ Shift List) 는오프셋이동에의존하는많은증가량의목록을올리거나내립니다. 숫자 Slider를 Shift-S 입력으로연결하는동안 Series-S 출력을 Shift-L 입력으로연결합니다. 오프셋이동은전체수에서발생되기때문에숫자 Slider를형식의정수로설정합니다. 만약그 Slider를 -1로설정했다면, 그목록의모든값들은하나의등록수만큼아래로내릴것입니다. 마찬가지로, 만약그 Slider 값을 +1로변경하면, 그목록의모든값들은하나의등록 For plugin version

51 수만큼위로올라갈것입니다. 또한, 그입력을오른쪽클릭하고 Set Boolean 을선택하는것으로 True 또는 False로 Shift-W 또는포장값을설정할수있습니다. 이번예제는, 그첫번째값을원하는방법으로진행하기위하여오프셋이동값을 +1로설정합니다. 만약포장값을 True로설정했다면, 그첫번째등록은데이터설정으로부터이번값을제거하고목록의위와바깥으로이동됩니다. E) Split List 컴포넌트는목록을부다작은두개의목록으로분할합니다. 그것은그목록을분할하는곳이정수이고분할하는색인을갖습니다. 따라서, 출력은목록 A-0.0, 1.0, 2.0, 3.0, 4.0 목록 B-5.0, 6.0, 7.0, 8.0, 9.0처럼보일것입니다. F) Cull Pattern 컴포넌트 (Logic/ Sets/ Cull Pattern) 는숫자정수에의해정의된 N에서그목록의모든 N번째데이터를제거합니다. 이번예제는숫자 Slider를 Cull Nth-N입력을연결합니다. Slider를 2.0으로설정합니다. Cull Nth-L 출력은홀수마다삭제된새로추려진목록 : 0.0, 2.0, 4.0, 6.0, 8.0을나타냅니다. 만약숫자 Slider를 3.0으로변경한다면 Cull Nth 컴포넌트는 0.0, 1.0, 3.0, 4.0, 6.0, 7.0, 9.0 로나타낼수있도록목록에서모든세번째수를제거합니다. G) Cull Pattern 컴포넌트 (Logic/ Sets/ Cull Pattern) 는정의된값을근거로하는목록의항목을제거하는점에서 Cull Nth 컴포넌트와비슷합니다. 하지만이런경우숫자값대신에패턴을형성하는논리값의설정을사용합니다. 그논리값을 True로설정했다면, 그데이터등록은목록에남아있을것입니다. 그러나 False 값은그설정으로부터데이터의등록을제거할것입니다. 이번예제는논리패턴을 True, False, False로설정합니다. 거기에는 4개의논리값과목록은 10개의등록으로그패턴은목록의끝에이를때까지반복됩니다. 패턴과함께그출력목록은 0.0, 1.0, 4.0, 5.0, 8.0, 9.0처럼보입니다. Cull Pattern 컴포넌트는첫번째, 두번째등록 (0.0과 1.0) 을유지해두고다음두개의값 (2.0과 3.0) 이제거됩니다. 그컴포넌트는이패턴을그목록의끝에이를때까지계속됩니다. For plugin version

52 8.2 데이터조립하기 마지막섹션에서 Grasshopper에서목록이어떻게다루어지는지조정하기위해다른요소들이어떻게사용될수있는지설명하였다. 그러나목록의순서를조정하기위해서 Weave 요소또한사용할수있는데 Logic 탭의하위계열리스트에서 Weave 요소를찾을수있습니다. 스크래치로부터명로도만들기 : Logic/ List/ Weave-Weave 요소를드래그하여캔버스위에놓습니다. 첫번째 P-지점은 Weaving 패턴인데이것은자료를배열하는순서를결정합니다. 그다음두개의입력아이템라벨 0과 1은각각함께엮을두개의리스트를입력합니다. 그러나 2개이상의리스트를더엮고싶다면, Weave 요소의중간에서오른쪽클릭을하고입력 Manager를열면필요한만큼의리스트를추가할수있습니다. 입력 Manager가열리면초록색의플러스버튼을누르고다른리스트를추가합니다. 그리고각리스트의숫자옆에빨간색 X 컴포넌트리스트를지웁니다. 입력 manager 를열고리스트를추가하기위해초록색버튼을선택합니다. For plugin version

53 Params/ Primitive/ Integer- Inter Parameter를캔버스위에끌어놓습니다. Integer Parameter를오른쪽클릭하여 Manager Integer Collection" 을선택합니다. 상단의녹색 + 버튼을클릭함으로써컬렉션정수를추가할수있습니다. 컬렉션에 3개의숫자를추가하고각값을 0, 1, 2 로바꿉니다. 이정수모음은패턴의짜임을결정짓게되며, 이러한숫자들의순서를바꿈으로써빠르게데이터세트의순서를바꿀수있습니다. Params/ Primitive/ String- String 요소를캔버스끌어놓습니다. 오른쪽클릭을하고 Manager String Collection" 을선택합니다. 이제함께엮고싶은 String 리스트를추가하고첫번째 Data List를만듭니다. 3개의리스트를갖기위해이것을 2번복사하여붙여넣기를합니다. 이와같이컬렉션에 L0:A, L0:B, L0:C, L0:D, L0:E 5개의스트링을추가합니다. "L0:" 이것은리스트 0에있는 String들을말해주고데이터를추적할수있도록도와줍니다. 다른요소들과엮을경우다음과같이나타납니다. String Parameter 를선택하고 2 개이상의 String Parameter 를캔버스에복사하기위해 Ctrl+C( 복사 ) 와 Ctrl+( 붙이기 ) 를실행합니다. 두번째 String Parameter 에서오른쪽클릭을하고 Collection Manager 를열고 L1:A, L1:B, For plugin version

54 L1:C, L1:D, L1:E 스트링모음을바꾸어줍니다. 세번째 String Parameter에서오른쪽클릭을하고 Collection Manager를열고 L2:A, L2:B, L2:C, L2:D, L2:E 스트링모음을바꾸어줍니다. 이제패턴의짜임을바꿔줄하나의 Integer Parameter를 Weave 요소의 P-입력에연결합니다. 첫번째 String Parameter를 Weave 요소의 0-입력에연결합니다. 두번째 String Parameter를 Weave 요소 1-입력에연결합니다. 세번째 String Parameter를 Weave 요소의 2-입력에연결합니다. Params/ Special/ Post-it Panel- Post- it Panel을캔버스에끌어놓습니다. Weave-W 결과를캔버스위의 Post-it Panel에연결합니다. Post-it Panel은통합모음에따라엮어진데이터의목록을보여주며, 첫번째아이템은리스트 0의첫번째아이템이어야합니다. 따라서리스트의두번째아이템은리스트 1의첫번째아이템이됩니다. 리스트마지막까지이러한규칙이적용되며목록의순서를바꾸기위하여 Integer 모음의순서를바꿀수있습니다. For plugin version

55 8.3 데이터의이동 섹션 8.1에서차감값의변화에따라리스트의위, 아래의모든값을이동시키기위해 Shift 요소를사용하는지에대해논의하였습니다. 아래의예는한원의두개점리스트에어떻게 Shift 요소를사용할수있는지보여주기위해 David Rutten에의해만들어졌습니다. Note: 다음예는완성된정의를보기위해문서가포함된 Source File 폴더안의 Shift Circle.ghx 파일을엽니다. 아래는이동된원의완성된정의를보여줍니다. 스크래치로부터명료도만들기 : Curve/ Primitive/ Circle CNR_ Circle CNR(Center, Normal, Radius) 을드래그하여캔버스에끌어놓습니다. Circle-C에서오른쪽클릭하고 Set One 점을클릭합니다. Rhino 대화상자에서 0.0.0을입력합니다. Circle-R에서오른쪽클릭하고숫자를 10.0까지입력합니다. Vector/ Constants/ Unit Z-Unit Z Vector요소를드래그하여캔버스에끌어놓습니다. Unit Z 요소의 F입력에서오른쪽클릭을하고숫자를 10.0으로설정합니다. X Form/ Euclindean/ Move- Move요소를캔버스에끌어놓습니다. Unit Z-V 결과를 Move-T 입력과연결합니다. Circle-C 결과를 Move-G 입력과연결합니다. 중심점이 0.0.0에있고반지름이 10.0인원을하나만듭니다. 그런다음이원을복사하고복사된원을 Z축 10.0 유닛으로옮기기위해이동요소를사용합니다. Curve/ Division/ Divide Curve- 두개의 Divide Curve 요소를드래그하여캔버스에끌어놓습니다. Circle-C 결과와첫번째 Divide-C 입력을연결합니다. Move-G 결과와두번째 Divide-C 입력을연결합니다. For plugin version

56 Params/ Special/ Slider- 번호가있는 Slider 하나를캔버스에끌어놓습니다. 그 Slider를선택하고아래변수와같이설정합니다. ο Slider 유형 : Integer ο 최소값 : 1.0 ο 최대값 : 30.0 ο 결과값 : 30.0 숫자가있는 Slider를 Divide Curve-N 입력들과연결합니다. 각원을따라 30포인트로균일하게자리잡은것을봅니다. Logic/ List/ Shift List- 한개의 Shift List 를드래그하여캔버스에끌어놓습니다. Divide Curve-P 의결과와 Shift List-L 입력을연결합니다. For plugin version

57 Params/ Special/ Slider- 숫자Slider를캔버스에끌어놓습니다. 새로운 Slider를선택하고아래와같이설정합니다. ο Slider 유형 : Integer ο 최소값 : ο 최대값 : 10.0 ο 결과값 : 10.0 숫자Slider 결과를 Shift List-S 입력에연결합니다. Shift List-W에서오른쪽클릭하고 Boolean 값을 True로설정합니다. 원에있는점을 10을통해색인리스트에이동합니다. 값을 True로설정함으로써데이터를통한루프를만듭니다. Curve/ Primitive/ Line- Line 요소를캔버스위에끌어놓습니다. 첫번째 Divide Curve-P 결과와 Line-A 입력을연결합니다. Shift-L 결과를 Line-B 입력에연결합니다. 원위에바뀌지않은점에서바뀐점의연결을선으로만들어왔습니다. 바뀌지않은점의리스트와바뀐점의리스트사이의선의연결관계변화를보기위해 Shift Offset을조정하는숫자Slider 값을변경할수있습니다. 8.4 엑셀로데이터내보내기 심화분석을위해 Grasshopper 에서다른소프트웨어에정보를보내기위해필요한많은예 들이있습니다. Note: 다음완성된정의를보길원한다면문서가포함되어있는 Source File 폴더의 Stream Content_Excel.ghx 파일을엽니다. 시작하기위해서 Range 요소 (Logic/ Sets/ Range) 를캔버스에놓습니다. 0.0 부터 10.0 까지 숫자도메인을설정합니다. 결과목록이 0.0 과 10.0 사이에서동일하게배열된 101 개의값 을보여주기위해서 Range-N 입력에서오른쪽클릭하여 100 단계숫자를설정합니다. For plugin version

58 다음으로 Graph Mapper 요소 (Params/ Special/ Graph Mapper) 를드래그하여캔버스에끌어놓습니다. 오른쪽클릭하여 Graph 유형을 Linear로설정하고, Range-R 결과와 Graph Mapper 입력을연결합니다. Post-it 요소를캔버스위에드래그해서올려놓고 Graph Mapper 결과를 Post-it Panel 입력과연결하여작업을마칩니다. Graph Mapper 유형이 Linear로설정되었기때문에 (Post-it Panel에서 ) 결과목록은 0.0에서 10.0까지올라가는숫자데이터로선형적모양이배열됩니다. 하지만만약 Graph Mapper 요소에서오른쪽클릭하여 Graph 유형을 Square Root로설정하면로그함수데이터가추출됩니다. For plugin version

59 Post-it Panel에있는데이터목록을내보내기위해 Stream Contents를선택한후, 패널에서오른쪽클릭을합니다. 실행이되었으면하드드라이브에서파일의저장위치를찾습니다. 저장하기위해사용할수있는다양한파일유형에는 Text File(.txt), Comma Separated 결과값s(.csv), Data File(.dat). CSV파일은테이블폼안에데이터저장만을위한포맷으로엑셀로보내질수있습니다. CSV파일에있는각각의라인은테이블의각행과연관이있습니다. 라인안의필드들은콤마에의해분리되어지고각필드는테이블의열에속해있습니다. 예제에서는각라인마다하나의값을가지고있어멀티행을사용하지않지만, 정확한데이터를보냄으로써복잡한스프레스시트를만드는것은가능합니다. 이제엑셀로데이터를보낼수있습니다. 먼저적용을하고 Data 탭을선택합니다. 이탭아래에있는 Get External Data from Text를선택하고하드디스크에저장했던 Stream Contents.csv를찾습니다. 데이터를어떻게보내고자하는지에대한몇개의질문이 Text Import Wizard에따라안내될것입니다. Delimited 버튼이체크되어있는지확인하고 Next 를클릭하여 Step2로갑니다. For plugin version

60 Text Import Wizard의두번째단계는 Delimiters의어떤유형이데이터를나눌것인지정의하게해줍니다. Delimiter는 CSV 파일에저장된 ( 세미콜론, 콤마혹은스페이스 ) 특성입니다. 이것은데이터가또다른열로나뉘어져야하는것을가리킵니다. CSV파일의각라인에저장되어있는숫자데이터가있기때문에, Delimiter의구체적인어떤특성을선택하지않아도됩니다. Next를눌러 Step3으로갑니다. For plugin version

61 Step3 에서는삽입된데이터를엑셀에서어떻게표현할지를설정할수있습니다. General 항 목을선택시에는모든수치데이터는숫자로, 날짜정보는날짜형식으로그리고이외의 기타데이터는텍스트로변환합니다. 데이터를 Import하기위해첫번째셀을선택하고 Default 값인 A1을그대로사용합니다. 이제 101개의 Grasshopper Post-it Panel의값들이엑셀에서보여지게됩니다. Grasshopper 정의파일은항시업데이트되는스트리밍데이터이므로정의파일에변화가생긴다면이는자동적으로 CSV파일을업데이트합니다. Grasshopper로돌아가서 Graph Mapper 타입을 sine으로바꾸면 Post-it Panel의데이터가바뀜을알수있습니다. 엑셀데이터탭으로돌아가면, 모든항목새로고침 (refresh all) 이라는버튼을볼수가있습 니다. 이버튼을클릭하고확인차아에서조금전엑셀에서열었던 CSV 파일을선택하면 Column A 의값들이모두업데이트되어있음을확인할수있습니다. A1 에서 A100 까지의셀을모두선택합니다. 그리고 insert 탭의 Line chart 유형을선택하고 첫번째 2D Line chart 아이콘을선택합니다. For plugin version

62 Grasshopper Mapper 의그래프형태와같은형태의그래프가그려짐을볼수있습니다. 원 하는그래프를 Grasshopper 에서설정하고엑셀에서 Refresh 하면엑셀그래프가업데이트 됨을알수있습니다. For plugin version

63 9 기본 Vector 물리학에서 Vector 는크기와방향을가진 Object 입니다. Vector 는종종라인혹은화살표로 표현되는데이는시작점 A 와끝점 B 를가진, 크기는라인의길이이며방향은 A 로부터 B 까 지의상대적인위상차이입니다. Rhino에서 Vector는점과구별이모호하다. Rhino의점과 Vector는모두세개의소수로표현되기때문입니다.( 각각의소수는직교좌표체계에서 x, y, z 값을의미한다.) Rhino에서점과 Vector의차이는점은절대적인값을가지게되고 Vector는상대적인값을가지게됩니다. 예를들어세개의소수로이루어진좌표가있다고가정했을때, 이좌표의집합을점으로생각한다면이는절대적공간상의위치입니다. 하지만이좌표를 Vector로생각한다면이는시작과끝이정해지지않은공간상의방향 ( 원점 0, 0, 0 으로부터의 ) 입니다. 이렇듯 Vector에는절대성이없고실제적인기하학이아니므로 Grasshopper와 Rhino에서는 Vector를가시화하지는못합니다. 하지만 Vector는이동, 회전, 방향등과같은연산시에사용되어질수있습니다. 위의예에서, 점 x, y, z 컴포넌트를이용해원점 (0,0,0) 에하나의점을생성합니다. 이점을복 사및이동시키기위해점 x y z 컴포넌트를 Move 컴포넌트에연결합니다. 그리고이동에 For plugin version

64 필요한 Vector를설정하기위해각방향의단위 Vector를캔버스위에위치시킵니다. 단위 Vector들은각각 x, y, z 방향의기본 Vector들이며그크기는각각 1.0입니다. 이 Vector들의크기를조절하기위해 Numeric Slider를각기본Vector에연결합니다. 그다음세방향의 Vector를실제로 move에사용하기위해 Shift를누른채로각 Vector의출력탭을 move 의입력탭에연결합니다. 이제 Rhino 뷰포트상에첫번째점 (0,0,0) 과세개의이동된점들이나타나게되고, Vector를뷰포트상에서보고싶다면 Line 컴포넌트를각각의시작과끝점에연결합니다. For plugin version

65 9.1 점 / Vector 정밀조작 ( 연산 ) Grasshopper 는 Vector 연산을하는점 /Vector 컴포넌트를가지고있습니다. 아래테이블은 가장많이사용되어지는기능입니다. 컴포넌트 Location Descripting Example Vector/ 점 / Distance 입력되어진두점사이의거리를계산합니다. Vector/ 점 / Decompose X, Y 그리고 Z 컴포넌트에서모아진점을분석 ( 분 류 ) 합니다. 즉, 점의집합데이터를 X, Y, Z 값의 컴포넌트변환합니다. Vector/ Vector/ Angle 두점사이의각도를계산하여부채각 ( 라디안단 위값 ) 으로계산되어져출력합니다. Vector/ Vector/ Length Vector 의길이를계산합니다.( 넓이, 너비, 진폭, 사 정, 출몰, 방위각 ) Vector/ Vector/ Decompose Vector/ Vector/ Summation Vector/ Vector/ Vector2pt Vector/ Vector/ Reverse Vector/ Vector/ Unit Vector Vector/ Vector/ Multiply Vector를그것들의컴포넌트부분 ( 요소, 단편, 조각 ) 들로분석 ( 분류 ) 합니다. Vector 컴포넌트 1(A 입력값 ) 과 Vector 2(B 입력값 ) 의합계정의되어진두점으로부터 Vector를생성합니다. 모든컴포넌트들을무효 ( 부정적인작동 ) 로하고, 방향을거꾸로합니다.( 반전 ) 길이는유지 ( 지속 ) 합니다. Vector 길이의역 ( 함 ) 수에 ( 전도 ) 의하여모든컴포넌트들을나누어떨어지게합니다. Vector 결과는 Vector 유닛 ( 단위 ) 1의길이를가집니다. 때때로정상적인것으로보내집니다. 단위 Vector화. 정해진요소 ( 수치 ) 만큼 Vector의컴포넌트들을곱하거나늘립니다. For plugin version

66 9.2 점견인자 ( 끌어당기는 ) 로수학적 Vector/Scalar( 조직적인, 단계적인 ) 를사 용하는법 Vector 와스칼라에대한기본지식을바탕으로외부의한점으로부터거리에반응하여크기 가변하는원들로이루어진그리드시스템의예를살펴봅니다. 위의회로는아래원들의크기가변화되어진것이일련하게생성되는정의로정리되었습니 다. 캔버스 3 개의숫자 Slider(Params/ Special/ Numeric Slider) 를생성하여각각의 Slider 에오 른쪽클릭한후, 다음과같이설정합니다. Rectangular 점그리드컴포넌트생성 (Vector/ 점 / 그리드 Rectangular) For plugin version

67 첫번째 Slider를 Pt 그리드-X 입력탭에연결합니다. 두번째 Slider를 Pt 그리드-Y 입력탭에연결합니다. 세번째 Slider를 Pt 그리드-S 입력탭에연결합니다. Rectangular 점그리드컴포넌트는점으로이루어진그리드를생성, P-입력은이그리드의원점이되며, 본예제에서는 0,0,0을원점으로사용합니다. 이그리드는컴포넌트는 x 및 y 숫자 Slider에의해정의된만큼의점을각각 x, y방향으로생성합니다. 그러나본예제에서 x, y값을 10으로설정했음에도불구하고각방향으로 10개이상의점이생성이되는데이는원점을중심으로 x, y모두 +/-방향으로 10만큼확장하기때문입니다. 즉, x, y방향의수치가두배가되는점을얻게됩니다. S-입력은점사이의거리를설정합니다. 이컴포넌트는전체시스템의입력으로써휘발성이아닌영구적인데이터입니다. 영구적인데이터타입 (Persistent data 유형 ) 에대해서는 3장을참조합니다. 이컴포넌트는 Rhino 객체로부터연결혹은정의되기전까지는점을생성하지않습니다. 즉, Rhino에서점을생성하고이를컴포넌트에연결해야합니다. 이점이 Attractor 점으로사용되어질것입니다. Rhino에서임의의위치점을생성합니다. 본예제의경우는 top 뷰에서점을생성하여 x, y 평면상에서점을위치시킵니다. 그다음점 attractor를 Grasshopper 점컴포넌트에연결합니다. 점컴포넌트상에오른쪽클릭후, Set One을선택합니다. Rhino에서생성한점을선택합니다. 이제포인트그리드와 Attractor 점을모두생성합니다. 다음단계로 Attractor 점과각그리드상점의거리를측정하기위해 Vector연산을사용할것입니다. Distance 컴포넌트생성 (Vector/ Point/ Distance) 합니다. Attractor 점출력을 Distance-A 입력에연결합니다. Rectangular 그리드점 -G 출력을 Distance-B 입력에연결합니다. 첫번째단계는위그림과같습니다. 마우스를 Distance-D 출력탭에올리면 Attractor Point로부터그리드상의각점까지의거리에해당하는숫자의리스트가표시됩니다. 이거리값들은각점위에놓일원의반지름을결정하게됩니다. 거리값들이원들의반지름이되기에는조금크므로이값들을줄여야합니다. Division operator를생성합니다.(scalar/ Operators/ Division) For plugin version

68 Distance-D 출력을 Division-A 입력에연결합니다. Numeric Slider를생성합니다.(Params/ Special/ Numeric Slider) 오른쪽클릭후, 다음과같이설정합니다. ο 이름 : PT1 Influence ο Slider 유형 : Floating 점 ο 최소값 : 0,0 ο 최대값 : 100,0 ο 결과값 :25,0 Pt1 Influence Slider를 Division-B 입력에연결합니다. 거리값들이반지름으로쓰기엔큰값이므로, Scale factor를사용하여좀더작은값으로변환합니다. 숫자 Slider를나누는값으로설정합니다. 이값을 Circle 컴포넌트의반지름값으로입력해도무관하지만, 조금더완성도있게만들기위해 Falloff 거리값 ( 최소값 ) 을정하는또다른 Math 컴포넌트를사용하기로합니다. 즉, Attractor Point와포인트그리드의거리가너무멀어질경우, 원의반지름은그에비례하여커지게되는데, 이반지름은포인트그리드사의각점의거리에비해너무커지지않게조절이필요합니다. Minimum 컴포넌트를생성합니다.(Scalar/ Utility/ Minimum) Division-R 출력을 Minimum-A 입력에연결합니다. Numeric Slider를생성합니다.(Params/ Special/ Numeric Slider) 오른쪽클릭후, 다음과같이설정합니다. ο 이름 : Falloff ο Slider 유형 : Floating 점 ο 최소값 : 0,0 ο 최대값 : 30,0 ο 결과값 : 5,0 Falloff Slider를 Minimum-B 입력에연결합니다. Circle CNR(Center, Normal, Radius) 을생성합니다.(Curve/ Primitive/ Circle CNR) 각원의중심점이이전단계에서만든포인트그리드상의각점에위치하게만듭니다. Rectangular Pint 그리드-G 출력을 Circle-C 입력에연결합니다. Minimum-R 출력을 Circle-R 입력에연결합니다. Rectangular Point 그리드컴포넌트를오른쪽클릭후, Preview를꺼줍니다. Grasshopper 정의파일은위와같습니다. 일련의원들은 Attractor Point 로부터거리에의해 스케일이조정되었습니다. For plugin version

69 추가적인 Attractor 점설정을합니다. 기존의정의중일부를복사하여붙여넣음으로서추가적인 Attractor 점을설정합니다. 다음의컴포넌트들을선택합니다.; Attractor 점 Parameter, Distance 컴포넌트, Pt 1 Influence Slider, Division 컴포넌트, Falloff Slider, Minimum 컴포넌트, 그다음복사하여붙여넣습니다. 복사된컴포넌트들을캔버스상에서겹치지않도록위치시킵니다. 또다른필요의 Attractor 점은 Grasshopper 의외부에서정의되어야합니다. 즉, Rhino 상 에서점을만들고이를 Grasshopper 에연결합니다. Rhino 뷰포트 (top) 상의임의의점에점을생성하여그점이 xy 평면상에위치하도록합니 다. 복사된점 params 에오른쪽클릭하여 Set One 점을클릭합니다. 방금생성한 Rhino 점 object를선택하여연결합니다. 이제두개의 Attractor 점으로부터점그리드까지의거리를측정하여원의반지름을설정할수있는컴포넌트들이완성됩니다. Scalar addition 컴포넌트를사용하여이두개의거리값리스트를하나로합칩니다. Addition 컴포넌트를생성합니다.(Scalar/ Operators/ Addition) 첫번째 Minimum-R 출력을 Addition-A 입력에연결합니다. 두번째 Minimum-R 출력을 Addition-B 입력에연결합니다. Addition-R을 Circle-R 입력에연결합니다.(* 기존의연결에추가되는것이아니라, 기존의연결을대체하는것입니다.) For plugin version

70 제대로연결되었다면정의파일은위그림과같습니다. Falloff Slider 중하나는삭제되고두 개의변수를하나의 Slider 로함께조절합니다. Pt Influence 와 Falloff Slider 를움직이며원 의크기가어떻게변하는지살펴봅니다. For plugin version

71 9.3 견인자 ( 박스들의크기조작 ) 로수학적 Vector/ 스칼라를사용하는방법 이전예제를통해특정한점으로부터의거리를이용하여원의크기를결정하는작업을해보 았습니다. 이번에는같은원리를사용해서 Object 들의크기를결정하고 Grasshopper 의 Shader 컴포넌트를이용하여 Object 의색깔도결정합니다. Step 1: 삼차원의포인트그리드를생성합니다. 2개의 Slider를생성합니다.(Params/ Special/ Numeric Slider) 첫번째 Slider를오른쪽클릭한후, 다음과같이설정합니다. ο Slider 유형 : Integer ο 최소값 : 0,0 ο 최대값 : 10,0 ο 결과값 : 3,0 두번째 Slider를오른쪽클릭한후다음과같이설정합니다. ο Slider 유형 : Integers For plugin version

72 ο 최소값 : 0,0 ο 최대값 :25,0 ο 결과값 : 25,0 Rectangular 점그리드컴포넌트를생성합니다.(Vector/ Point/ Grid Rectangular) 첫번째 Slider를점그리드의 X와 Y 입력에연결합니다. 두번째 Slider를점그리드-S 입력에연결합니다. 첫번째 Slider는 x와방향의점의개수를조절하며 (Slider 숫자의두배에해당하는점이생성됩니다.) 두번째 Slider는점과점사이의거리를조절합니다. 삼차원의포인트그리드를생성하기위해이포인트그리드를 z축으로복사합니다. Series 컴포넌트를생성합니다.(Logic/ Sets/ Series) 두번째 Slider를 Series-N 입력에연결합니다. 첫번째 Slider를 Series-C 입력에연결합니다. Series 컴포넌트는 z방향복사의개수를결정하게됩니다. 하지만이 Series 컴포넌트는 z축방향의양의방향으로만복사를진행하게됩니다. 이미생성된포인트그리드는원점을중심으로 x, y축의양과음방향으로확장되므로 Slider를 3으로설정했다고해도실제로는 7 개의점을얻게되는것입니다. 궁극적으로정육면체의 3차원포인트그리드를얻고자하므로 z방향으로도 7개의점을가져야합니다. 이를위해 Series 컴포넌트의 count 입력탭에 expression을수정합니다. Series-C 입력을오른쪽클릭한후, Expression 탭을클릭합니다. Expression editor에 (C*2)+1을입력합니다. 이는 Series-C 입력에입력되는값을 2배로만든후, 1을더하게합니다. 즉, 2가입력이되면 7이출력이되고 3이라는숫자대신 7이 count 탭에입력됩니다. Unit Z Vector 컴포넌트를생성합니다.(Vector/ Constants/ Unit Z) Series-S 출력을 Unit Z-F 입력에연결합니다. Unit Z-V 출력탭에마우스를올리면 7개의값이각각 25만큼의차이, 혹은두번째 Slider 에서정의된값만큼의차이를가지며정의되어있음을알수있습니다. 이값의리스트를이용하여 x, y평면상의 2차원포인트그리드를 3차원의형태로증식시킵니다. -Move 컴포넌트를생성합니다.(X Form/ Eucildean/ Move) -점그리드-G 출력을 Move-G 입력에연결합니다. -Unit Z-V 출력을 Move-T 입력에연결합니다. Rhino 뷰포트를보면두개의면사이를연결하는램프와같은형태가보입니다. 이는데이터매칭알고리즘이기본적으로 Longest list로설정이되어있기때문입니다. 이알고리즘을 Cross reference로바꾸어주면삼차원으로확장된포인트그리드를볼수있습니다.( 데이터매칭 : 6장참고 ) -Center Box 컴포넌트를생성합니다.(Surface/ Primitive/ Center Box) -Move-G 출력을 Center Box-B 입력에연결합니다. -점그리드와 Move 컴포넌트를오른쪽클릭하여 Preview를꺼줍니다. 지금까지의정의파일입니다. For plugin version

73 Step 2: 스칼라 / Vector 연산 점컴포넌트를생성합니다. 점컴포넌트에오른쪽클릭후, Attractor Pt로이름을설정합니다. 이전예제와같이 Rhino 상에포인트를생성한후, 이를 Grasshopper 점컴포넌트에연결합니다. 이를위해먼저 Rhino 상에서점을생성합니다. Rhino에서삼차원상의임의의위치에점을생성합니다. Grasshopper에서생성한점을선택하여연결합니다. 붉은 x마크의점은 Rhino 점과 Grasshopper의점이연결되었음을보여줍니다. Rhino 상의점이공간상에서이동하면 Grasshopper의점 ( 붉은 x마크 ) 또한따라움직이며업데이트됩니다. Distance 컴포넌트를생성합니다.(Vector/ 점 / Distance) Attractor Pt 출력을 Distance-A 입력에연결합니다. Move-G 출력을 Distance-B 입력에연결합니다. 마우스를 Distance-D 출력에올리면 Attractor Point로부터삼차원그리드상의점까지의거리값의리스트를볼수있습니다. 이값들을 Scale factor로사용하기전에값들을스케일을낮출필요가있습니다.( 그렇지않을경우, 값들이너무커서상자들이서로오버랩됩니다.) 캔버스에 Distance 컴포넌트를생성합니다.(Scalar/ Operators/ Division) Distance-D 출력을 Division-A 입력에연결합니다. Slider를생성합니다.(Params/ Special/ Numeric Slider) Slider를오른쪽클릭한후, 다음과같이설정합니다. ο 이름 : Scale Factor ο Slider 유형 : Integers ο 최소값 : 0,0 ο 최대값 : 25,0 ο 결과값 : 25,0 Scale Factor Slider를 Division-B 입력에연결합니다. Scale 컴포넌트를생성합니다.(X Form/ Affine/ Scale) Center Box-B 출력을 Scale-G 입력에연결합니다. Division-R 출력을 Scale-F 입력에연결합니다. Center Box 컴포넌트를오른쪽클릭한후, Preview를끕니다. 지금까지의정의파일은아래의그림과같습니다. Rhino 뷰포트상의상자들은 Attractor 점 For plugin version

74 으로부터의거리에의해크기가조정되어있음을볼수있습니다. Scale Factor 의시각화를 위해각상자들에색을적용합니다. Step 3: 박스에색깔지정하기 Sort List 컴포넌트를생성합니다.(Logic/ List/ Sort List) 거리값에의해변화되는색값을적용하기위해서가장가까운거리및가장먼거리값을알아냅니다. 이를위해서거리값들을크기순으로정렬하고처음값및마지막값을찾습니다. List Item 컴포넌트를생성합니다.(Logic/ List/ List Item) Sort List-L 출력을 List Item-L 입력에연결합니다. List Item-i 입력을오른쪽클릭한후, Integer 결과값값을 0,0으로설정합니다. 이는가장작은거리값이되는첫번째아이템을전체리스트로부터추출합니다. List Length 컴포넌트를생성합니다. Sort List-L 출력을 List Length-L 입력에연결합니다. List Length-L 출력을두번째 List Item-L 입력에연결합니다. 마우스를 List Item-E 출력에가져가면마지막항목이추출되지않음을알수있습니다. 이는 Grasshopper가리스트상의첫아이템에 0이라는순서를부여하기때문입니다. 예를들어 100개의값이리스트상에존재한다고하면첫번째아이템은 0이라는순서값을가질것이고, 마지막아이템은 100이아닌 99라는순서값을가지게됩니다. 이를수정하기위해서는두번째 List Item-i 입력의 Expression을수정해야합니다. 즉, 두번째 List Item-i 입력에입력되는값에서 1을뺀값이최종적인입력값이되도록수정합니다. 두번째 List Item-i 입력을오른쪽클릭한후, Expression Editor를선택합니다. 다음의수식을입력합니다.:i-1 이제마우스를 List Item-E 출력에가져가면가장먼거리값에해당하는값이추출됨을볼수있습니다. Gradient 컴포넌트를생성합니다.(Params/ Special/ Gradient) 첫번째 List Item-E 출력 ( 가장작은거리값에해당하는값 ) 을 Gradient-L0 입력에연결합니다. 두번째 List Item-E 출력 ( 가장큰거리값에해당하는값 ) 을 Gradient-L1 입력에연결합니다. For plugin version

75 Division-R 출력을 Gradient-t 입력에연결합니다. L0 입력은 Gradient 왼쪽편이표현하게될아이템의번호를정의합니다. 본예제에서는 Gradient의왼쪽편은 Attractor Point와가장가까운박스까지의거리, 즉, 첫번째아이템의번호 (0) 가되어야합니다. 반대로 L1 입력은 Gradient의오른쪽편이표현하게될아이템의번호를의미하며이는 Attractor Point와가장먼박스까지의거리, 즉, 마지막아이템의번호 (99) 를의미합니다. Gradient 컴포넌트의 t-입력결과값은 Gradient를통하여표현하고자하는값들의범위, 즉, 거리값리스트그자체입니다. 리스트상의각값들은이제 Gradient 상의색값과연결됩니다. Create Shader 컴포넌트를생성합니다.(Vector/ Color/ Create Shader) Gradient 출력을 Shader-Kd 입력에연결합니다. Shader 컴포넌트는몇개의입력탭을가지고있습니다. 아래는각입력탭의개략적인설명입니다. Kd: Diffuse Color를설정합니다. Object의바탕이되는색으로써각 RGB 값 (0-255) 에의해정의됩니다. Ks: Speculer Highlight를설정하며마찬가지로 RGB 값에의해정의됩니다. Ke: Shader's self illumination 색상을설정합니다. T: 투명도를설정합니다. S: 재질의발광을설정합니다. Gradient 패턴에의해각각의상자들이바탕색을가질수있도록 Gradient Slider를 Diffuse 입력에연결합니다. Slider 사이의흰색점을이동시키거나 Gradient의패턴을바꾸고색상을바꿈으로써색상에변화를가져올수있습니다. 본예제에서는 Spectrum 패턴을사용합니다. Custom Preview 컴포넌트를생성합니다.(Params/ Special/ Custom Preview) Scale-G 출력을 Custom Preview-G 입력에연결합니다. Shader-S 출력을 Custom Preview-S 입력에연결합니다. Scale 컴포넌트를오른쪽클릭한후, Preview를끕니다. 지금까지의과정을통하여아래의그림과같이 Attractor Point를 Rhino 뷰포트상에서움직이면각상자들의색과크기가변화하는것을알수있습니다. For plugin version

76 10 Cueve 의종류 Curve는기하학적인 Object이므로그러한기하학적특성을표현하는값들을가지게되는데, 이러한값들은 Curve를생성하거나분석되는데사용됩니다. 예를들어모든 Curve는시작점과끝점의위치를가지고있으며, 만약, 이두점간의거리가 0이라면즉, 시작과끝이같은것입니다. 시작과끝이같다면 Curve는닫힌 Curve가됩니다. 또한, 모든 Curve는몇개의 Control Point를가지게되는데모든 Control 점과 3차원상에서같은평면에위치하게된다면이 Curve는평면의 Curve가됩니다. Curve의어떤특성은 Curve 전체에일정하게적용되기도하지만모든특성이 Curve 전체를통해동일한것은아닙니다. 다시말해평면성은특정한 Curve에있어서는동일하지만, 법선 Vector라는특성은동일한 Curve 내에서도다른값들을가질수가있습니다. 또한, 어떤특성값은특정한 Curve에서만찾아볼수있습니다. 지금까지 Lines, Circle, Ellipses, Arcs 와같은 Grasshopper의기본적인컴포넌트에대해이야기했습니다. Grasshopper 는또한 Rhino 의 Curve 유형 (Nurbs Curve/ Poly Curve) 을표현하기위한툴을 갖고있습니다. 그중 Spline 컴포넌트를사용하기위해먼저일련의점들이필요합니다. 6 개의점이 x, y 평면상에놓여있습니다. 각점은좌에서우로이름이적혀있고이름순서는 Grasshopper 연결하는순서와같습니다. For plugin version

77 Point 컴포넌트가여러개의 Curve 컴포넌트와연결되어있습니다. 각각의 Curve 컴포넌트는각기다른형태의 Curve를생성합니다. 우선 Grasshopper 상의 Point 컴포넌트에 Rhino 상의점들을연결합니다. 이를위해, Point 컴포넌트를오른쪽클릭한후, Set Multiple Point를선택하여 Rhino 상의 6개의점을이름의순서대로선택합니다. 선택하는순서에의해파란색연결선이보일것이고, 모두선택하였으면엔터를쳐서 Grasshopper로돌아옵니다. 6개의점들은이제각각의위에붉은 x마크로표현되어져각점들이 Grasshopper에연결되었음을보여줍니다. A) Nurbs Curve(Curve/ Spline/ Curve) Non-Uniform Rational Basic Spline 또는 Nurbs Curve는 Rhino에서구현가능한여러가지 Curve 중하나입니다. Control Point 외에도 (6개의점들 ) Nurbs Curve는 Degree( 등급 ), Knot-Vector( 매듭, 장식-Vector), Weight( 무게 ) 등과같은특성이있습니다. Nurbs의이론에대해서는많은책들과논물들이발표되어있으나, 그러한수학은논외로합니다. For plugin version

78 Nurbs Curve-V 입력은컨트롤포인트를정의합니다. Rhino 상의점을직접선택하여입력할수도있고, Grasshopper 상의다른컴포넌트로부터넘겨받은값을입력할수도있습니다. Nurbs Curve-D 입력은 Curve의범위를결정합니다. Curve의범위는 1과 11을포함한 1 에서 11까지의정수입니다. Curve의범위는각각의컨트롤포인트가 Curve에미치는영향력의범위를설정합니다. 범위가클수록영향의범위역시커집니다. 다음테이블은 David Rutten의 Rhino스크립트 101에서발췌하였으며, 범위에따른허브의형태변화를살펴볼수있습니다. For plugin version

79 범위변화값에따른 NurbsCurve Vector 범위 -1 Curve 는폴리라인과동일하게작동. 컨트롤포인트의수와동일한결절점 컨트롤포인트와결절점이 1 대 1 대응범위 -2 흔하지않고결절점들은직관적위치. 포리곤의각세그먼트의중간점에서컨트 롤폴리곤과만납니다. 아크나원표현에사용. 범위 -3 가장흔하고 Rhino NurbsCurve 의기본 값. 결절점의위치가납득하기힘든위치이 지만, 전체적 Curve 와컨트롤폴리곤의 배열은가장익숙한형태. 범위 -4 Rhino 상에서기술적으로는가능하지만 짝수범위를가지는 Nurbs Curve 는작동 오류가있습니다. 보편적으로홀수범위가선호. 범위 -5 흔하고범위 -3 과같이자연스럽고부드러 운모양. 범위가높으므로점들이 Curve 형태에미 치는영향력의범위가더큼.( 부드러운 ) 범위 -7~9 이론적인범위 Curve 입니다. Rhino 는범 위 -11 까지올라갈수있으나컨트롤포인 트들이 Curve 에미치는영향력의범위가 너무커서즉, 부드러운 Curve 를생성하 므로컨트롤폴리곤과의연계성이너무 작아져실제적인모델링에유용하지않습 니다. 예제에서숫자 Slider를 Curve-D 입력에연결하여 Nurbs Curve의범위를결정하였습니다. Slider를좌우로움직이면각컨트롤포인트가 Curve에미치는영향력을살펴볼수있습니다. Nurbs Curve-P 입력은 Curve가닫힐것인가열릴것인가를결정합니다. False값은열린 Nurbs Curve를, True값은닫힌폐곡선을생성합니다. 세개의출력탭은직관적으로알수있듯, C 출력은생성되어진 Curve를, L 출력은 Curve의길이값을, D 출력 Curve의 domain 값을나타냅니다. (Curve가 6개의컨트롤포인트로만들어졌다면 0에서 6까지에해당하는 domain 영역을생성합니다.) B)Interpolated Curve(Curve/ Spline/Interpolate) For plugin version

80 Interpolated Curve는 Nurbs Curve와는조금거동이다릅니다. 이 Curve는컨트롤포인트들을지나면서생성됩니다. Nurbs Curve는특정한점을지나도록만드는것이어렵습니다. 심지어각각의컨트롤포인트를조절한다고해도특정점을지나는 Nurbs Curve를만드는것은매우힘든일입니다. V-입력은 Nurbs Curve와마찬가지로일련의점들을요구합니다. Interpolated Curve에서는차원에상관없이 Curve는점들을지나게되는데, Nurbs Curve에서컨트롤포인트를지나도록하는방법은범위-1로설정합니다. D(Degree; 범위 )-입력또한 Nurbs Curve와같습니다. 그러나홀수만가능하므로범위-2의 Interpolated Curve를생성하는것은불가능합니다. P-입력은 Curve의닫힘과열림을설정하고세개의출력탭은 Nurbs의경우와동일합니다. 세개의출력은대부분의 Curve Object 에있어서공통적으로사용되어집니다. C) 비틀어진 Curve 이름에도불구하고비틀어진 Curve는또다른 Interpolate Curve에지나지않습니다. 한가지차이를제외하고는모든속성이동일합니다. 비틀어진 Curve 컴포넌트는기본적으로범위가 0인 Nurbs Curve, 혹은폴리라인과같은 Curve를생성합니다. 이 Curve는 angle threshold라는입력탭이있는데 angle threshold에서정의된각도이상으로 Curve가연결되는결절점에서는각이진연결이부드러운연결로바뀝니다. 이때연결되는각도라함은두개의연결된세그먼트들이생성하는각도중큰각도에서 180도를뺀각도와동일합니다. A-입력에는숫자슬라이드가연결되어서숫자변화에따른 Curve의변화를볼수있습니다. angle threshold의각도는 Radian 단위로입력되어야하며, 예제에서는범위값을 Radian으로변화하는표현이포함되어있습니다. For plugin version

81 D) 폴리라인 Curve(Curve/ Spline/ Polyline) 폴리라인 Curve는아마도 Rhino에존재하는 Curve 중에가장유연성이좋은 Curve일것입니다. 폴리라인 Curve는라인세그먼트로만들어질수도있고, 폴리라인세그먼트로만들어질수도있으며, 범위-1의 Nurbs Curve로도만들어질수있기때문입니다. 기본적으로폴리라인은점의배열과동일합니다. 유일한차이점은폴리라인 Curve에서는점에순서를부여하는것입니다. 앞서언급했듯범위-1의 Nurbs Curve는폴리라인과동일합니다. 폴리라인 Curve는두개나그이상의점을연결하는세그먼트의집합이므로얻어지는 Curve는항상컨트롤포인트를지나게됩니다. 이는 Interpolated Curve의속성과도비슷합니다. V-입력은각라인세그먼트를구성하는점들의집합으로정의됩니다. C-입력은열림과담힘값을설정하는 Boolean 변수입니다. 폴리라인컴포넌트의출력탭은다른 Curve들과조금다르게오직 Curve 그자체에해당하는탭뿐입니다. 생성된 Curve의속성을이용하고싶다면다른형태의 Curve를사용합니다. For plugin version

82 E) 폴리아크 (Curve/ Spline/ Poly Arc) 폴리아크는폴리라인과거의동일합니다. 그러나직선의세그먼트대신아크형태의세그먼트를가지는것이차이점입니다. 각아크의시작과끝의법선값은이웃하는아크와부드러운연결을가져서전체적으로부드러운곡선을생성할수있도록자동적으로계산되어집니다. 추가적인입력이나출력탭은없습니다. For plugin version

83 10.1 Curve 분석학 컴포넌트 Location De 스크립트 ion Example Curve/ Analysis/ Center 호들이나원들의반지름과중심점을찾습 니다. Curve/ Analysis/ Closed Curve/ Analysis/ Closest 점 Curve/ Analysis/ End 점 Curve/ Analysis/ Explode Curve/ Utility/ Join Curve Curve가닫혀있는지혹은주기적 ( 정상, 정기 ) 인지테스트합니다. 공간상의특정한점으로부터 Curve에가장가까운점을찾아냅니다.( 공간상에서의 Curve에가장가까운어떤샘플점을찾습니다.) Curve의시작점과끝점을추출합니다. Curve를세그먼트와정점으로분리하여냅니다. Curve들의안에서컴포넌트조각으로 Curve를분리해냅니다. 가능한많은 Curve 세그먼트들을동반하여결합합니다. Curve/ Analysis/ Length Curve 의길이를측정합니다. Curve/ Division/ Divide Curve Curve 를동일한간격으로 n 등분합니다. Curve/ Division/ Divide Distance 두 Curve 사이를미리설정한거리값으로 나눕니다. Curve/ Division/ Divide Length 미리설정한세그먼트의길이값으로 Curve 를나눕니다. Curve/ Utility/ Filp Curve 가이드옵션을사용하여 Curve 의방 향을바꿉니다. Curve/ Utility/ Offset 지정된거리값으로 Curve 를오프셋합니 다. Curve/ Utility/ Fillet 정의된반지름값으로 Curve 의날카로운 모서리를필렛합니다. For plugin version

84 Curve/ Utility/ Project Intersect/ Region/ Split sith Brep(s) Intersect/ Region/ Trim with Brep(s) Intersect/ Trim with Region(s) Intersect/ Boolean/ Region Union ( 하나의 Brep은 Rhino의폴리Surface처럼여러개의면이합쳐진세트객체입니다.)Brep 위로 Curve를투영합니다. 하나혹은여러개의 Brep들로 Curve를분할합니다. Curve를하나혹은여러개의 Brep들로트림합니다. Curve들의안쪽과바깥쪽들의출력 ( 항목 ) 은분절된양쪽부분을각각나타냅니다. Curve를하나혹은여러개의범위들로트림합니다. Curve들의안쪽과바깥쪽들의출력 ( 항목 ) 은분절된양쪽부분을각각나타냅니다. 두개의 2차원평면으로닫힌 Curve들로최외곽선혹은병합된바깥 Curve들을생성합니다. 다수의것도마찬가지입니다. Intersect/ Boolean/ Region Intersection 두개의닫힌 Curve 들의교차점외곽 Curve 들을생성합니다. Intersect/ Boolean/ Region Difference 두개의 2 차원평면 Curve 들사이에서다 른부분의 ( 교차하지않는부분 ) 외곽라인 을찾아냅니다. For plugin version

85 11 표면유형 구, 콘, 평면혹은실린더와같은몇개의기본적건표면 (Surface) 타입외에 Rhino는 3종류의자유로운곡면타입을가지고있는데, 이들중가장유용한표면은 Nurbs 표면입니다. Curve와비슷하게모든가능한면의형태는 Nurbs 면으로나타내어질수있으며, Rhino의기본적인면입니다. Nurbs 표면은가장유용하기때문에 Nurbs 표면에대하여중점적으로이야기하겠습니다. Nurbs Surface는 Nurbs Curve와비슷한속성을가지고있습니다. 같은알고리즘은형태, 법선, 접선, 곡률등을계산하기위해쓰입니다. 그러나몇가지눈에띄는차이점이있습니다. 예를들어, Nurbs Curve는접선 Vector( 탄젠트 ) 와법선평면 ( 노말 ) 을가지고있는데반해, Nurbs Surface는법선 Vector( 노말 ) 와접선평면 ( 탄젠트 ) 을가지고있습니다. 이는 Nurbs Curve는목표하는방향이없는데비해 Nurbs Surface는방위의방향이없습니다. 이러한사실은모든 Curve와면에해당하며이러한사실에익숙해져야합니다. Nurbs Surface의경우에두가지방향이존재합니다. 이는 Nurbs Surface가기본적으로 u, v방향을가지는사각형의그리드에바탕을두고있기때문입니다. 종종이러한방향이임의적이기는하지만, 이러한방향성을사용하는것은 Nurbs Surface를컨트롤하는데유용합니다. Grasshopper는 Nurbs Surface를다루는방법이 Rhino와비슷합니다. 이는두프로그램이같은엔진을가지고면을생성하기때문입니다. 그러나 Grasshopper는 Rhino의뷰포트를통해면을표현하기때문에 ( 이러한이유로 Grasshopper에서 bake를하지않고는 Rhino 뷰포트에서면을선택할수없는것입니다.) 일부 Mash 설정이 Grasshopper 연산속도를높이기위해서낮게설정되어있습니다. Grasshopper에서만들어진면들은다소각이져보이지만 bake를통해 Rhino 면으로전환되면높은 Mash 설정을갖고있음을볼수있습니다. Grasshopper는면을두가지방식으로다룹니다. 첫번째는이미논의하였듯이, Nurbs Surface를통해이고, 일반적으로모든면분석의컴포넌트들은 ( 면적을구하거나, 곡률을계산하거나하는 ) Nurbs Surface에서사용가능합니다. 물론면을다루는것또한복잡한수학공식을바탕으로하고있으나, 이는컴퓨터의입장에서보면다소간단합니다. 왜냐하면이러한면들은두께와같은삼차원적인요소가고려되지않기때문입니다. McNeel사의개발자들은삼차원 ( 솔리드 Object) 물체를다룰수있는두번째방법도제공 For plugin version

86 하는데이것이 Brep(Boundary Representation), Grasshopper의면 ( 두께를가진면 ) 을해석할수는있는방법입니다. Brep은 3차원의솔리드 Object 혹은 Rhino의폴리 Surface와같은방식으로생각할수있습니다. 이는당연히 Nurbs Surface의집합이지만, 단일 Nurbs Surface가이론상으로는두께가없는데반해 Brep은두께를갖습니다. Brep이몇개의 Nurbs Surface로이루어져있으므로몇몇의 Surface 분석툴은 Brep에서도여전히사용가능합니다. ( 모든 Surface 분석툴이 Brep에서사용가능한것은아닙니다.) 이는 Grasshopper가내부적인변환의논리를가지고있기때문입니다. 즉, 입력해야하는입력단자에 Brep을입력한다고하면 Grasshopper는자동적으로 Brep을여러개의면으로분해해서인식가능하기때문입니다. 이는숫자와정수, 색과 Vector, 호와원등에도해당합니다. 다음과같은아주특별한경우도존재합니다. Curve Number(Curve의길이를추출합니다.) Curve Interval(Curve의도메인을추출합니다.) Surface Interval2D( 면의 u, v도메인을추출합니다.) String Number( 문자열을평가합니다.) Interval2D Number(2차원 Interval이만드는영역의넓이를계산합니다.) 더많은자동변환의경우가있지만, 위의경우만으로몇개의예제를이해하는데에는충 분합니다. For plugin version

87 11.1 면의연결 다음예제는면을컨트롤하는기술에대한좋은예이며, David Fano(Design Reform) 에의해만들어졌습니다. 이예제에서는 Sweep 2Rail, Surface Offset, Surface Division 컴포넌트에대해다룰것입니다. 시작에앞서 Surface Connect. 3dm (Source File Folder) 를엽니다. 이파일에는 3개의 Curve(2개의 Rail Curve와한개의단면Curve) 가있습니다. Note: 완성된파일의정의는 Surface Connect.ghx 를참조합니다. For plugin version

88 정의파일을만드는순서 : Sweep 2Rail 컴포넌트를생성합니다.(Surface/ Freeform/ Sweet 2 Rail) Sweep 2Rail-R1 입력에오른쪽클릭한후 Set one Curve를선택합니다. 첫번째 Rail Curve를선택합니다. Sweep 2Rail-R2 입력에오른쪽클릭한후 Set one Curve를선택합니다. 단면Curve를선택합니다. 올바로선택되었다면두개의레일 Curve 사이에생성된면이보일것입니다. Surface Offset 컴포넌트를생성합니다.(Surface/ Freeform/ Offset) Sweep 2Rail-S 출력을 Offset-S 입력에연결합니다. Numeric Slider를생성합니다.(Params/ Special/ Slider) Slider 오른쪽클릭한후다음과같이설정합니다.: ο 이름 : Surface Offset ο Slider 유형 : Floating 점 ο 최소값 : 0,0 ο 최대값 : 10,0 ο 결과값 : 10,0 Slider를 Surface Offset-D 입력에연결합니다. 새로운면이 10만큼떨어져서생성된것이보입니다. Divide Surface 컴포넌트 2개를생성합니다.(Surface/ Utility/ Divide Surface) Sweep 2Rail-S 출력을첫번째 Divide Surface-S 입력에연결합니다. 일련의점들이첫번째 Sweep Surface 위에나타나게되고, u, v방향모두 10이기본값이며이는면을각방향별로 10개로나눕니다. u, v방향의점을각각연결시에는 iso Curve를얻게됩니다. Surface Offset-S 출력을 Divide Surface-S 입력에연결합니다. 새로운점들이두번째 Surface 위에생성됩니다. Numeric Slider 2개를생성합니다.(Params/ Special/ Slider) 첫번째 Slider에오른쪽클릭한후다음과같이설정합니다.: For plugin version

89 ο 이름 : U Divisions ο Slider 유형 : Integers ο 최소값 : 0,0 ο 최대값 : 100,0 ο 결과값 : 15,0 두번째 Slider에오른쪽클릭한후다음과같이설정합니다.: ο 이름 : V Divisions ο Slider 유형 : Integers ο 최소값 : 0,0 ο 최대값 : 100,0 ο 결과값 : 25,0 U Division Slider를두개의 Divide Surface-U 입력s에연결합니다. V Division Slider를두개의 Divide Surface-V 입력s에연결합니다. 두개의 Slider는면분할의개수를정의합니다. 두개의면모두동일한수의 u, v분할개수를가지고있으므로우리는두그룹의점들을 1대1로연결하여내, 외면을연결하는선들을얻을수있습니다. Line 컴포넌트를생성합니다.(Curve/ Primitive/ Line) 첫번째 Divide Surface-P 출력을 Line-A 입력에연결합니다. 두번째 Divide Surface-P 출력을 Line-B 입력에연결합니다. 일련의선들이두면상의각점을잇는것을볼수있습니다. 다음단계로각선들에게두께를부여합니다. Pipe 컴포넌트를생성합니다.(Surface/ Freeform/ Pipe) Line-L 출력을 Pipe-C 입력에연결합니다. Numeric Slider를생성합니다.(Params/ Special/ Slider) Slider에오른쪽클릭한후다음과같이설정합니다.: ο 이름 : Pipe Radius ο Slier 유형 : Floating 점 ο 최소값 : 0,0 ο 최대값 : 2,0 ο 결과값 : 0,75 Pipe Radius Slider를 Pipe-R 입력에연결합니다. For plugin version

90 11.2 패널링도구 (Tool) McNeel은최근에패널링도구라는강력한 Rhino 플러그인을만들었습니다. 이플러그인은주어진면위에특정한지오메트리를배열하는데쓰인다. Grasshopper 역시이러한기능을할수있으며, 이번예제에서는면을어떻게나누고특정한지오메트리를나누어진면에배열을할수있는지를알아봅니다. 패널링도구에대한더욱자세한정보는다음링크를참고합니다. 아래는지오메트리패턴 ( 커튼월의멀리언등 ) 을고층빌딩의면위에복사하여배열하는정의입니다. Note: 완성된정의를보려면 Paneling Tool.ghx 를참조합니다. 빌딩을만들기위하여로프트에사용되어질 Curve가필요합니다. Rhino에서 panel tool_base.3dm 파일을엽니다. 빌딩의외부면을만들기위해 4개의타원이필요합니다. Curve 컴포넌트를생성합니다.(Params/ Geometry/ Curve) Curve 컴포넌트에오른쪽클릭한후, Set Multiple Curves를선택합니다. For plugin version

91 가장아래쪽의타원으로부터시작하여상단의타원순으로선택합니다. 선택완료후엔터를누릅니다. 전의예제에서와같이 Rhino Object를 Grasshopper의 Object에연결하였습니다. Loft 컴포넌트를생성합니다.(Surface/ Freeform/ Loft) Curve 출력을 Loft-S 입력에연결합니다. Loft-O 입력에서오른쪽클릭시 Rhino의로프트명령창에서로프트옵션을볼수있습니다. 본예제의경우에는모든값을 Default 값으로설정합니다. 추후에이옵션을다룰일이있을것입니다. * 추가과정 : Grasshopper 상에서는현재만들어진로프트면이내 외부가뒤집혔는지에대하여알수없습니다. 본예제의경우, 면이내부를향함을뒤늦게알게되었습니다. 그래서 Flip 컴포넌트를사용하여면의방향을뒤집기로합니다. 하지만, 면의방향의대해서는확신할수없으므로나중에지오메트리패턴들이원하는방향과반대의방향 ( 내부로향해배열 ) 으로배열되어있다면, Flip 컴포넌트를삭제함으로써문제를해결할수있습니다. Flip 컴포넌트를생성합니다.(Surface/ Utility/ Flip) Loft-L 출력을 Flip-S 입력에연결합니다. Surface 컴포넌트를생성합니다.(Params/ Geometry/ Surface) Flip-S 출력을 Surface 컴포넌트 s 입력에연결합니다. Surface 컴포넌트를오른쪽클릭한후, Reparameterize에체크를합니다. 현재우리가만든면의도메인영역값으로 0부터면의최상단에해당하는값 ( 실제적인값 -Rhino에서 Distance를통해얻을수있는값 ) 을가지고있습니다. 하지만우리는 Rhino에서타원의위치조절을통해얼마든지전체빌딩의높이를수정할수있기에면의최상단에해당하는도메인값은변할여지가있습니다. 만약빌딩의외측면의도메인이 0에서시작해 1 로끝나는상대적인값이라면, 즉 0은최하단의도메인값이고 1은최상단의도메인값이라면, 빌딩의전체적인높이값이실제적으로얼마가되던이면을컨트롤하기에용이할것입니다. 이는아주중요한과정이며이과정이없이는면을정확하게나눌수없을것입니다. Reparameterize는임의의범위를가지는도메인의영역을 0에서시작해 1로끝나는상대적인도메인값으로전환합니다. 2 개의수치간격컴포넌트를생성합니다.(Scalar/ Interval/Divide Interval2) 면을나누기에앞서범위를설정합니다. For plugin version

92 Divide Interval 컴포넌트의 I-입력을오른쪽클릭한후, Manage Interval Collection을선택합니다. 녹색의 + 버튼을눌러서 Interval을추가합니다. 기본값으로 Interval은 u:{0.0 ~ 0.0} v:{0.0 ~ 0.0} 로정의됩니다. 하지만우리는 u, v 두방향의범위 {0 ~ 1} 이필요합니다. u의끝값을 1.0으로설정합니다. v의끝값을 1.0으로설정합니다. Interval 설정은위의그림과같을것입니다. OK를눌러창을빠져나옵니다. 이제마우스를 Divide Interval-I 입력탭에올리면 u, v 두방향모두간격이 0~1로설정된것을볼수있습니다. 이는 Reparameterize 시킨면의 Interval, 0~1과동일한값이됩니다. 두개의 Numeric Slider를생성합니다.(Params/ Special/ Slider) 첫번째 Slider를오른쪽클릭한후, 다음과같이설정합니다.: ο 이름 : U Interval ο Slider 유형 : Integers ο 최소값 : 5.0 ο 최대값 : 30.0 ο 결과값 : 10.0 두번째 Slider를오른쪽클릭한후, 다음과같이설정합니다.: ο 이름 : V Interval ο Slider 유형 : Integers ο 최소값 : 5.0 ο 최대값 : 30.0 For plugin version

93 ο 결과값 : 10.0 U Interval Slider를 Divide Interval-U 입력에연결합니다. V Interval Slider를 Divide Interval-V 입력에연결합니다. Surface Box 컴포넌트를생성합니다.(Xform/ Morph/ Surface Box) Surface 컴포넌트출력을 Surface Box-D 입력에연결합니다. Divide Interval-S 출력을 Surface Box-D 입력에연결합니다. Curve, Loft, Surface를오른쪽클릭하여 Preview를끕니다. 빌딩의면을두개의 Slider 를통해 100 개의영역으로나누었습니다. 이제까지작업한것을 돌아보면, 첫번째로 0~1 까지해당하는 Interval 을생성하였으며, 이는면의영역인 0~1 과 동일합니다. 그다음그 Interval을 u, v방향으로각각10개씩나누었으며, 이는곧 100개의 Interval 영역을생성한것입니다. Slider를움직임으로써전체면을몇개의 Interval로나눌것인가에대한정의가가능합니다. 이제면은잠시잊고지오메트리패턴에대해생각해봅니다. Rhino 파일내에는윈도우시스템을발견할수있을것입니다. 윈도우시스템은 spandrel panel, mullion, glazing panel 로구성되어있습니다. 우리는이제이지오메트리패턴을사용하여기존에생성된면위에이패턴을배열할것입니다. Geometry 컴포넌트를생성합니다.(Params/ Geometry/ Geometry) Geometry 컴포넌트를오른쪽클릭한후, Ser Multiple Geometries를선택합니다. spandrel panel, mullion, glazing panel을 Rhino 뷰포트에서선택합니다. 모든객체를선택한후, 엔터를누릅니다. Bounding Box 컴포넌트를생성합니다.(Surface/ Primitive/ Bounding Box) Geometry 컴포넌트출력을 Bounding Box-C 입력에연결합니다. Bounding Box 컴포넌트를사용하는 2가지이유가있는데, 첫째로 Bounding Box 컴포넌트는지오메트리패턴의높이 ( 두께 ) 를결정하게돕습니다. 이예제의경우우리의지오메트리패턴은단순한박스이므로직관적으로높이를알수는있으나, 유기적인지오메트리패턴을사용할때에전체의높이를알기어려운경우도더러있었을것입니다. 이제는지오메트리패턴의높이값을 Surface Box 컴포넌트의입력값으로사용할것입니다. For plugin version

94 두번째이유는 Bounding Box를조금후에다룰 Box Morph 컴포넌트의 Reference 값으로사용할것이기때문입니다. Bounding Box 컴포넌트의 U-입력을오른쪽클릭한후, Boolean 값을 True로설정합니다. 이값을 True로설정하는것은여러개의 Brep 객체를통해단하나의 Bounding Box를생성하기위함으로중요한과정입니다. Box 컴포넌트를생성합니다.(Surface/ Analysis/ Box 컴포넌트 ) Bounding Box-B 출력을 Box 컴포넌트-B 입력에연결합니다. Box 컴포넌트-Z 출력을 Surface Box-B 입력에연결합니다. Box Morph 컴포넌트를생성합니다.(Xform/ Morph/ Box Morph) Pattern Geometry 출력을 Box Morph-G 입력에연결합니다. Bounding Box-B 출력을 Box Morph-R 입력에연결합니다. Surface Box-B 출력을 Box Morph-T 입력에연결합니다. Morph Box 컴포넌트를오른쪽클릭한후, Data matching을 Cross Reference로설정합니다. Surface Box 컴포넌트를오른쪽클릭한후, Preview를끕니다. 정리하자면, 지오메트리패턴을 Morph Box 컴포넌트에입력하였습니다. 이로써어떤지오메트리패턴을복제하여배열할것인가를정의하였습니다. 그다음지오메트리패턴으로부터생성된 Bounding Box를참조지오메트리로사용하였는데, 이로써지오메트리패턴을구성하고있는개별의 Object들이하나의 Object로인식되어면위에위치할수있도록설정하였습니다. 그리고마지막으로 100개의분할된박스를개별의참조지오메트리를입력할타겟으로설정하였습니다. 모든과정이제대로진행되었다면, 이제지오메트리패턴을수정하거나 u, v 값을수정함으로써전체적인시스템이어떻게변화하는지볼수있을것입니다. For plugin version

95 11.3 대각선그리드 ( 다이아몬드모양의그리드패턴 ) 표면 우리는이전예제를통하여파사드를패널링하는방법에대해알아보았습니다. 이번예제는앞서다룬예제와비슷한과정을통해구조적인대각선그리드부재를면위에생성하는방법을알아볼것입니다. Surface Dia그리드.3dm을 Rhino에서엽니다. 파일내에있는뒤집힌코사인 Curve를이용하여로프트면을생성할것입니다. Note: 완성된정의파일을보려면 Surface Dia 그리드.ghx 를참조합니다. 정의파일을만드는순서 : 2개의 Curve 컴포넌트를생성합니다.(Params/ Geometry/ Curve) 첫번째 Curve 컴포넌트를오른쪽클릭한후, 이름을 입력 Crv1 로바꿉니다. 입력 Crv1 컴포넌트를오른쪽클릭한후, Set One Curve를선택합니다. Rhino 뷰포트상의한 Curve를선택합니다. 두번째 Curve 컴포넌트를오른쪽클릭한후, 이름을 입력 Crv2 로바꿉니다. For plugin version

96 입력 Crv2 컴포넌트를오른쪽클릭한후, Set One Curve를선택합니다. Loft 컴포넌트를생성합니다.(Surface/ Freeform/ Loft) 입력 Crv1 컴포넌트를 Loft 입력-S 입력에연결합니다. Shift 키를누른채로, 입력 Crv2 컴포넌트를 Loft 입력-S 입력에연결합니다. 두개의 Curve 사이에면이생성됨을알수있습니다. Surface 컴포넌트를생성합니다.(Params/ Geometry/ Surface) Loft-L 출력을 Surface 컴포넌트입력에연결합니다. 2개의 Dimensional Interval 컴포넌트를생성합니다.(Scalar/ Interval/ Divide Interval2) 전의예제와동일하게면을분할할것입니다. 이를위해면분할함으로써, u, v방향으로 Interval을생성합니다. Surface 컴포넌트출력을 Divide Interval-I 입력에연결합니다. Slider를생성합니다.(Params/ Special/ Numeric Slider) Slider를오른쪽클릭한후, 다음과같이설정합니다.: ο 이름 : Surface Division Number ο Slider 유형 : Integers ο 최소값 : 0.0 ο 최대값 : 20.0 ο 결과값 : 12.0 Slider를 Divide Interval 컴포넌트의 u, v 입력에연결합니다. Isotrim 컴포넌트를생성합니다.(Surface/ Utility/ Isotrim) Surface 컴포넌트출력을 Isotrim-S 입력에연결합니다. Divide Interval-S 출력을 Isotrim-D 입력에연결합니다. Loft, Surface 컴포넌트를오른쪽클릭한후, Preview를끕니다. 숫자 Slider에서분할된값에대응하는분할된면의설정값을볼수있습니다. 하나의 Slider가 Interval을위해 u, v 입력에연결되며, 숫자 Slider가오른쪽, 왼쪽동일하게나누어진것을볼수있습니다. u, v가같은 Slider에연결되어있으므로하나의 Slider로 u, v값을모두조절합니다. 독립적으로 u, v값을조절하려면 Slider를하나더추가합니다. Brep 컴포넌트를생성합니다.(Surface/ Analysis/ Brep 컴포넌트 ) 이컴포넌트는 Brep을면, 모서리그리고절점으로분해합니다. 이경우에는양코너에있는점의위치를알아내어대각선의연결을만들어야합니다. Isotrim-S 출력을 Brep 컴포넌트-B 입력에연결합니다. 지금까지의정의파일의모습은위그림과같습니다. 하나의로프트된큰면을분할해서 For plugin version

97 각각의작은면을생성한후, 이를 Explode 하여서로분리합니다. 다음으로각각의분해된 면에위치한점들이데이터구성방식에서어떻게구성되어있는지살펴봅니다. Parameter Viewer 컴포넌트를생성합니다.(Params/ Special/ Parameter Viewer) Brep 컴포넌트-V 출력을 Parameter Viewer 입력에연결합니다. Parameter Viewer를통해 Tree Structure가어떻게구성되어있는지볼수있습니다. 본예제의경우에는 144개의패스가존재하며각각의패스에는 4개의데이터들이들어있습니다. ( 작은면의개수가 144개이며, 각각의면에는 4개의꼭지점들이있습니다.) List Item 컴포넌트를이용하면각각의패스에서특정한데이터값을추출해낼수가있습니다. 대각선의연결을만들기위해각각의좌표공간에위치하는 4개의꼭짓점의순서를알아야합니다. List Item 컴포넌트 4개를생성합니다.(Logic/ List/ List Item) Brep 컴포넌트-V 출력을 4개의 List Item-L 입력s에연결합니다. 첫번째 List Item의 i-입력탭에오른쪽클릭한후, Integer 값을 0으로설정합니다. 두번째 List Item의 i-입력탭에오른쪽클릭한후, Integer 값을 1로설정합니다. 세번째 List Item의 i-입력탭에오른쪽클릭한후, Integer 값을 2로설정합니다. 네번째 List Item의 i-입력탭에오른쪽클릭한후, Integer 값을 3으로설정합니다. List Item의 Index 수를 0에서시작해서각각 1씩증가시킨것을알수있습니다. 이는 Tree Structure로설정된 Grasshopper 상에서인지할수있는각각의다른 144개의점과총 144개의면에서각각첫번째, 두번째, 세번째그리고네번째 Item들을추출한것입니다. 그래서 4개의 Item 컴포넌트는각각첫번째점들의집합, 두번째점들의집합, 세번째점들의집합그리고네번째점들의집합이됩니다. 이제각각의 4 꼭짓점이서로분리되었음으로대각선그리드 (Dia그리드) 를만들기위해점들을연결하는선을생성하면됩니다. 2개의 Line 컴포넌트를생성합니다.(Curve/ Primitive/ Line) 첫번째 List Item-E 출력을첫번째 Line-A 입력에연결합니다. 세번째 List Item-E 출력을첫번째 Line-B 입력에연결합니다. 두번째 List Item-E 출력을두번째 Line-A 입력에연결합니다. 네번째 List Item-E 출력을두번째 Line-B 입력에연결합니다. 여기서각각의그리드가표면위에생성됨을볼수있습니다. Pipe 컴포넌트를생성합니다.(Surface/ Freeform/ Pipe) 첫번째 Line-L 출력을 Pipe-C 입력에연결합니다. Shift 키를누른체로, 두번째 Line-L 출력을 Pipe-C 입력에연결합니다. 파이프의반지름을컨트롤하기위하여숫자 Slider를생성해서이를 Pipe radius에연결합니다. For plugin version

98 Numeric Slider를생성합니다.(Params/ Special/ Number Slider) Slider를오른쪽클릭한후, 다음과같이설정합니다.: ο 이름 : Pipe Radius ο Slider 유형 : Floating 점 ο 최소값 : 0.0 ο 최대값 : 1.0 ο 결과값 : 0.05 Pipe Radius Slider를 Pipe-R 입력에연결합니다. 마지막으로각각의 4Point를이용하여 4Point를모두포함하는평면을생성합니다. 이는원래의작은면들은곡률을가지고있어서방금생성한대각선그리드와만나지않는경우가생길수도있기때문입니다. 4 Point Surface 컴포넌트를생성합니다.(Surface/ Freeform/ 4Point Surface) 첫번째 List Item-E 출력을 4 Point Surface-A 입력에연결합니다. 두번째 List Item-E 출력을 4 Point Surface-B 입력에연결합니다. 세번째 List Item-E 출력을 4 Point Surface-C 입력에연결합니다. 네번째 List Item-E 출력을 4 Point Surface-D 입력에연결합니다. 4 Point Surface 컴포넌트와 Pipe 컴포넌트이외의 Preview를끕니다. 마지막부분은위의그림과같을것입니다. 이정의는어떤종류의단일면에서든지작동할 것이며로프트를사용하는대신에다른방법으로면을생성해도상관없이작동할것입니다. For plugin version

99 11.4 균일하지않은대각선그리드생성하기 이전예제를통하여분할되는균일한공간의대각선그리드구성이어떻게이루어지는지알아보았습니다. 면을나누는 Interval을균일하게나누었기때문에대각선그리드는역시균일하게분할됩니다. 그러나몇개의새로운컴포넌트들과 Graph Mapper로간격과대각선그리드의공간을조절할수있습니다. 우리는이미이전에대각선그리드공간의정의를알고, 이튜토리얼에서하나의대각선그리드를만들어냈습니다. 아래의이미지는균일하지않은대각선그리드의정의가완료된모습입니다. 우리가추가적으로설치해야할컴포넌트들은초록색으로표시됩니다. Note: 완성된정의파일을보려면 Grasshopper 에서 Uneven Surface Dia 그리드.ghx 를열어 참조합니다. 이전예제에서우리는 Divided Interval 컴포넌트를 Isotrim 컴포넌트에연결하였습니다. 본 예제에서는이연결을끊는것으로부터출발합니다. Isotrim-D 입력을오른쪽클릭한후, Disconnect All 을선택합니다. For plugin version

100 연결을끊고새로운컴포넌트들을몇개삽입할예정이므로나머지컴포넌트들을우측으로이동시켜공간을확보합니다. Interval 컴포넌트를 (Interval을 4개로분해하는 ) 생성합니다.(Params/ Special/ Graph Mapper) Divide Interval-S 출력을 Interval 컴포넌트-I 입력에연결합니다. Graph Mapper 컴포넌트를생성합니다.(Params/ Special/ Graph Mapper) U0-출력을 Graph Mapper의입력에연결합니다. Shift 키를누른체로 U1-출력을 Graph Mapper 입력에연결합니다. Graph Mapper를오른쪽클릭하고 Graph 유형을선택합니다. Bezier Graph가이상황에가장맞을거라생각되지만, 선택은각자의취향입니다. Bezier Handle로 Graph Mapper 컴포넌트를이동함으로써, Graph를조정할수있습니다. Graph의배열을조금조정해보기위해균등한간격으로분포되어있는대각선그리드의배열을변화하려고합니다. List Length 컴포넌트를생성합니다.(Logic/ List/ List Length) U1-출력을 List Length-L 입력에연결합니다. Split List 컴포넌트를생성합니다.(Logic/ List/ Split List) Graph Mapper 출력을 Split List의 L-입력컴포넌트에연결합니다. List Length-L 출력을 Split List-i 입력에연결합니다. 2개의 Dimensional Interval 컴포넌트를생성합니다.(Scalar/ Interval/ Interval 2d) Split List-A 출력을 2개의 Dimensional 컴포넌트의 U0-입력에연결합니다. Split List-B 출력을 2개의 Dimensional 컴포넌트의 U1-입력에연결합니다. Decomposed Interval의 V0과 V1의출력을 2개의 Dimensional Interval 컴포넌트의 V0과V1 입력에각각연결합니다. 두개의리스트를 Graph Mapper의입력 ( 단일입력 ) 에연결하였으므로 Graph Mapper의출력단자에는단하나의리스트만이출력됩니다. 이리스트는먼저연결한 144개의 U0에해당하는값들을먼저출력하고, 이어서나중에연결한 144개의 U1에해당하는값들을따라서출력합니다. 동일한 Graph Mapper로두개의다른리스트를처리했지만, 결국두개의다른리스트를필요로하므로결과적으로 Graph Mapper에서나온하나의리스트를두개로다시나누어야합니다. Split List 및 Length Item 컴포넌트는두개의독립된리스트에몇개의 Item이있었는지를확인하고합쳐진리스트를절반이되는지점에서분리합니다. U와는다르게 V에대해서는 Graph Mapper를사용하지않습니다. 이제위의과정으로다시 4개의값들이생성되었고, 이제이값들을이용해서 2차원 Interval에다시연결하여변화된 2차원 Interval을생성합니다. 2개의 Dimensional Interval-I2 출력을 Isotrim-D 입력에연결합니다. 면의분할이이제 Graph Mapper에의해조절이가능하게되었습니다. 정의의일부가끝난장면은같습니다. Graph 유형은분할되는공간을조정할것입니다.; 그다음대각선그리드를살펴봅니다. 필요로하는면의구성을 Bezier Curve로써확장시킵니다. 정의된중간부분의이미지는아래와같습니다. For plugin version

101 For plugin version

102 12 스크립트소개 Grasshopper의기능은 VB DotNet이나 C# 언어를이용해확장이가능합니다. 아마도장래에는더많은언어들이지원될수도있을것입니다. 사용자가생성한코드는능동적으로발생되는 Class Template 내에위치하게되는데, 이는 DotNet Framework에포함되어있는 CLR 편집자에의해 Assembly로써편집됩니다. 이러한 Assembly는컴퓨터의메모리속에남아있으며 Rhino를끄기전까지는사라지지않습니다. Grasshopper의스크립트컴포넌트는 Rhino의 DotNet SDK의 Class 및함수들에접근이가능한데이러한 Class 및함수는플러그인개발자들이 Rhino를위한플러그인을만들기위해사용하기도합니다. Grasshopper는스크립트ing 컴포넌트에접근이가능한 DotNet SDK에기반을두고만들어졌습니다. 왜스크립트컴포넌트를사용해야하는가. 사실필요가없을수도있지만, 어떤경우는필요할수도있습니다. Grasshopper가지원하지않는기능을원하거나프랙탈과같은반복을요구하는발생적인시스템을만들경우에스크립트컴포넌트를사용하게됩니다. 이교재는스크립트컴포넌트를 Grasshopper에서사용하기위한일반적인개론입니다. 세가지장으로구성되며, 첫장은스크립트컴포넌트의 Interface입니다. 두번째는 VB DotNet 에대한개요이며, 마지막은 Rhino DotNet SDK에대해서입니다. 마지막페이지에는보다상세한도움을위한리스트가있습니다. For plugin version

103 13 Scripting Interface 13.1 VB DotNet Script VB DotNet Script 컴포넌트는 Logic 탭에서찾을수있습니다. 현재두가지종류의컴포넌트가있는데, 하나는 Visual Basic, 다른하나는 C# 입니다. 장래에는더많은종류의언어가추가될것입니다. Script 컴포넌트를생성하기위해컴포넌트아이콘을생성합니다. 기본적으로스크립트컴포넌트는두개의입력과두개의출력을갖고있습니다. 사용자는이름을바꿀수도있고입력과출력의숫자도마음대로조절할수있습니다. X: 첫번째입력, 일반적인타입의 Object Y: 두번째입력, 일반적인타입의 Object out: 편집오류메시지를보내는탭 A: 스크립트의결과물이출력되는탭 13.2 입력 Parameters 기본적으로두개의입력 Parameter가있습니다. x, y Parameter들의이름을바꿀수도있고, 삭제할수도있으며형식을지정할수도있습니다. 입력 Parameter에오른쪽클릭하면다음메뉴를볼수있습니다. Parameter 이름 : 클릭후, 이름변경가능 Run time Message: 오류및경고메시지확인 Disconnect and Disconnect All: 연결끊음 Flatten: 데이터를단순배열로변환 List: 입력데이터가리스트인지, 아닌지를설정 유형 hint: 입력데이터의종류를지정. 기본적으로 Object로설정되어있습니다. 코드를더 For plugin version

104 욱읽기쉽고효율적으로관리하기위해입력데이터의형식을지정해주는것이좋습니다. "On" 으로시작되는형식은 OpenNurbs 를의미합니다. 입력 Parameter들은메인컴포넌트메뉴에서도관리될수있습니다. 컴포넌트의중간에오른쪽클릭하면, 입력과출력의상세내역이나오는메뉴를볼수있습니다. 이메뉴를사용하여입력 Manager를열고 Parameter 이름을변경하고새로운 Parameter를추가하거나삭제하는등의일을할수있습니다. For plugin version

105 13.3 출력 Parameters 메인컴포넌트메뉴를통해서출력 Parameter를설정하고추가혹은삭제하는것이가능합니다. 입력 Parameter들과는다르게 Parameter의종류를설정하는탭은없습니다. 단지일반적인형식인 Object로만정의됩니다. 아래그림은출력 Parameter를어떻게핸들링하는지를보여줍니다. Out Parameter는코드의오류및디버깅에대한메시지창이므로삭제될수없습니다. For plugin version

106 13.4 Out Window and Debug Information 출력윈도우는 out" 이라칭하며, 디버그정보를보여줍니다. 이는모든편집오류및경고 를보여줍니다. 사용자는포스트잇컴포넌트를연결해정보들을시각화할수도있습니다. 직접적으로디버그정보와메시지들이하나의텍스트컴포넌트로출력단자에서일련되게 연결되는것을볼수있습니다 스크립트컴포넌트의내부 스크립트컴포넌트를열기위해서는스크립트컴포넌트의중앙에더블클릭을합니다. 혹은 오른쪽클릭하여 Edit source 를누릅니다. 스크립트컴포넌트는두부분으로나뉩니다. A: Import B: Grasshopper_Custom_ 스크립트 class. C: Link to Microsoft developer network help on VB.NET. D: Check box to activate the out of focus feature of 스크립트ing 컴포넌트. For plugin version

107 A: Import Import는코드내에서사용하게될외부의 dll입니다. 대부분은 DotNET 시스템 Import이고두개의 Rhino dll도있습니다. RMA.openNurbs, RMA.Rhino. 이들은모든 Rhino의지오메트리와기능들을포함합니다. 또한 Grasshopper에서만사용가능한것들도포함됩니다. B: Grasshopper_Custom_ 스크립트 class. Grasshopper_Custom_ 스크립트 class 는세부분으로나뉩니다. For plugin version

108 1. Members: 이것은두개의참조를포함합니다. 하나는현재 Rhino app이며다른하나는활성화된문서 doc입니다. Rhino 어플리케이션 (app) 과다큐먼트는 (doc) Rhino Util을통해서직접적접근이가능합니다. 멤버영역은또한출력이나 Return 값을포함합니다. Return 값은일반적인시스템형식으로정의되며사용자는이를변경할수없습니다. 2. Run 스크립트 : 이것은주된스크립트영역이며사용자가자신의코드를입력하는곳입니 다. 3. Additional methods and 유형 declarations: 함수나형식을추가하는곳입니다. 아래의예는 Document absolute tolerance에접근하는두가지방법을보여줍니다. 첫번째 Document reference를이용합니다. 두번째는 tolerance 값을출력윈도우로내보낼시에두개의함수모두같은결과를보여줍니다. 또한본예제에서는두가지의출력이있습니다. 그들은 Script Class의멤버영역에나열되어있습니다. For plugin version

109 For plugin version

110 14 Visual Basic DotNET 14.1 개요 VB.NET 에관해서는인터넷이나책을통해많은정보를구할수있습니다. 다음은코드를작 성하는데있어서가장기본적인것에대한개요입니다 설명 코드에가능한많은설명이나주석을첨가하는것은좋습니다. 자신이만든코드를얼마나빨리잊게되는지알게될것입니다. VB.NET에서는홑따옴표를사용하여그뒤의내용들이모두부가설명임을설정합니다. Grasshopper에서부가설명은회색으로나타냅니다. 'This is comment... I can write anything I like! 'Really... anything 14.3 변수 변수는데이터를담는그릇이라고생각하면됩니다. 다른종류의변수들은변수의종류에따라다른크기를가지고있습니다. 예를들어 int32( 정수 ) 의경우는 32비트를메모리에서할당합니다. 변수가한번정의되면, 나머지코드에서그변수의내용물을언제든지추출하여사용가능합니다. 변수 x는정수 32비트의변수이며초기값은 10입니다. 그다음새로운정수값 20을 x에대입합니다. 아래는 VB.NET에서의모습입니다. Dim as Int32 = 10 'If you print the 결과값 of at the 점, then you will get 10 = 20 'From now on, will return 20 아주많이사용되는다른예입니다. Dim as Double = 20.4 Dim b as Boolean = True Dim 이름 as String = "Joe" 'Dim keyword means that we are about to define a variable 'Double, Boolean and String are all examples of base or 'system define 유형 다음의예제는세가지변수를사용할것입니다.: x : 는정수변수로써코드내에서정의됩니다. y : 는정수변수로써입력의형태로외부에서전달됩니다. A : 는출력변수입니다. 이예제는변수값을출력윈도우에프린트합니다. 이미언급했듯이, 출력윈도우의메시지 를확인하는것이좋습니다. For plugin version

111 변수이름을쉽게알아볼수있도록지정하면코드가읽기편해지고, 오류를고치기쉬워집 니다. 우리는계속해서좋은코드를지정하는방법을이번순서의예시들을통하여연습해 나갈것입니다 목록과정렬 정렬은 VB.NET. 에서많은방법으로정의내려집니다. 일차원혹은다차원의정렬들이존재하며, 정렬의크기를정의하거나동적정렬을사용할수있습니다. 정렬안의요소의앞의수를알고있다면, 다음과같은방법으로정렬의크기를만들수있습니다. One dimensional array Dim myarray(1) As Integer myarray(0)=10 myarray(1)=20 'Two-Dimensional array Dim my2darray(1,2)as Integer my2darray(0,0)=10 my2darray(0,1)=20 my2darray(0,2)=30 my2darray(1,0)=50 my2darray(1,1)=60 my2darray(1,2)=70 'Declare and assign 결과값 s Dim myarray()as Integer = {10,20} 'Declare and assign 결과값 s Dim my2darray(,)as Integer ={{10,20,30},{40,50,60}} For plugin version

112 VB.NET 은 0 에서 9 까지다차원정렬과같이 10 개의요소로써정렬됩니다. 일차원동적정렬에서는보여지는예시와같이새로운 목록 을명령하고요소를추가할 수있습니다. 다음의예시에서는중첩된목록이나정렬목록을동일한혹은혼합된형식의동적다차원 정렬로명령할수있음을볼수있습니다 조작 많은연산자들이 VB.NET. 에내제되어있습니다. 그연산자들은하나혹은여러개의피연 산자를연산합니다. 다음은일방적인연산자테이블을보여줍니다. For plugin version

113 14.6 조건부상황 조건문과함께실행되는게이트와코드블록이있습니다. 조건문은거의 If 와 IF<condition>Then<code>IF 형식을따라구성될때사용되어집니다. Single line statement doesn't need End if: condition=(x<y), code=(x=x+y) If x < y Then x = x + y 'Multiple line needs End If close the block of code If x < y Then x = x + y End If 이것은또한, Else If... Then" 그리고 Else" 를사용하여대안코드블록을실행시킬수있 습니다. 예를들어,: If x < y Then x = x + y Else If x > y Then x = x - y Else x =2*x End If 'execute this line then go to the step after "End If" 'execute this line then go to the step after "End If" 'execute this line then go to the step after "End If" For plugin version

114 또한, Select Case" 라는명령어도있습니다. 표현의값을기본으로한코드의여러블록들을 실행시킬때사용되어집니다. Select Case index Case 0 x= x * x Case 1 x= x ^ 2 Case 2 x= x ^ (0.5) End Select 'If index=0 the execute next line, otherwise go directly to the next case 14.7 Loop Loop 조건이만족하는동안은 Loop 안에있는코드블록의실행을반복할수있습니다. 여 러종류의 Loop 가존재하며, 가장많이쓰이는두가지종류의 Loop 에대해서설명합니다. For... Next" Loop Loop 를만들때가장많이사용되어지는방법입니다. 구성은다음과같습니다. For < index = start_ 결과값 > To < end_ 결과값 > [Step < step_ 결과값 >] 'For loop body starts here [ statements/code to be executed inside the loop] [Exit For] 'Optional: to exit the loop at any 점 [ other statements ] [ Continue For ] 'optional: to skip executing the remaining of the loop statements. [ other statements ] 'For loop body ends here (just before the "Next") 'Next means: go back to the start of the for loop to check if index has passed end_ 결과값 'If index passed end_ 결과값, then exit loop and execute statements following "Next" Next [ statements following the For Loop ] 다음예제는장소의배열을통해반복되는 Loop 를사용합니다. Array of places Dim places_list As New List( of String ) places_list.add("paris") places_list.add("ny") places_list.add("beijing") 'Loop index Dim i As Integer For plugin version

115 Dim place As String Dim count As Integer = places_list.count() 'Loop starting from 0 to count -1 (count = 3, but last index of the places_list = 2) For i=0 To count-1 place = places_list(i) print( place ) Next 만약의배열안의개체를루핑하게되면, For... Next" Loop 를인덱스를사용하지않고배 열의요소를통해반복하는데사용할수있습니다. 위의예제는이렇게다시쓰여질수있습니다.: Dim places_list As New List( of String ) places_list.add("paris") places_list.add("ny") places_list.add("beijing") For Each place As String In places_list Print( place ) Next "While... End While" Loop 이 Loop 유형또한널리사용되어집니다. 이 Loop 의구조는다음과같습니다. While < some condition is True > 'While loop body starts here [ statements to be executed inside the loop ] [ Exit While ] 'Optional to exit the loop [ other statements ] [ Continue While ] 'optional to skip executing the remaining of the loop statements. [ other statements ] 'While loop body ends here 'Go back to the start of the loop to check if the condition is still true, then execute the body 'If condition not true, then exit loop and execute statements following "End While" End While [ statements following the While Loop ] While Loop 를사용해서조금전장소예제를다시작성해봅니다. Dim places_list As New List( of String ) places_list.add("paris") places_list.add("ny") For plugin version

116 places_list.add("beijing") Dim i As Integer Dim place As String Dim count As Integer = places_list.count() i = 0 While i < count place = places_list(i) Print( place ) i = i + 1 End While '(i<count) evaluates to true or false 14.8 다중 ( 중첩 ) Loop 중첩된 Loop들은다른 Loop들을포함하고있는 Loop를말합니다. 예를들어점으로된그리드를가지고있다면, 각지점의목록을얻기위해중첩 Loop를사용합니다. 다음예제는어떻게 1차원적점들의배열이 2차원그리드로들어가게되는지를보여줍니다. 그다음그리드내부의중간지점을찾도록진행합니다. 스크립트는두부분으로구성됩니다.: - 첫째, 1차원배열을우리가 그리드 라고부르는 2차원배열로변화시켜줍니다. - 둘째, 그리드내부의중간지점을찾도록돕습니다. 두부분모두중첩 Loop를사용하게되며, 다음은 Grasshopper의스크립트를정의합니다. For plugin version

117 14.9 Sub 와함수 RunScript 는모든 Script 컴포넌트중가장중요한기능입니다. Grasshopper 에서기보의 Script 컴포넌트를열었을때보여지는모습입니다. Sub RunScript(ByVal As Object, ByVal y As Object) '''<your code...> End Sub Sub... End Sub: 코드의블록기능을닫는키워드 Run스크립트 : Sub의이름입니다. (...) : 괄호후에오는 Sub 이름의입력매개변수입니다. "ByVal As Object,...": 입력매개변수로불리는것들입니다. 각입력매개변수들은다음정의가필요합니다.: ByRef or ByVal: 매개변수가값또는 Ref. 에의해전달될경우구체화합니다. 매개변수의이름 For plugin version

118 매개변수의종류가 As 키워드에의해선행되어집니다. Grasshopper의 Run스크립트에서의모든입력매개변수들은값을전달합니다.(ByVal keyword). 이말은그것들이본래입력들의복사본이며, Script안에서의매개변수의변화는본래의입력에서는영향을미치지않습니다. 그러나만약에더해진첨자들이나함수들은스크립트컴포넌트안에서정의하게된다면 Ref. 에의해서전달할수있습니다.(ByRef) Ref. 에의해서전달되는매개변수의의미는함수안의어떤매개변수의변화도함수를빠져나갈때전달되어진원래의값을변하게합니다. RunScript 안에모든코드를포함할수있습니다. 그러나외부 Subs와함수가정의를내리기위해필요합니다. 외부함수를이용하는이유는 : 중요함수코드를단순화시켜줍니다. 코드를읽기쉽게만들어줍니다. 일반적인함수성을분리하고재사용하게해줍니다. 특별한함수를정의합니다. Sub 와함수의다른점은 Sub 는돌아오는값이필요없지만, 함수는한개의대응하는결과 를돌아오게합니다. 기본적으로함수이름에값을지정할수있습니다. 예를들어,: Function AddFunction( ByVal x As Double, ByVal y As Double ) End Function AddFunction = x + y 여기서말하는것은, 함수에돌아오는값을가지지않아도된다고해석할수있습니다. Subs 는 ByRef 를지나는입력매개변수를통해서가능합니다. 다음에오는 rc" 는돌아오는 값에사용됩니다. Sub AddSub( ByVal x As Double, ByVal y As Double, ByRef rc As Double ) End Sub rc = x + y 여기서호출함수를사용하면함수와얼마나 Sub 이비슷한지를보여줍니다. Dim x As Double = 5.34 Dim y As Double = 3.20 Dim rc As Double = 0.0 'Can use either of the following to get result rc = AddFunction( x, y ) 'Assign function result to "rc" AddSub( x, y, rc ) 'rc is passed by reference and will have addition result For plugin version

119 중첩 Loop 섹션에서우리는중간점들을그렸고점들의목록에서그리드를만드는예를들었습니다. 이러한각각의두함수의함수성을외부 Sub 안에서별도로구별해주고, 다시사용할수도있습니다. 외부함수를이용한예제입니다. 여기는각각의 Subs 가연장되어질때의모습입니다.: For plugin version

120 14.10 회귀 회귀함수들은막히는조건이충족되어지는특별한함수들을일컫습니다. 회귀는일반적으로데이터찾기, 하위분류그리고생성시스템을위해쓰여집니다. 우리는어떻게회귀가사용되어지는것인지에대한예제를살펴봅니다. 좀더많은관련예제는 Grasshopper Wiki와갤러리페이지를확인할수있습니다. 다음예제는입력된선의작은부분을사용하여주어진각으로회전합니다. 선의길이가최저값이하가될때까지지속합니다. 입력매개변수들은 : 시작되는선 (C). 호안의각 (A). Slider는각을각도로표시하지만, 호로변환합니다. 최저길이 (L) - 정지조건출력은 : 선의정렬 For plugin version

121 회귀예제를반복적으로살펴보면서비교합니다. 회귀의해결방법입니다. DivideAndRotate sub 안에다음을입력합니다.: 정지조건을 Sub 의출구로합니다. 동일한함수를불러옵니다.( 회귀함수는자신들을불러옵니다.) For plugin version

122 모든선 은 Ref 를지나계속해서새로운선을목록에추가합니다. 이것을함수성을가진 while 루프를사용하면서같은해답을반복합니다 Grasshopper 에서의목록의처리과정 Grasshopper 스크립트컴포넌트는입력처리목록을두가지방법으로할수있습니다.: 1. 하나의입력값을한번에처리합니다.( 컴포넌트는입력정렬안의수와같은수로불립 For plugin version

123 니다.) 2. 모든입력값을한번에처리합니다.( 컴포넌트는한번만부릅니다.) 만약다른요소들을독립적인목록안에서처리가필요하다면, 첫번째방법으로다가가는것이쉬울것입니다. 예를들어, 10 씩증가하는가지는각각의숫자목록을가지고싶다면, 첫번째방법을사용할수있습니다. 하지만모든요소를더하는합의함수가필요할경우에는두번째방법을사용해야합니다. 모든목록을하나의입력으로보냅니다. 다음에나오는예제는첫번째방식을이용하여하나의입력을한번에처리하는정보목록의처리과정을보여줍니다. 이경우에는 Run스크립트함수가 10회불리는데,( 각각의수에한번씩 ) 중요한것은 수 입력매개변수가 Double" 과같고 List(of Double)" 와반대되는것으로전달되는것을, 다음예제에서볼수있습니다. 다음예제에서숫자목록을입력하고, 입력매개변수에오른쪽클릭하여 List" 에체크합니 다. Run 스크립트함수는한번만불러집니다. For plugin version

124 14.12 Grasshopper에서의다차원정보처리트리 ( 혹은다차원정보 ) 는하나의요소에한번에처리할수있거나한번에한가지씩또는한번에모든통로가처리되어질수있습니다. 예를들어세개의 Curve들을 10개로나누고자할때, 우리는 11개의점들을가진세개의가지또는통로구조를갖게됩니다. 이것을입력하게되면다음을갖게됩니다. A: "Flatten" 과 List 가둘다체크되어있다면, 컴포넌트는한번만소환되고, 모든점들의 플랫목록이전달됩니다. B: 만일 List" 에만체크가되어있다면, 컴포넌트는각세번씩소환되고, 하나의곡선의나 누어진점들의목록에전달됩니다. For plugin version

125 C: 아무것도체크되어있지않을땐, 함수는각각의나눠진점들을위해한번씩소환됩니 다.( 이예제에서함수가 33 번소환됩니다.) Flatten" 에만체크되어있을때에도동일합니다. 이것은 VB 컴포넌트안의코드입니다. 기본적으로 "inside" 란단어의입력만으로컴포넌트의 소환을대신할수있습니다. For plugin version

126 14.13 파일 I/O VB.NET안에있는파일을읽어오거나파일에쓸수있는많은방법이있으며, 많은튜토리얼과문서가인터넷과서적으로많이나와있습니다. 일반적으로파일읽기는다음내용을포함합니다.: - 파일을엽니다. 일반적으로포인트로향하는경로가필요합니다. - 문자열을읽습니다. ( 전체의문자열이나각각의선 ) - 몇몇의기호문자를사용하여문자열을표시합니다. - 결과를저장합니다. 텍스트파일에서문장을해석하는간단한예제입니다. 다음에보이는텍스트파일로각각의 선을하나의선으로읽고, 처음값을 X 좌표로, 두번째값을 Y 좌표로, 세번째값을 Z 점으로 읽습니다. 그 3 가지점들을 Curve 컨트롤포인트로사용합니다. VB 컴포넌트는파일의경로를읽을수있는문자열을입력으로출력은 On3dPoint 로합니 다. 스크립트컴포넌트안의코드가여기있습니다. 거기에파일출구와컨텐츠를가지고있는 지알아보는몇가지오류코드가있습니다.: For plugin version

127 For plugin version

128 15 Rhino. SDK 15.1 개관 Rhino.NET SDK는 OpenNurbs 지오메트리와유틸리티함수로접근하게합니다. NET SDK를다운로드할때 Help 파일도같이따라오게되는데, NET SDK를사용하는데도움이됩니다. 이곳으로가면다운받을수있습니다. 이번섹션에서는 SDK가 Rhino 지오메트리와유틸리티함수를처리하는부분에초점을맞춰 Grasshopper의 VB 스크립트컴포넌트를사용해서어떻게지오메트리가형성되고조종되어지는지예를보여줍니다 Nurbs 이해하기 Rhino는 Nurbs 모델러로서 Curve와 Surface를 Non Uniform Rational Basic Spline(Nurbs) 를사용해서정의를내리게됩니다. Nurbs는 Curve와 Surface의정확한수학적표현이며직접적으로편집할수있는기능을갖고있습니다. Nurbs에대하여좀더알수있습니다. 기본적인 Nurbs에대한이해는 SDK 과정과함수를사용하는데에좀더실용적인도움이됩니다. 각 ( 도 ), 컨트롤포인트, 매듭, 값을구하는룰, 4가지방법으로 Curve를정의할수있습니다. - 범위 전부양의수, 1, 2, 3, 4, 5 와같습니다. Rhino 에서도 1~11 도사이의등급을사용합니다. 몇 Curve 들과각의예시들입니다.: For plugin version

129 선과폴리라인은 1 도 Nurbs Curve 원형과타원형은 2 도 Nurbs Curve 유리수이거나불균등한 Curve 자유곡선은일반적으로 3 도 Nurbs Curve 4,5 도또한일반적이며, 나머지는많은가설 - 컨트롤포인트 Nurbs Curve의컨트롤포인트는적어도하나이상의포인트를갖습니다.(Degree + 1) Nurbs Curve의모양을바꾸기위한가장일반적인방법은 Curve의컨트롤포인트를직접움직이는것입니다. 컨트롤포인트와조합되는수가있는데그것을 weight라칭합니다. 몇몇을제외하고는 weight는양수로표현됩니다. 하나의 Curve가같은 weight( 보통1) 를가지고있을때, Curve는무리수라불립니다. 앞으로 Grasshopper에서 weight의변화와컨트롤포인트의상관관계를예제를통해살펴봅니다. - 매듭과매듭 Vector 각각의 Nurbs Curve는매듭 Vector라불리는수의나열을갖습니다. 매듭은조금이해하기까다롭지만, 다행히도 SDK 함수가이해를돕습니다. 매듭 Vector에대한몇가지의유용한정보를살펴봅니다. - 다양한매듭매듭값의회수가중복되었을때, 우리는매듭의다양성이라부릅니다. 어떤매듭값도 Curve의각보다더복제될수는없습니다. 여기에매듭에대해알아두면좋은것들이있습니다. - 다중성매듭 Curve의각과동등하게중복됩니다. 채워진 Curve는양쪽끝에다중성을가지고있으며이것때문에 Curve 끝에컨트롤포인트가 Curve와포인트에동시에생기게됩니다. 만약거기에전체중복매듭이매듭 Vector 중간에있다면, Curve는컨트롤포인트를지나게될것이며, 비틀어질수있습니다. - 단순매듭오직하나의값을갖는매듭입니다. For plugin version

130 - 동일한매듭 Vector는두가지조건을만족합니다.: 1. 매듭의수 = 컨트롤포인트수 + degree 매듭이전체중복매듭과같은시작은단순매듭에의해따라오고, 전체중복매듭으로종결되는데, 값은증가하고같은크기의공간을갖게됩니다. 이것은일반적인채워진 Curve입니다. 주기 Curve는다르게사용되어집니다. 여기컨트롤포인트가활성화된다른 Vector 값을갖는두개의 Curve가있습니다. 범위 = 3 컨트롤포인트수 = 7 매듭 Vector = {0,0,0,1,2,3,5,5,5} 범위 = 3 컨트롤포인트수 = 7 매듭 Vector = {0,0,0,1,1,1,4,4,4} Note: 중간에전체매듭중복성은꼬임을일으키고 Curve는컨트롤포인트로꺾이게됩니다. - 평가기준값을구하는법은수학공실을사용하게되는데수와포인트를지정합니다. 공식은범위, 컨트롤포인트, 그리고매듭을포함합니다. 이공식을사용해서 Curve 매개변수를갖는 SDK 함수를 Curve에상응하는점을산출합니다. 매개변수는 Curve 영역안에있는수입니다. Curve 영역은보통증가하며두가지수로구성되어있습니다.: 최소영역매개변수 (m_t(0)) 는보통 Curve와같이시작하고최대영역매개변수 (m_t(1)) 는 Curve의끝에존재합니다. - Nurbs Surface Nurbs Surface는 Nurbs Curve의그리드와같이두가지방향으로흐른다고생각할수있습니다. Nurbs Surface의모양은컨트롤포인트수와 Surface의두방향의각에의해서결정됩니다. Rhino 도움말에더자세한내용이나와있습니다. For plugin version

131 Nurbs Surface는잘라지거나그렇지않을수있습니다. 잘라진 Surface를사용해 Nurbs Surface 밑에두고특정한모양으로잘라내었다고생각해봅니다. 각 Surface는하나의막힌 Curve를가지고외부의경계로정의되고교차되지않은안쪽 Curve는구멍으로정의됩니다. 외부고리에접한 Surface는밑에있던 Nurbs Surface와같고, 앞에서언급했듯잘라지지않은 Surface로구멍을갖지않습니다. 왼쪽의 Surface 는잘리지않았습니다. 오른쪽의 Surface 는타원형의구멍이잘렸습니다. Surface 의 Nurbs 구조는잘려도변하지않습니다. - 폴리Surface 폴리Surface는하나이상의 Surface들의조합으로이루어집니다. 각각의 Surface는매개변수를가지고있고 u, v 방향은동일하지않습니다. 폴리Surface와잘려진 Surface는경계의표시를사용해표시됩니다. 이것은기본적으로 Surface로, 모서리들과꼭지점들, 지오메트리, 잘려진데이터와각기다른부분의관계들을표현합니다. 예를들어이것은각면과이것을감싸는모서리와잘려진부분, Surface와관계된정상적인방향, 접하는다른면들과의관계등을표현합니다. OnBrep 은 OpenNurbs 에서가장복잡한데이터구조일것이며, 이해하기어려울지모르겠지 만많은툴과 Rhino SDK 의전역함수가 Breps 를만들거나도와줍니다. For plugin version

132 15.3 열린 Nurbs 객체들의체계 도움말파일은등급분류를보여줍니다. 여기에지오메트리구성과조정에관련된나눠진분류들로앞으로스크립트를쓸때매우유용하게쓰입니다. 이것들은매우불완전한상태이며, SDK에대한도움말파일을알아보도록권장합니다. OnObject(all Rhino classes are derived from or inherits OnObject) - OnGeometry(class is derived or inherits OnObject) ο OnPoint OnBrepVertex OnAnnotationTxtDot ο OnPointGrid ο OnPointCloud ο OnCurve(abstaract class) OnLineCurve OnPolylineCurve OnArcCurve OnNurbsCurve OnCurveOnSurface OnCurveProxy OnBrepTrim OnBrepEdge ο OnSuface(abstract classt) OnPlaneSurface OnRevSurface OnSumSurface OnNurbsSurface OnProxySurface OnBrepFace OnOffsetSurface ο OnBrep ο OnMesh ο OnAnnotation - Point and Vectors(not derived from OnGeometry) ο On2dPoint(good for parameter space Point) ο On3dPoint ο On4dPoint(good for representing control Point with x, y, z and w for weight) ο On3dVector - Curves(not derived from OnGeometry) ο OnLine ο OnPolyline ο Oncircle For plugin version

133 ο OnArc ο OnEllipse ο OnBezierCurve - Surface(not derived from OnGeometry) ο OnPlane ο OnSphere ο OnCylinder ο OnCone ο OnBox ο OnBezierCurve - Miscellaneous ο OnBoundingBox(For objects bounding box calculation) ο OnInterval(Used for Curve and Surface domains) ο OnXform(for transforming geometry object: move, rotate, scale, etc.) ο OnMassProperties(to calculate volume, area, centroid, etc) 15.4 계층구조 전형적인계층 ( 사용자가한정한데이터구조 ) 은네개의주요부분이있습니다. Construction: 계층이생성되는경우에사용됩니다. Public member variables: 열린 Nurbs 변수는 m_ 으로시작되어야빠르게분리합니다. Public member function: 이것은계층멤버변수를생성하고, 업데이트하며매개변수나확실한상관관계의이행을위한모든계층함수에포함됩니다. Private members: 내부에서사용하기위해필요한계층효용함수와변수입니다. 한번계층군에만족시키지못하면, 자동으로완성된현상을모든계층군멤버의함수와멤버변수를볼수있습니다. 어떠한함수나변수를만족하지못할경우에는그함수의기호들이보여집니다. 함수의매개변수들을채워넣기시작하면, 자동완성기능은사용할수있는매개변수와그것의타입을보여줍니다. 이것은각각의계층군에서이용가능한함수를탐색할수있는가장좋은방법입니다. 여기 ON3D점" 라는계층군의예가있습니다. For plugin version

134 이미존재하는계층군에서새로운계층군으로데이터를복사한다는것은계층구조에따라다르긴하지만, 한가지혹은여러가지방법에의해서행해질수있습니다. 예를들면, 여기새로운 ON3D점" 라는계층군을만들고이미존재하는 점 의내용을새로만든계층군에복사합니다. 아래의내용이어떻게되어지는가를보여줍니다. Use the constructor when you instance of the Point class Dim new_pt as New On3dPoint( input_pt ) Use the "= operator" if the class provided one Dim new_pt as New On3dPoint new_pt =( input_pt ) You can use the "New" function if available Dim new_pt as New On3dPoint new_pt. New( input_pt ) There is also a "Set" function sometimes Dim new_pt as New On3dPoint new_pt. Set( input_pt ) Copy member variables one by one. A bit exhaustive method Dim new_pt as New On3dPoint new_pt. x = input_pt. x new_pt. y = input_pt. y new_pt. z = input_pt. z For plugin version

135 Open Nurbs geometry classes provide "Duplicate" function that is very efficient to use Dim new_crv as New OnNurbsCurve new_crv = input_crv.duplicatecurve() 15.5 상수와비상수의경우 Rhino.NET SDK는두가지세트의계층구조를제공합니다. 첫번째는 상수 인데이것은 I" 라는이름으로시작하는계층구조입니다. 예를들면 ION3D점" 입니다. 이에대응하는 비상수 계층군은대부분 "I" 로시작되는것없이같은이름으로쓰이는것들입니다. 예를들면 ON3D점" 입니다. 상수계층군을복사한다거나, 그것들의멤버상수들혹은몇몇함수들을볼수는있지만, 그것들의변수를바꿀수는없습니다 점과 Vector 들 점과 Vector 들을저장하고조작하는데쓰일수있는많은계층군이있습니다. 두개의정 확한점들을예로들어봅니다. 여기세가지종류의점들이있습니다. Class 이름 Member variables Notes 공간상의매개변수의점을위해주로사용합니다. On2dPoint x as Double 정확한두개의숫자점을위해계층이름을 d" 로합니다. y as Double 다른계층의점들은정확한단수를사용하기위해 f" 라고명 명합니다. On3dPoint x as Double 3차원점을나타내기위해대부분일반적으로사용됩니다. y as Double On4dPoint x as Double y as Double z as Double w as Double 세개의정보를갖고있는점들을잡기위해사용합니다. 점과 Vector들의작용은아래의내용을포함합니다.: - Vector Addition: Dim add_v As New On3dVector = v0 + v1 - Vector Subtraction: Dim subtract_vector As New On3dVector = v0 - v1 - Vector between two Point: Dim dir_vector As New On3dVector = p1 - p0 - Vector dot product(if result is positive number then Vectors are in the same direction): Dim dot_product As Double = v0 * v1 - Vector cross product(result is a Vector normal to the 2 입력 Vector): Dim normal_v As New On3dVector = OnUtil.ON_CrossProduct(v0, v1) - Scale a Vector: Dim scaled_v As New On3dVector = factor * v0 For plugin version

136 - Move a Pint by a Vector: Dim moved_point As New On3dPoint = org_point + dir_vector - Distance between 2Point: Dim distance As Double = pt0.distanceto(pt1) - Get unit Vector (set Vector length to 1): v0. Unitize() - Get Vector length: Dim length As Double = v0.length() 아래의예들은두 Vector 간의각도를계산하는방법을보여줍니다 OnNurbsCurve 다음을설정하여 NurbsCurve를생성합니다. - 치수 : 보통 3 으로설정되어있습니다. - 순서 : Curve의차수 (1차, 2차, 3차등등 )+1 - 컨트롤포인트 - 매듭 Vector( 숫자들의배열 ) - Curve 유형 (clamped 혹은 periodic) 간략하게볼수있듯, 기본적으로치수의결정과컨트롤포인트들의리스트를갖고있는매듭 Vector를만드는데도움이되는함수들이있습니다. For plugin version

137 부드럽게닫힌곡선을만들기위해서 PERIODIC Curve 를만들어야합니다. 입력된같은컨트 롤포인트와 Curve 의차수를사용하기위해서아래의보기가어떻게 PERIODIC Curve 를만 드는지보여줍니다. - 고정 ( 강제 ) NurbsCurve 와주기적 NurbsCurve 고정된곡선은 Curve 가끝나는점과컨트롤포인트가끝나는점이같은, 대부분이열린 Curve 입니다. PERIODIC Curve 는부드러운닫힌 Curve 입니다. 컨트롤포인트들을비교해보 For plugin version

138 는것이 CLAMPED Curve 와 PERIODIC Curve 의차이를이해할수있는가장좋은방법입니 다. 아래의구성요소들은 CLAMPED Nurbs Curve 와결과물을만들어냅니다. 아래의컴포넌트들은 CLAMPED Nurbs Curve 와결과물을만들어냅니다. CLAMPED Curve는단지 4개의컨트롤포인트만을 (4+ 차수 ) 사용하는반면에 PERIODIC Curve는 4개의입력점에서 7개의컨트롤포인트로바꿨다는것을기억합니다. CLAMPED Curve는완전히다양한매듭들로시작과끝을사용한반면에 PERIODIC Curve의매듭 Vector들은간단한매듭만을사용하였습니다. 아래는 2차원 Curve들로된같은예입니다. 컨트롤포인트와 PERIODIC 곡선의매듭개수는 차수 가변함에따라변하게됩니다. For plugin version

139 이것이바로앞의예에서보신바와같은 CV Point 와 매듭 을통해서본조합입니다. - 무게일정한 Nurbs 곡선의컨트롤포인트의무게는 1로지정되어있습니다. 하지만이숫자들은논리적인 Nurbs Curve에서다양할수있습니다. 아래의예는 Grasshopper에서컨트롤포인트의무게를어떻게수정하는지를보여줍니다. For plugin version

140 - Nurbs Curve 나누기아래의순서를통해서하나의 Curve를몇개의부분으로나눌수있습니다. - 간격을구분하는컴포넌트인 Curve의도메인을찾습니다. - 하나의 Curve를같은부분으로나누는컴포넌트의리스트를만듭니다. - 3D Curve에서그점들을찾습니다. 아래의예에서는 Curve 나누는방법을보여줍니다. RhUtil이라는이름의공간아래 Curve의몇개세그먼트나호의길이로곡선을나누는글로벌기능이있습니다. For plugin version

141 15.8 OnCurve 에서파생된 Curve 계층 모든 Curve를통하여 Nurbs Curve를나타낼수있습니다. 이는때때로기하학 Curve의다른유형에사용됩니다. 수학적인표현이라는하나의이유는 Nurbs를이해하기쉽게하며, 대체적으로좀더가벼워집니다. 상대적으로하나의 Nurbs를필요로하는경우, OnCurve에서유래되지않는 Nurbs 형태를만들기쉽습니다. 사용자는기본적으로일치하는 Class로전환되길원합니다. 아래테이블을따라상응함을확인합니다. For plugin version

142 Curve 유형s OnLine OnPolyline OnCircle OnArc OnEllipse OnBezierCurve OnCurve Derived 유형s OnLineCurve OnPolylineCurve OnArcCurve or OnNurbsCurve (use GetNurbsForm() member function) OnArcCurve or OnNurbsCurve (use GetNurbsForm() member function) OnNurbsCurve (use GetNurbsForm() member function) OnNurbsCurve (use GetNurbsForm() member function) 아래에서는 ONELLIPSE 와 OnPolyline 의계층군을이용하는예를보여줍니다 OnNurbsSurface OnNurbsCurve 계층구조와유사하게 OnNurbsSurface를만들기위해서아래의내용들을알고있어야합니다. - 치수, 보통은 3 으로설정되어있습니다. For plugin version

143 - u 방향과 v 방향의순서 : Curve의차수 (1차, 2차, 3차등등 )+1 - 컨트롤포인트 ( 점들의배열 ) - u와 v 방향의매듭 Vector - Surface의종류 (Clamped Surface 또는 PERIODIC Surface) 아래의예는컨트롤포인트의그리드에서 Nurbs Surface를만드는것을보여줍니다. For plugin version

144 다른일반적인예는 Surface 도메인을분할하는것입니다. 아래의예는 Surface 도메인을양방향에서 ( 포인트의수는당연히 1보다커야만합니다.) 같은숫자의점들로분할하는것을보여줍니다. - Surface 도메인을통일합니다.( 즉, 도메인의간격을 0에서 1로합니다.) - 점들의수를이용해서각단계의값들을계산합니다. - u 방향과 v 방향의구성요소들을사용한 Surface 포인트들을계산하기위해서정리된루프를사용합니다. For plugin version

145 OnSurface 계층군은 Surface 와연계되고조작하기에굉장히유용한많은함수들을가지고 있습니다. 다음의예는 Curve 를 Surface 로만드는방법을보여줍니다. Grasshopper 스크립팅컴포넌트에는 2가지의결과물이있습니다. 첫번째 Surface는도메인과연계된 Parameter space Curve입니다. (x, y 좌표계에서 3D Curve의평평한부분 ) 두번째는 3D 공간에서의곡선입니다. 2D Parameter space Curve를 Surface에 밀어냄 으로 3D 곡선을얻을수있습니다. For plugin version

146 당겨진 Curve의시작과끝점의 Normal Vector를앞의예를통해서계산할것입니다. 여기 2가지방법이있습니다. - 2D 포인트로시작되고끝나는 당겨진 2D Curve 를사용하고, 또이것은 Parameter space의 Surface 상에서시작점과끝점이될것입니다. - 혹은점들이끝나는 밀어내어진 3D Curve 를이용합니다. 그리고 Surface에가장가까운점들을찾아서, 그결과로만들어진 Parameter를 Surface Normal을찾기위해사용합니다. For plugin version

147 이것은두함수를사용한끝점에서의 Parameter 값의결과물을보여주는구성도입니다. 유 념할것은두가지의방법이예상대로같은 Parameter 들을만들어냅니다. For plugin version

148 15.10 OnSurface 로부터파생되지않은 Surface 계층군 OpenNurbs는 OnSurface로부터파생되지않은 Surface 계층군을제공합니다. 그것들은확실한수학적인 Surface 정의들이고, 이것들은 ONSurface로변환될수있습니다. 여기에 Surface 계층군의리스트와그것들의상호적인 ONSurface로파생된계층군이있습니다. 기본 Surface 유형 OnPlane OnShpere OnCylinder OnCone OnBezierSurface OnSurface 유형분류 OnPlaneSurface or OnNurbsSurface (use OnPlane.GetNurbsForm()function) OnPlaneSurface or OnNurbsSurface (use OnShpere.GetNurbsForm()function) OnPlaneSurface or OnNurbsSurface (use OnCylinder.GetNurbsForm()function) OnPlaneSurface or OnNurbsSurface (use OnCone.GetNurbsForm()function) OnPlaneSurface or OnNurbsSurface (use GetNurbsForm()member function) 아래의예는 OnPlane 과 OnCone 계층군을이용한것입니다. For plugin version

149 15.11 OnBrep 영역표시 (B-rep) 는영역 Surface에대해서명백하게 Object들을나타내기우해사용됩니다. 여러분들은 OnBrep을세개의명확한부분으로나누어생각할수있습니다. Geometry: Surface와 Nurbs Curve의 3D Geometry. 또한 Parametric space의 2D Curve 혹은다듬어진 Curve들입니다. 3차위상기하학 : 면, 모서리, 점. 각각의면들은하나의 Nurbs Surface를말합니다. 또한면은그에속한모든루프정보에대해알수있습니다. 변은 3D Curve를말합니다. 각각의모서리는변으로도쓰이며, 두점을된가장자리에대한 List를갖고있습니다. 점들은공간에서의 3D 점들을말합니다. 또한각각의점들은두점을잇는변에대한 List를갖고있습니다. 2차위상기하학 : 2D Parametric 공간은면과변을말합니다. Parametric 공간에서는 2D trim Curve들은어떠한면의내부고리인지, 혹은외부고리인지에따라시계방향과반시계방향으로갈수있습니다. 각각의유효한면들은반드시하나의외부고리를가져야합니다. ( 하지만, 이는많은수의요구되어지는만큼의내부고리를가질수도있습니다.) 각각의다듬어진가장자리는하나의변, 2개의끝점, 하나의 Loop 그리고 2D Curve를말합니다. 다음의다이어그램은이세부분을보여주며, 또이것들이각각어떻게관계가되는지를보여줍니다. 가장상단부분은근본적인 3D Nurbs Surface와구멍과마주하여단일면의영역표시 Curve의개체를보여줍니다. 중간은영역표시의면, 변의외부, 변의내부 ( 구멍이있는부분 ) 와점들을포함하는 3D 위상기하학부분입니다. 그리고다듬어진부분의 Loop 로된 Parameter 공간이있습니다. -OnBrep member variables 영역표시 (B-REP) 계층군의멤버변수들은모든 3D 와 2D Geometry 와 Topology 정보를포 For plugin version

150 함합니다. 영역표시계층군을한번만들고나면, 모든멤버의함수관계와변수들을볼수 가있습니다. 다음은자동완성된멤버의함수관계를보여줍니다. 아래의표는데이터의종류와그에대한설명의리스트를보여줍니다. Topology members: describe relationships among different brep parts OnBrepVertexArray m_v Array of brep vertices (OnBrepVertex) OnBrepEdgeArray m_e Array of brep deges (OnBrepEdge) OnBrepFaceArray m_t Array of brep trims (OnBrepTrim) OnBrepLoopArray m_f Array of brep faces (OnBrepFace) OnBrepLoopArray m_l Array of loop (OnBrepLoop) Geometry member: geometry data 3d Curve and Surface and 2d trims OnCurveArray m_c2 Array of time Curve (2D Curve) OnCurveArray m_c3 Array of edge Curve (3D Curve) OnSurfaceArray m_s Array of Surface 각각의 OnBrep( 영역표시 ) 멤버함수관계는기본적으로다른계층군의배열이라는것을유념해야합니다. 예를들면 m_f" 는 OnBrepFace 를말합니다. 또한, OnBrepFace 는 OnSurFaceProxy에서파생되어나온계층군이며, 이는스스로의변수와멤버함수를갖습니다. 아래에는 OnBrepFace, OnBrepEdge, OnBrepVertex, OnBrepTrim, OnBrepLoop 계층군의멤버변수들입니다. For plugin version

151 아래의다이어그램은 OnBrep 멤버변수들과서로가어떻게관계되는지를보여줍니다. 이러한 Brep" 의어떠한특정한부분의정보를이용할수있습니다. 예를들면, 각각의면은그것들의루프리스트가갖고있고, 그다듬어진부분으로부터 2개의끝점들로연결된변의정보를얻을수있습니다. 여기또다른자세한다이어그램은어떻게 Brep" 부분들이함께연결되는지또한부분으 로부터다른부분을어떻게얻을수있는지를보여줍니다. For plugin version

152 몇가지예를통해서 OnBrep" 을어떻게만들어지는지를볼수있습니다. 서로다른부분들 을살펴보고 Brep" 정보를추출해봅니다. 또한우리는글로벌함수뿐만아니라, 계층구조 와함께오는몇몇의함수관계들이어떻게사용되는지를볼수있습니다. - OnBrep 생성하기여기새로운 OnBrep" 계층구조를만드는몇가지방법들이있습니다. - 기존의 Brep을복사합니다. - 기존의 Brep에서면을복사하거나혹은추출합니다. - 입력매개변수로 OnSurface를이용하는 CREATE함수 를사용합니다. ο from SumSurface ο from RevSurface ο from PlanarSurface ο from OnSurface - 글로벌유틸리티함수를사용합니다. ο On_BrepBox나 On_BrepCone등의 OnUtil을사용합니다. ο RhinoCreatEdgeeurface나 RhinoSweep1 등등의 RhUtil을사용합니다. 아래의예는모서리의점들을사용하여 Brep Box를만드는방법입니다. For plugin version

153 - 데이터진행하기 다음의예제는 Brep 박스의여러가지점들을추출하는방법입니다. 아래는 Brep Box( 면, 모서리, 절단, 꼭지점 ) 에서어떻게몇개의 Geometry 와 Topology 부 분들을얻어내는지보여줍니다. - OnBrep 들의변형 For plugin version

154 OnGeometry에서파생된모든계층구조들은 4개의변형함수들을상속합니다. 첫번째세개의함수는 Rotate, Scale, Transform 가장많이쓰이는것들입니다. 하지만여기에는 OnXform 계층구조와함께정의된특유의 4 4 형식의변형행렬도있습니다. 다음섹션에서 OnXform에대해서다뤄보도록합니다. - OnBrep 편집하기대부분의 OnBrep계층멤버함수들은 Brep들을생성하고편집하는전문적사용자도구입니다. 하지만다른섹션에서다루게될, Brep들을 Boolean, Intersect, Split하는많은글로벌함수들도있습니다. McNeel의 Wiki DotNet 샘플에는처음작업부터 OnBrep을만들기까지도움이되는좋은예입니다. 여기 Brep부터 OnBrep 면들을추출하고또그것들을이동하는예가있는데, 이것은 BoundingBox를이용합니다. For plugin version

155 - 다른 OnBrep 멤버함수 OnBrep 계층구조는부모계층구조혹은구체적으로 OnBrep 계층구조에서쓰이는다른많은함수들을가지고있습니다. OnBrep을포함하는모든 Geometry 구조들은 Bounding Box" 라불리는멤버함수를가지고있습니다. OpenNurbs 계층구조중의하나는 OnBoundingBox인데, 이것은유용한 Geometry 영역정보를줍니다. 아래의예는그것의중심과대각선의길이를가진 Brep Bounding BOX를알수있습니다. For plugin version

156 Mass Properties( 매스속성 ) 이라는영역이있는데, OnMassProperties 라는계층구조와이에 대한함수는아래의예에서알수있습니다. IS" 로시작하는몇개의함수들이있는데이것들은대부분 BOOLEAN을재조정합니다. 이것들은 ( IS 로시작하는함수들 ) 지금수행하고있는 Brep 에대해서물어오는데, 예를들면 Brep이닫힌 PolySurface인지아닌지를알고싶다면, "OnBrep.IsSolid()" 라는함수를사용할수있습니다. 이것은또한 Brep 이유용한지, 혹은유용한 Geometry를가지고있는지를확 For plugin version

157 인할수있습니다. 여기 OnBrep 계층구조에서물어보는함수의리스트가있습니다. 아래의예에서는주어진점이 Brep 의내부에있는점인지확인합니다. 아래의예에서는주어진점이 Brep 의내부에있는점인지확인합니다. For plugin version

158 15.12 기하학적구조의변환 OnXform은변환매트릭스를저장하고조작하기위한클래스입니다. 이것은객체의이동, 회전, 확대, 축소및절단을위해매트릭스를정의하는것을포함하지만, 국한되지는않습니다. OnXform의 m_xform은 Double precision numbers(64비트형소수표시 ) 의 4 4 매트릭스입니다. 또한클래스는매트릭스연산을지원하는기능도갖고있습니다. 아래의것은상이한변환을야기하는것과연관된몇몇의멤버함수입니다. 한가지좋은자동완성의특징 ( 모든함수에적용될수있는 ) 은일단하나의함수가선택되 면, 자동완성기능이모든연산기능을보여주는것입니다. 예를들면, 변형은그림에보여 지는것처럼 Tree numbers 또는 Vector 를수용합니다. 여기 OnXform 기능몇가지가더있습니다. 아래의예시는한개의원을입력하여 3 개의원을산출하는것입니다. 처음의원은원래의 원이축적에의해산출된원이고, 둘째원은회전된원이며, 셋째원은변형된원입니다. For plugin version

159 15.13 글로벌유틸리티함수 각클래스내부에있는멤버함수와는별개로 Rhino.NET SDK 는 OnUtil and RhUtil 이름공 간하에서글로벌함수를제공합니다. 이러한기능몇가지를이용한예를들어봅니다. - OnUtil 다음은기하학과연관이있는 OnUtil 하에서이용할수있는기능들의요약입니다. For plugin version

160 - OnUtil 교차점 On_Intersect 유틸리티기능은 11가지의연산기능을가지고있습니다. 아래는교집합구조와 Return 결과값s의리스트입니다. ( IOnLine 에서와같이앞에있는 I 는지속되는상황이패스되었다는것을의미합니다.) Intersected 출력 IOnLine with IOnArc Line parameter (t0 & t1) and Arc 점 (p0 & p1) IOnLine with IOnCircle Line parameter (t0 & t1) and Circle 점 (p0 & p1) IOnSpere with IOnShere OnCircle IOnBoundingBoc with IOnLine Line parameter (OnInterval) IOnLine with IOnCylinder 2Point (On3dPoint) IOnLine with IOnSphere 2Point (On3dPoint) IOnPlane with IOnSpere OnCircle IOnPlane with IOnPlane with IOnPlane On3dPoint IOnPlane with IOnPlane OnLine IOnLine with IOnPlane Parameter t (Double) IOnLine with IOnLine Parameter a & b (on first and second line as Double) 아래는선과평면그리고구형의교집합의결과를보여주는예입니다. For plugin version

161 - Rhino 유틸 (RhUtil) Rhino 유틸리티는기하학과관련된함수를아주많이가지고있습니다. 리스트는사용자요청에따른새버전출시와함께확장됩니다. 아래에보이는것은기하학과관련된함수들입니다. For plugin version

162 - RhUtil Curve 자르기 RhUtil.RhinoDivideCurve 유틸리티기능을사용하여수로나뉘거나길이로나누어지도록 Curve 를자릅니다. 이것은손상된기능의변수 : Rhino Curve 자르기 : 기능이름 Curve: 상수로 Curve 나누기 Num: 분할된조각의수 For plugin version

163 Len: 나누어진 Curve의길이 False: 파기된 Curve의표시 ( 참이나거짓으로값을결정할수있습니다.) True: 끝점을포함 ( 참이나거짓으로값을결정할수있습니다.) crv_t: Curve 상의나누어진포인트의매개변수목록을끕니다. 정수분할로나뉜 Curve의예 : 호의길이로나누어진 Curve 의예 : For plugin version

164 - 점을통과하는 RhUtil Curve( 보간Curve) RhinoInterpCurve: 기능이름 3: Curve 차수 pt_array: Curve를통과한점들 Nothing: 접점의시작 Nothing: 접점의끝 0: 균일매듭점예제를따라 On3d점의목록을입력하여이 3개의점의포인트를통과하는하나의 Nurbs Curve를산출하는예입니다. - RhUtil Surface 의모서리생성하기 예제를따라입력된내용은 4 개의 Curve 리스트이고, 출력되는것은모서리 Surface 입니다. For plugin version

165 For plugin version

View Licenses and Services (customer)

View Licenses and Services (customer) 빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

Visual Basic 반복문

Visual Basic 반복문 학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For

More information

메뉴얼41페이지-2

메뉴얼41페이지-2 데이터 기반 맞춤형 성장관리 솔루션 스마트빌 플러스 은행계좌등록 은행계좌를 조회하여 등록합니다. 신용카드등록 신용카드를 조회하여 등록합니다. 금융정보 자동수집을 위하여 인증서이름, 아이디, 비밀번호를 등록합니다. 통합 자동 수집 금융정보 통합 자동수집을 실행합니다 은행계좌등록 은행계좌를 조회하여 등록합니다. 신용카드등록 신용카드를 조회하여

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

NTD36HD Manual

NTD36HD Manual Upnp 사용 D7 은 UPNP 를지원하여 D7 의네크워크에연결된 UPNP 기기에별다른설정없이연결하여, 유무선으로네트워크상의연결된 UPNP 기기의콘텐츠를재생할수있습니다. TV 화면의 브라우저, UPNP 를선택하면연결가능한 UPNP 기기가표시됩니다. 주의 - UPNP 기능사용시연결된 UPNP 기기의성능에따라서재생되지않는콘텐츠가있을수있습니다. NFS 사용 D7

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

PathEye 공식 블로그 다운로드 받으세요!!   지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye Mobile Ver. 0.71b 2009. 3. 17 By PathEye 공식 블로그 다운로드 받으세요!! http://blog.patheye.com 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye 설치 1/3 최종 배포 버전을 다 운로드 받습니다. 다운로드된 파일은 CAB 파일입니다. CAB 파일에는

More information

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10 (https://www.kisarbl.or.kr) < 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10 Ⅰ. 개요 실시간스팸차단리스트 (RBL) 는메일서버를운영하는누구나손쉽게효과적으로스팸수신을차단하는데이용할수있도록한국인터넷진흥원 (KISA)

More information

Microsoft Word - PLC제어응용-2차시.doc

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

<4F E20C7C1B7CEB1D7B7A5C0BB20C0CCBFEBC7D120B5A5C0CCC5CD20BAD0BCAE20B9D720B1D7B7A1C7C120B1D7B8AEB1E F416E616C F616E645F47726

<4F E20C7C1B7CEB1D7B7A5C0BB20C0CCBFEBC7D120B5A5C0CCC5CD20BAD0BCAE20B9D720B1D7B7A1C7C120B1D7B8AEB1E F416E616C F616E645F47726 Origin 프로그램을이용한데이터분석및그래프그리기 "2-4 단일코일에의해형성되는자기장의특성측정 " 실험을예로하여 Origin 프로그램을이용한데이터분석및그래프그리기에대해설명드리겠습니다. 먼저 www.originlab.com 사이트를방문하여회원가입후 Origin 프로그램데모버전을다운로드받아서설치합니다. 설치에필요한액세스코드는회원가입시입력한 e-mail로발송됩니다.

More information

<B4EBC7D0BCF6C7D02DBBEFB0A2C7D4BCF62E687770>

<B4EBC7D0BCF6C7D02DBBEFB0A2C7D4BCF62E687770> 삼각함수. 삼각함수의덧셈정리 삼각함수의덧셈정리 삼각함수 sin (α + β ), cos (α + β ), tan (α + β ) 등을 α 또는 β 의삼각함수로나 타낼수있다. 각 α 와각 β 에대하여 α >0, β >0이고 0 α - β < β 를만족한다고가정하 자. 다른경우에도같은방법으로증명할수있다. 각 α 와각 β 에대하여 θ = α - β 라고놓자. 위의그림에서원점에서거리가

More information

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을 IDIS Mobile ios 사용설명서 Powered by 사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다.

More information

Studuino소프트웨어 설치

Studuino소프트웨어 설치 Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

IRISCard Anywhere 5

IRISCard Anywhere 5 이 빠른 사용자 가이드는 IRISCard Anywhere 5 및 IRISCard Corporate 5 스캐너의 설치와 시작을 도와 드립니다. 이 스캐너와 함께 제공되는 소프트웨어는: - Cardiris Pro 5 및 Cardiris Corporate 5 for CRM (Windows 용) - Cardiris Pro 4 (Mac OS 용) Cardiris 의

More information

3. 다음은카르노맵의표이다. 논리식을간략화한것은? < 나 > 4. 다음카르노맵을간략화시킨결과는? < >

3. 다음은카르노맵의표이다. 논리식을간략화한것은? < 나 > 4. 다음카르노맵을간략화시킨결과는? < > . 변수의수 ( 數 ) 가 3 이라면카르노맵에서몇개의칸이요구되는가? 2칸 나 4칸 다 6칸 8칸 < > 2. 다음진리표의카르노맵을작성한것중옳은것은? < 나 > 다 나 입력출력 Y - 2 - 3. 다음은카르노맵의표이다. 논리식을간략화한것은? < 나 > 4. 다음카르노맵을간략화시킨결과는? < > 2 2 2 2 2 2 2-3 - 5. 다음진리표를간략히한결과

More information

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우. 소프트웨어매뉴얼 윈도우드라이버 Rev. 3.03 SLP-TX220 / TX223 SLP-TX420 / TX423 SLP-TX400 / TX403 SLP-DX220 / DX223 SLP-DX420 / DX423 SLP-DL410 / DL413 SLP-T400 / T403 SLP-T400R / T403R SLP-D220 / D223 SLP-D420 / D423

More information

슬라이드 1

슬라이드 1 1 도구 개요 2 도구 설치 방법 3 도구 기능 소개 4 도구 활용 예제 5 FAQ 6 도구 평가 7 용어집 목차 1. 도구 개요 2. 도구 설치 방법 2.1 OpenProj 다운로드 2.2 OpenProj 설치하기 4. 도구 활용 예제 4.1 예제 설명 4.2 일정 관리 4.3 인적 자원 관리 4.4 프로젝트 진행 4.5 프로젝트 변경 관리 3.1 OpenProj

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

윈도우즈프로그래밍(1)

윈도우즈프로그래밍(1) 제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 11 곡선과곡면 01 Spline 곡선 02 Spline 곡면 03 Subdivision 곡면 C n 연속성 C 0 연속성 C 1 연속성 2 C 2 연속성 01 Spline 곡선 1. Cardinal Spline Curve 2. Hermite Spline Curve 3. Bezier Spline Curve 4. Catmull-Rom Spline Curve 5.

More information

tiawPlot ac 사용방법

tiawPlot ac 사용방법 tiawplot ac 매뉴얼 BORISOFT www.borisoft.co.kr park.ji@borisoft.co.kr HP : 00-370-077 Chapter 프로그램설치. 프로그램설치 3 2 Chapter tiawplot ac 사용하기.tiawPlot ac 소개 2.tiawPlot ac 실행하기 3. 도면파일등록및삭제 4. 출력장치설정 5. 출력옵션설정

More information

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사 IDIS Mobile Android 사용설명서 Powered by 사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사양 및 버전에 따라 일부

More information

1 1 장. 함수와극한 1.1 함수를표현하는네가지방법 1.2 수학적모형 : 필수함수의목록 1.3 기존함수로부터새로운함수구하기 1.4 접선문제와속도문제 1.5 함수의극한 1.6 극한법칙을이용한극한계산 1.7 극한의엄밀한정의 1.8 연속

1 1 장. 함수와극한 1.1 함수를표현하는네가지방법 1.2 수학적모형 : 필수함수의목록 1.3 기존함수로부터새로운함수구하기 1.4 접선문제와속도문제 1.5 함수의극한 1.6 극한법칙을이용한극한계산 1.7 극한의엄밀한정의 1.8 연속 1 1 장. 함수와극한 1.1 함수를표현하는네가지방법 1.2 수학적모형 : 필수함수의목록 1.3 기존함수로부터새로운함수구하기 1.4 접선문제와속도문제 1.5 함수의극한 1.6 극한법칙을이용한극한계산 1.7 극한의엄밀한정의 1.8 연속 2 1.1 함수를표현하는네가지방법 함수 f : D E 는집합 D 의각원소 x 에집합 E 에속하는단하나의원소 f(x) 를 대응시키는규칙이다.

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

Microsoft Word - Armjtag_문서1.doc

Microsoft Word - Armjtag_문서1.doc ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

Office 365 사용자 가이드

Office 365 사용자 가이드 [ 여기에입력 ] Office 365 사용자가이드 OFFICE 365 모바일설정 목차 1. 모바일에메일계정추가하기... 2 2. Lync 2013 App 설치하기... 7 3. Office Mobile App 설치하기... 10 4. Office for ipad 설치하기... 16-1 - 모바일기기에 Office 365 를설정해보세요. 모바일기기에 Office

More information

RVC Robot Vaccum Cleaner

RVC Robot Vaccum Cleaner RVC Robot Vacuum 200810048 정재근 200811445 이성현 200811414 김연준 200812423 김준식 Statement of purpose Robot Vacuum (RVC) - An RVC automatically cleans and mops household surface. - It goes straight forward while

More information

Endpoint Protector - Active Directory Deployment Guide

Endpoint Protector - Active Directory Deployment Guide Version 1.0.0.1 Active Directory 배포가이드 I Endpoint Protector Active Directory Deployment Guide 목차 1. 소개...1 2. WMI 필터생성... 2 3. EPP 배포 GPO 생성... 9 4. 각각의 GPO 에해당하는 WMI 연결... 12 5.OU 에 GPO 연결... 14 6. 중요공지사항

More information

실험 5

실험 5 실험. OP Amp 의기초회로 Inverting Amplifier OP amp 를이용한아래와같은 inverting amplifier 회로를고려해본다. ( 그림 ) Inverting amplifier 위의회로에서 OP amp의 입력단자는 + 입력단자와동일한그라운드전압, 즉 0V를유지한다. 또한 OP amp 입력단자로흘러들어가는전류는 0 이므로, 저항에흐르는전류는다음과같다.

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집 Modern Modern www.office.com ( ) 892 5 : 1577-9700 : http://www.microsoft.com/korea Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와

More information

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산 (제 2 장. 복소수 기초)

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산      (제 2 장. 복소수 기초) 제 5 강. 복소수연산및 을이용한복소수연산 ( 제 2 장. 복소수기초 ) 한림대학교전자공학과 한림대학교 제 5 강. 복소수연산및 을이용한복소수연산 1 배울내용 복소수의기본개념복소수의표현오일러 (Euler) 공식복소수의대수연산 1의 N 승근 한림대학교 제 5 강. 복소수연산및 을이용한복소수연산 2 복소수의 4 칙연산 복소수의덧셈과뺄셈에는직각좌표계표현을사용하고,

More information

Windows Server 2012

Windows Server  2012 Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB

More information

1

1 1 2 3 4 5 6 b b t P A S M T U s 7 m P P 8 t P A S M T U s 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Chapter 1 29 1 2 3 4 18 17 16 15 5 6 7 8 9 14 13 12 11 10 1 2 3 4 5 9 10 11 12 13 14 15

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 05 장 CSS3 선택자 1. 선택자개요 2. 기본선택자 3. 속성선택자 4. 후손선택자와자손선택자 5. 반응 / 상태 / 구조선택자 CSS 블록을생성할수있다. 선택자를이해하고적절한선택자를활용할수있다. 1 선택자개요 CSS3 선택자 특정한 HTML 태그를선택할때사용하는기능 선택한태그에원하는스타일이나스크립트적용가능 그림 5-1 CSS 블록 CSS 블록 style

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -

More information

BY-FDP-4-70.hwp

BY-FDP-4-70.hwp RS-232, RS485 FND Display Module BY-FDP-4-70-XX (Rev 1.0) - 1 - 1. 개요. 본 Display Module은 RS-232, RS-485 겸용입니다. Power : DC24V, DC12V( 주문사양). Max Current : 0.6A 숫자크기 : 58mm(FND Size : 70x47mm 4 개) RS-232,

More information

SBR-100S User Manual

SBR-100S User Manual ( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S

More information

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

var answer = confirm( 확인이나취소를누르세요.); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write( 확인을눌렀습니다.); else { document.write( 취소를눌렀습니다.); 자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트

More information

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi 소프트웨어공학 Tutorial #2: StarUML Eun Man Choi emchoi@dgu.ac.kr Contents l StarUML 개요 l StarUML 소개및특징 l 주요기능 l StarUML 화면소개 l StarUML 설치 l StarUML 다운 & 설치하기 l 연습 l 사용사례다이어그램그리기 l 클래스다이어그램그리기 l 순서다이어그램그리기 2

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

Xcrypt 내장형 X211SCI 수신기 KBS World 채널 설정법

Xcrypt 내장형 X211SCI 수신기 KBS World 채널 설정법 [ X211S CI 위성방송수신기 - KBS World 채널 설정법 ] 세기위성 T: 82-2-2231-7989, F: 82-2-2232-6373 http://www.sekisat.com webmaster@sekisat.com 주의사항 구매 전에, 위의 X211S CI 수신기의 재고가 당사에 충분히 있는지, 미리 확인바랍니다. 본 제품은 Xcrypt

More information

슬라이드 1

슬라이드 1 CCS v4 사용자안내서 CCSv4 사용자용예제따라하기안내 0. CCS v4.x 사용자 - 준비사항 예제에사용된 CCS 버전은 V4..3 버전이며, CCS 버전에따라메뉴화면이조금다를수있습니다. 예제실습전준비하기 처음시작하기예제모음집 CD 를 PC 의 CD-ROM 드라이브에삽입합니다. 아래안내에따라, 예제소스와헤더파일들을 PC 에설치합니다. CD 드라이브 \SW\TIDCS\TIDCS_DSP80x.exe

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

캘크 시작하기

캘크 시작하기 저작권 이 문서의 저작권은 본 페이지의 저자 단락에 나열된 기고자들에게 있습니다(Copyright 2005 2008). GNU General Public License 버전 3 이후 버전, 또는 Creative Commons Attribution License 버전 3 이후 버전에 근거하여 배포 및 변경할 수 있습니다. 이 문서에 있는 모든 상표권은 법적 소유자가

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

System Recovery 사용자 매뉴얼

System Recovery 사용자 매뉴얼 Samsung OS Recovery Solution 을이용하여간편하게 MagicInfo 의네트워크를설정하고시스템을백업및복원할수있습니다. 시스템시작시리모컨의 - 버튼이나키보드의 F3 키를연속해서누르면복구모드로진입한후 Samsung OS Recovery Solution 이실행됩니다. Samsung OS Recovery Solution 은키보드와리모컨을사용하여조작할수있습니다.

More information

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows

More information

vRealize Automation용 VMware Remote Console - VMware

vRealize Automation용 VMware Remote Console - VMware vrealize Automation 용 VMware Remote Console VMware Remote Console 9.0 이문서는새버전으로교체되기전까지나열된각제품버전및모든이후버전을지원합니다. 이문서에대한최신버전을확인하려면 http://www.vmware.com/kr/support/pubs 를참조하십시오. KO-002230-00 vrealize Automation

More information

MVVM 패턴의 이해

MVVM 패턴의 이해 Seo Hero 요약 joshua227.tistory. 2014 년 5 월 13 일 이문서는 WPF 어플리케이션개발에필요한 MVVM 패턴에대한내용을담고있다. 1. Model-View-ViewModel 1.1 기본개념 MVVM 모델은 MVC(Model-View-Contorl) 패턴에서출발했다. MVC 패턴은전체 project 를 model, view 로나누어

More information

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가 수업주제 경찰 출동! (버튼, LED, 버저 사용하기) 9 / 12 차시 수업의 주제와 목표 본 수업에서는 이전 차시에 배웠던 블록들의 기능을 복합적으로 활용한다. 스위치 기능을 가진 버튼을 활용하여 LED와 버저를 동시에 작동시키도록 한다. 각 블록들을 함께 사용하는 프로젝트를 통해 각각의 기능을 익히고 보다 다양한 활용 방법을 구상할 수 있다. 교수 학습

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 사용자매뉴얼 JetFlash Vault 100 ( 버전 1.0) 1 목차 1. 시스템요구사항... 3 2. 암호및힌트설정 ( 윈도우 )... 3 3. JetFlash Vault 시작하기 ( 윈도우 )... 7 4. JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 찾아보기... 10 JetFlash

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

C스토어 사용자 매뉴얼

C스토어 사용자 매뉴얼 쪽지 APP 디자인적용가이드 I. 쪽지 APP 소개 2 I. 쪽지 APP 소개 쪽지 APP 을통해쇼핑몰의특정회원또는특정등급의회원그룹에게 알림메시지나마케팅을위한쪽지를발송하실수있습니다. 쪽지 APP의주요기능 1. 전체회원, 특정ID, 특정회원그룹별로쪽지발송가능 2. 발송예약기능 3. 발송한쪽지에대해수신및열람내역조회가능 4. 쇼핑몰페이지에서쪽지함과쪽지알림창제공 3

More information

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다 이장에서사용되는 MATLAB 명령어들은비교적복잡하므로 MATLAB 창에서명령어를직접입력하지않고확장자가 m 인 text 파일을작성하여실행을한다. 즉, test.m 과같은 text 파일을만들어서 MATLAB 프로그램을작성한후실행을한다. 이와같이하면길고복잡한 MATLAB 프로그램을작성하여실행할수있고, 오류가발생하거나수정이필요한경우손쉽게수정하여실행할수있는장점이있으며,

More information

SDL Trados Studio 2014용 ApSIC Xbench Plugin 사용하기

SDL Trados Studio 2014용 ApSIC Xbench Plugin 사용하기 SDL Trados Studio 2014 용 ApSIC Xbench Plugin 사용하기 프린트날짜 : 2016 년 4 월 13 일 Copyright 1999-2015 ApSIC S.L. 모든권리보유 이문서에서설명되는소프트웨어는 ApSIC S.L. 의소유관련정보를포함하고있으며저작권법에따라보호됩니다. 제품개발이계속이어지는관계로이정보는사전예고없이바뀔수있습니다.

More information

Microsoft PowerPoint - 05geometry.ppt

Microsoft PowerPoint - 05geometry.ppt Graphic Applications 3ds MAX 의기초도형들 Geometry 3 rd Week, 2007 3 차원의세계 축 (Axis) X, Y, Z 축 중심점 (Origin) 축들이모이는점 전역축 (World Coordinate Axis) 절대좌표 지역축 (Local Coordinate Axis) 오브젝트마다가지고있는축 Y Z X X 다양한축을축을사용한작업작업가능

More information

슬라이드 1

슬라이드 1 Tadpole for DB 1. 도구개요 2. 설치및실행 4. 활용예제 1. 도구개요 도구명 소개 Tadpole for DB Tools (sites.google.com/site/tadpolefordb/) 웹기반의데이터베이스를관리하는도구 Database 스키마및데이터관리 라이선스 LGPL (Lesser General Public License) 특징 주요기능

More information

Install stm32cubemx and st-link utility

Install stm32cubemx and st-link utility STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7

More information

볼륨 조절 아이콘 표시하기 만일 알림 영역에 볼륨 조절 아이콘이 표시되지 않았다면 아래의 방법을 따라합니다. 1> [시작] - [제어판] - [사운드 및 오디오 장치] 아이콘을 더블 클릭합니다. 2) [사운드 및 오디오 장치 등록 정보] 대화상자에서 [볼륨] 탭을 클릭

볼륨 조절 아이콘 표시하기 만일 알림 영역에 볼륨 조절 아이콘이 표시되지 않았다면 아래의 방법을 따라합니다. 1> [시작] - [제어판] - [사운드 및 오디오 장치] 아이콘을 더블 클릭합니다. 2) [사운드 및 오디오 장치 등록 정보] 대화상자에서 [볼륨] 탭을 클릭 사운드 문제해결 1. 볼륨 조절 관련 문제가 발생했을 때 음악은 재생이 되는데 소리가 들리지 않는 경우가 있습니다. 이때는 먼저 스피커 연결 부위가 잘 연 결되었는지, 볼륨 조정은 올바르게 되었는지 확인해야 합니다. 1) 스피커 확인 및 볼륨 조절하기 1> 컴퓨터 본체 뒷면에 스피커로 연결되는 부분에 올바르게 잭이 꽂혀 있고, 꽉 끼워져 있는지 확인합 니다.

More information

제 2 교시 2019 학년도 3 월고 1 전국연합학력평가문제지수학영역 1 5 지선다형 1. 의값은? [2점] 일차방정식 의해는? [2 점 ] 두수, 의최대공약수는? [2 점 ] 일차함수 의그래프에서

제 2 교시 2019 학년도 3 월고 1 전국연합학력평가문제지수학영역 1 5 지선다형 1. 의값은? [2점] 일차방정식 의해는? [2 점 ] 두수, 의최대공약수는? [2 점 ] 일차함수 의그래프에서 제 2 교시 2019 학년도 3 월고 1 전국연합학력평가문제지 1 5 지선다형 1. 의값은? [2점] 1 2 3 4 5 3. 일차방정식 의해는? [2 점 ] 1 2 3 4 5 2. 두수, 의최대공약수는? [2 점 ] 1 2 3 4 5 4. 일차함수 의그래프에서 절편과 절편의합은? [3 점 ] 1 2 3 4 5 1 12 2 5. 함수 의그래프가두점, 를지날때,

More information

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A 예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = 1 2 3 4 5 6 7 8 9 B = 8 7 6 5 4 3 2 1 0 >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = 0 0 0 0 1 1 1 1 1 >> tf = (A==B) % A 의원소와 B 의원소가똑같은경우를찾을때 tf = 0 0 0 0 0 0 0 0 0 >> tf

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 03 모델변환과시점변환 01 기하변환 02 계층구조 Modeling 03 Camera 시점변환 기하변환 (Geometric Transformation) 1. 이동 (Translation) 2. 회전 (Rotation) 3. 크기조절 (Scale) 4. 전단 (Shear) 5. 복합변환 6. 반사변환 7. 구조변형변환 2 기하변환 (Geometric Transformation)

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63> SAM4S Printer Driver Installer 달리명시하지않은한, 인쇄또는복사된문서는통제하지않는문서임 목 차 1. 1. WINDOWS DRIVER INSTALLER 설치 설치...... 2 2. 프린터추가...... 5 3. 프린터제거...... 19 4. 프린터추가 / 제거선택...... 21 5. 프로그램추가 / 제거...... 21 SHC- 11-01-

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

3D MAX + WEEK 9 Hansung Univ. Interior Design

3D MAX + WEEK 9 Hansung Univ. Interior Design 3D MAX + WEEK 9 Hansung Univ. Interior Design 3D MAX + UNREAL ENGINE 4 4 4 이용하여 애니메이션 만들기 Max에서 준비하기 공간 만들기 Max에서 준비하기 박공지붕 만들기: 5000mm만큼 올리기 Max에서 준비하기 창만들기: 한쪽 벽만 창 제작 Max에서 준비하기 벽체 분리:Detach Max에서 준비하기

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

슬라이드 1

슬라이드 1 1 < 목차 > 1. SYSMAC Gateway 설정 -------------- 3 2. Network Configurator 수동설정 -------------- 23 3. Tag Status Area 설정방법 --------------------- 30 2 1. SYSMAC Gateway 설정 1) 시작 > 프로그램 > OMRON > SYSMAC Gateway

More information

Tcl의 문법

Tcl의 문법 월, 01/28/2008-20:50 admin 은 상당히 단순하고, 커맨드의 인자를 스페이스(공백)로 단락을 짓고 나열하는 정도입니다. command arg1 arg2 arg3... 한행에 여러개의 커맨드를 나열할때는, 세미콜론( ; )으로 구분을 짓습니다. command arg1 arg2 arg3... ; command arg1 arg2 arg3... 한행이

More information

ThinkVantage Fingerprint Software

ThinkVantage Fingerprint Software ThinkVantage 지문 인식 소프트웨어 First Edition (August 2005) Copyright Lenovo 2005. Portions Copyright International Business Machines Corporation 2005. All rights reserved. U.S. GOVERNMENT USERS RESTRICTED RIGHTS:

More information

마지막 변경일 2018년 5월 7일 ** 이항분포와 정규분포의 관계 ** Geogebra와 수학의 시각화 책의 3.2소절 내용임. 가장 최근 파일은 링크를 누르면 받아 보실 수 있습니다.

마지막 변경일 2018년 5월 7일 ** 이항분포와 정규분포의 관계 ** Geogebra와 수학의 시각화 책의 3.2소절 내용임.   가장 최근 파일은 링크를 누르면 받아 보실 수 있습니다. 마지막 변경일 2018년 5월 7일 ** 이항분포와 정규분포의 관계 ** Geogebra와 수학의 시각화 책의 3.2소절 내용임. http://min7014.iptime.org/math/2017063002.htm 가장 최근 파일은 링크를 누르면 받아 보실 수 있습니다. https://goo.gl/edxsm7 http://min7014.iptime.org/math/2018010602.pdf

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기

소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기 소규모 비즈니스를 위한 YouTube 플레이북 YouTube에서 호소력 있는 동영상으로 고객과 소통하기 소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES 2012.02.18 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone 02-2108-8030 Fax 02-2108-8031 www.softbase.co.kr Copyright 2010 SOFTBase Inc. All rights reserved 목차 1 장 : ActiveX

More information

중간고사

중간고사 중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX

More information

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형 AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형 언어 변환 1.4. 기대 효과 4.4. 프로그램 Restructuring 4.5. 소스 모듈 관리 2. SeeMAGMA 적용 전략 2.1. SeeMAGMA

More information

Oracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치

Oracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치 Oracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치 VirtualBox를 사용하기 위해서는 일단 https://www.virtualbox.org/wiki/downloads 사이트에서 윈도우용 버추얼박스 설치화일을 다운로드 해야합니다. Ubuntu를 사용하기 위해서는 Ubuntu 디스크 이미지 화일을 다운로드

More information

CL5 CL3 CL1 QL5 QL1 V4.5 Supplementary Manual

CL5 CL3 CL1 QL5 QL1 V4.5 Supplementary Manual CL/QL 시리즈 이보충설명서에서는주로 CL5/CL3/CL1 및 QL5/QL1 펌웨어 V4.5 에서추가또는변경된기능에관해설명합니다. CL5/CL3/CL1 및 QL5/QL1 V4 사용설명서및참조설명서와함께사용하십시오. CL/QL Editor 이보충설명서에서는주로 CL/QL Editor V4.5 에서추가또는변경된기능에관해설명합니다. 참고 이보충설명서에수록된설명은

More information

<4D F736F F F696E74202D C20C4C4C7BBC5CD20C8B0BFEB20B9D720C6C4C0CF20B0FCB8AE20BBF9C7C >

<4D F736F F F696E74202D C20C4C4C7BBC5CD20C8B0BFEB20B9D720C6C4C0CF20B0FCB8AE20BBF9C7C > Word Processing 1. 실라버스 2. 지침사항 3. 샘플문제풀이 Ⅱ. 컴퓨터활용및파일관리 - 실라버스 모듈 2 컴퓨터사용및파일관리에대한요약으로서, 이모듈에서이론과실제에대한기준을제공한다. 모듈 2 컴퓨터사용및파일관리는수험생에게개인용컴퓨터를실행하고관리하는능력을입증할것을요구한다. 수험생은다음을할수있어야한다. 메인컴퓨터설정값의조정및내장도움말기능의사용을포함하여운영체제의주요특성을사용한다.

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

슬라이드 1

슬라이드 1 모바일소프트웨어프로젝트 지도 API 1 조 20070216 김성수 20070383 김혜준 20070965 이윤상 20071335 최진 1 매시업? 공개 API? 2 매시업 웹으로제공하고있는정보와서비스를융합하여새로운소프트웨어나서비스, 데이터베이스등을만드는것 < 최초의매시업 > 3 공개 API 누구나사용할수있도록공개된 API 지도, 검색등다양한서비스들에서제공 대표적인예

More information

MF Driver Installation Guide

MF Driver Installation Guide Korean MF 드라이버 설치설명서 사용자 소프트웨어 CD-ROM... 드라이버 및 소프트웨어 정보...1 지원되는 운영 체제...1 MF 드라이버 및 MF Toolbox 설치... [쉬운 설치]를 사용한 설치...2 [사용자 정의 설치]를 사용한 설치...10 USB 케이블 연결(USB를 이용해 연결하는 경우만)...20 설치 결과 확인...21 온라인

More information