이 프로젝트는 「신호및시스템」 과목에서 팀 프로젝트로 진행했던 작품이다.

팀 프로젝트 과제 자체는 레고 마인드스톰 EV3, 드론, 라즈베리파이 등을 이용해 자유롭게 제작하는 것이었고, 우리 프로젝트의 주제는 "애완 로봇 만들기"로, 목표는 "특정 신호를 찾아가는 로봇을 제작"으로 설정했다.


주제의 구상 과정은 이렇다.

어쩌다가 팀에서 강아지 이야기가 나오고, 그걸 중심으로 강아지에 필요한 기능들을 토론해서, 주인 명령 듣기, 주인 따라가기, 쓰다듬기 등 행동을 하면 반응하기와 같은 내용이 도출됐다.

이러한 주제 중 가장 프로젝트로서 가치있을 내용인 '주인을 따라가는 행동'을 주된 목적으로 삼았고 쓰다듬기, 꼬리 만지기에 대한 간단한 동작을 추가했으며 주인 명령 듣기는 구현을 하려 했으나 미처 완성하지 못했다.

주인을 따라가는 법에 대해, 동물은 귀가 2개라는 점에서 착안해서 2개의 마이크로 방향을 찾기로 생각했다. 그러나 생각해보니, 2개만으로는 앞/뒤를 특정할 수 없어서 일단 한 방향으로 진행해보고 멀어진다 싶으면 반대로 진행해야 함을 알 수 있었고, 따라서 마이크를 하나 더 늘려 3개를 사용하기로 했다. (삼각측량에서 평면 상의 한 점을 특정하려면 3개의 점으로부터의 정보가 필요하다는 상식이 구상에 도움이 됐다.)


주인을 찾아가는 방법은 다음과 같다.

  • 라즈베리 파이에 마이크 3개를 장착한다.
  • 라즈베리 파이에 탑재해 실행할 프로그램에서 마이크 간의 소리 크기 차이로 방향을 추정하고, 그 추정된 방향을 레고로봇에 알려줘 그 방향으로 조금씩 움직인다.
  • 방향 추정과 이동을 동시에, 반복적으로 수행해서 결과적으로 소리원(주인)에게 다가간다.


자세한 기술적, 프로그램적 내용은 다음 포스트에서 이어서 올릴 예정이다.

'완료된 프로젝트 > Homing Robot' 카테고리의 다른 글

완성품 & 작동 영상  (0) 2017.01.07
프로그램 제작기  (2) 2016.12.10
로봇 따라가기의 기본 원리  (3) 2016.12.09
프로젝트 개요  (5) 2016.12.08
블로그 이미지

예비컴공돌이

각종 프로젝트 진행중! 생각날때마다 블로그 업데이트합니다.

구상 자체는 올해 초(2016년 2월)부터 했는데, 개강, LED 큐브 프로젝트 등 다른 일들에 밀려 아직 구상과 부품 구매는 다 했지만 아직 제작을 못한 프로젝트이다.


계기는 겨울이 끝나가고 집에 있던 오래된 가습기를 버리려고 하던 때, 가습기를 뜯어봐서 어떻게 돼있나를 알아보고자 한 것이었다.

가습기를 보고 레이저가 떠올랐고, 레이저 하면 콘서트고 콘서트 하면 음악이니 음악에 반응하는 레이저 이퀄라이저를 만들자는 생각을 했다.


가습기 해부!


메인 회로 뒷면


초음파 진동자 회로



2004년도 제품이라 그런지 회로가 큼직큼직하며 SMD 부품이 없어 분석하기는 쉬웠다.


전원부의 경우,

우선 220V 전압이 회로 우측 상단으로 들어와 바로 변압기로 들어간다.


변압기는 출력이 2쌍인데, 그 중 하나는 약 16.7V의 교류 전원으로 들어오고, 이를 다이오드 브릿지를 거쳐서 한 방향으로의 펄스 파형으로 만든 뒤 캐패시터를 이용해 적당히 평활시킨다.

이렇게 평활된 전류를 7812 리니어 레귤레이터를 이용해 12V로 만들어 12V가 필요한 릴레이와, 7805 리니어 레귤레이터에 전압을 공급한다.

7805로 또다시 5V로 내려온 전압은 전면 디스플레이나 PIC 칩 등 회로 전반적으로 쓰인다.


변압기를 거친 또다른 출력은 약 교류 50V였으며, 메인 회로에 같이 들어갔다가 릴레이를 거쳐 바로 진동자 회로로 나간다.

릴레이를 통하는 구조이므로 메인 회로에서 켜고 끌 수 있게 되어있다.


사진에 보면 모터도 하나 있는데, 블로워팬의 형태이고 220V로 동작한다. 회로에서 보면 이 팬은 램프와 함께, 한쪽 극은 연결되어있고 나머지 한 극은 하나의 릴레이로 연결되어있는 것을 볼 수 있다.

히터도 220V로 동작하며, 물탱크로부터 진동판으로 가는 배수관에 감겨있다. 히터도 한 극이 릴레이에 연결돼있다.



전원부 분석을 끝내고 부품을 떼내어 만능기판에다가 재현을 해보았다.


우선 몰렉스 커넥터들이 두꺼워서 구멍을 파내느라 힘들었고,

저때 차마 다른 전선을 대서 납땜한다는 생각을 못해서 납칠이..



앙상해진 기판ㅠㅠ

'진행중인 프로젝트 > Laser EQ' 카테고리의 다른 글

프로젝트 아이디어 구상  (1) 2016.11.20
블로그 이미지

예비컴공돌이

각종 프로젝트 진행중! 생각날때마다 블로그 업데이트합니다.

2013년도에 제작했던 학교 앱이다.

배재고등학교 컴퓨터 동아리 SPACE로 활동할 때 제작해서, 그 해 진행됐던 교내 동아리 발표회 대상을 받았던 것이기도 하다.


내가 처음으로 공식적으로 배포했던 앱이다. 초기 버전에서는 서버 없이 자체적으로 데이터를 받아와 보여줬고, 이후 버전을 올리면서 앱 서버를 두게 되었다.


서버는 자바 서블릿으로 작성되어, HTTP를 통해 JSON 데이터를 주고받게 했다. 그리고 시간표, 식단표 등 데이터를 저장할 때에는 MySQL 데이터베이스를 사용했다.


식단표

식단표 데이터는 NEIS 홈페이지를 파싱해서 정보를 가져왔다.

처음에는 앱의 자체 서버가 없어서 앱 내에서 홈페이지 정보를 파싱했는데, 그 시간이 꽤 오래 걸려서 불편했고 트래픽을 너무 많이 발생시키진 않을까 하는 우려도 있었다.


그래서 나중에 자체 서버를 만들고 난 뒤에는, 서버에서 주기적으로 데이터를 파싱해서 가지고 있도록 했다.

앱이 서버에 접속해서 특정 달의 식단표 타임스탬프를 서버에게 전송하면, 만약 변동이 있으면 새 식단표와 타임스탬프를 보내주고 아니라면 OK를 보내주는 식이다.


시간표

시간표는 교내 선생님별, 학급별 시간표를 관리하던 서비스에서 파싱해왔다.

다만 처음에는 로딩 시간을 이유로 앱에서 파싱하면 저장해뒀는데, 파싱한 때가 마침 변동된 시간표이거나, 파싱 이후 변동된 임시 시간표가 있을 경우 시간표 정보가 정확하지 않았다.

따라서 식단표와 마찬가지로 자체 서버를 운용한 이후는 서버측에서 모든 파싱을 담당했다. 공지사항 개발 이후에 변동된 시간표 GCM 알림 기능도 구상했었지만...


지하철 시간표

1.6버전으로 올리면서 추가했던 기능이다. 공공데이터포털(https://www.data.go.kr) 지하철 시간표 API를 사용했다. 처음으로 외부 서버에서 제공하는 API를 사용해볼 수 있던 기회였다.


공지사항

이후 버전 2.0부터는 공지사항 기능도 추가했는데, 그때부터는 사용자 권한 기능도 추가해서 '선생님' 권한이 있는 사용자면 글쓰기 버튼이 나타나고 공지를 올릴 수 있도록 했다. 공지에는 수신 대상 설정도 있고 수신 대상에 자신이 포함되면 GCM으로 알림이 오도록 야심차게 설계하고 제작했던 기능이다.

... 다만 문제는 그 때는 2014년 초 내가 막 고3이 되었을 때이고 그 이후로 홍보와 앱 관리를 잘 하지 못했다는 점. 이 때 제대로 활성화를 시키지 못했던게 아쉽다.



추억의 구글 플레이 스토어 다운로드 화면, 이때는 초기에 서버가 없을 적 버전이었다.



식단표, 왼쪽 버튼을 누르면 새로 불러오며, 오른쪽 버튼을 누르면 날짜를 변경할 수 있다.

NEIS에 식단표 데이터가 있기만 하면 몇달~몇년 전 식단표도 확인할 수 있었다.



일간 시간표, 위의 왼쪽 버튼을 누르면 줌아웃되면서 일주일 전체 시간표가 나타난다.

이 앱을 만들던 당시는 안드로이드 2.1 버전을 쓰는 사람이 아직 많아서 뷰 애니메이션을 넣기가 까다로웠던 기억이 있다.


버전 1.6부터 추가된 지하철 시간표 기능, 옆으로 넘기면 하루 시간표도 확인할 수 있다.


이후 버전에 추가된 공지사항 기능, 공지사항을 올리면 GCM으로 알림이 왔다.



학교에서 운영하던 방과후 학교 수강, 공지 사이트도 접속할 수 있었다. 소소하게 보안코드 자동 입력 기능(...)은 덤

블로그 이미지

예비컴공돌이

각종 프로젝트 진행중! 생각날때마다 블로그 업데이트합니다.

Node.js용으로 하루 정도 시간 내서 만들어봤던 프로그램이다.


전체 소스 코드는 https://github.com/WKBae/Node-Naver-Webtoon-Downloader에 있고, 클론해서 npm install을 실행해서 의존 파일들을 받아야 실행된다.


사용법은 "node download.js <네이버 웹툰 ID>"로, 예를 들어 조석 작가님의 마음의소리는 웹툰 주소가 "http://comic.naver.com/webtoon/list.nhn?titleId=20853&weekday=tue"이고, 다운받기 위해서는 "node download.js 20853"라고 하면 된다. (회차 범위 지정은 아직 안넣었으니 저 많은 회차를 전부 다운로드하지는 말기를.. 약 300회 가량 업로드된 웹툰은 1GB정도의 공간을 차지하니 남은 공간도 잘 봐야 한다.)


그리고 웹툰을 다운로드 받고자 한다면 무선랜보다는 유선랜에 연결된 상태에서 하는 것이 좋다. 회차 당 여러 이미지들, 여러 회차(최대 10회까지)를 동시에 받으니 인터넷이 좋지 않다면 네트워크 오류를 뿜으며 종료된다. 다운로드 받는 동안은 인터넷이 매우 느려지니 공용 네트워크에서도 사용하지 말자.


이 프로그램은 기능 테스트이며, 개인적인 사용에 한합니다. 다운로드 받은 웹툰의 배포, 웹툰과 프로그램의 영리적인 사용은 엄격히 금지합니다.



Node.js가 지원하는 자바스크립트의 새 기능들을 많이 써보기도 했고, 기타 라이브러리나 HTML 파싱, HTTP 쿠키 관련해서도 많이 건드려봤다.

특별히 쓰인 코드들은 다음과 같다.


1. 람다 식


특별히 어디랄 데 없이 광범위하게 사용했다. 콜백 함수를 넘겨줄 때, 이름을 굳이 지어주지 않아도 될 함수들은 전부 람다 식으로 작성했다.


2. async.js 함수들


주로 콜백으로 이어지는 자바스크립트 I/O 특성상, 이런 툴을 쓰니 이어지는 작업이 더 간단해졌다.

특히 주 작업 함수에서 사용한 async.waterfall() 함수는 순차적인 작업을 수행할 때 콜백 지옥을 피할 수 있게 해줬으며, 다운로드 작업 시 사용한 async.parallel()과 async.parallelLimit() 함수로 동시 다운로드가 되게 해서 속도를 높일 수 있었다.


3. Generator function, Spread operator


download.js 60번째 줄

function* webtoonTaskGenerator(titleId, last) { ... for(let i = 1; i <= last; i++) { yield function webtoonGetter(callback) { ...

download.js 390번째 줄

async.parallelLimit([...webtoonTaskGenerator(titleId, toon.last)], 10, (err, results) => {

download.js 170번째 줄

function* imageTaskGenerator(items, referer, dir) { for(let i = 0; i < items.length; i++) { let elem = items[i]; yield (callback) => { ...

download.js 116번째 줄

async.parallel([...imageTaskGenerator($images, url, path.resolve(OUTPUT_DIR, titleId, i+""))], callback);

async,js에게 넘겨줄 작업을 생성하는 함수이다. async.js에서도 iterable을 지원하는데, 내가 쓸 땐 뭔가 문제가 생겨서 spread operator을 쓴 것으로 기억한다.


4. 네이버 로그인 세션 쿠키 입력


download.js 129번째 줄

} else if(res.statusCode == 302) { if(!doingAuthInput) { doingAuthInput = true; console.log("Failed to load toon#" + i + ", trying with user auth info can help."); rl.question("NID_AUT: ", (aut) => { rl.question("NID_SES: ", (ses) => { jar.setCookie(request.cookie("NID_AUT=" + aut), "http://comic.naver.com"); jar.setCookie(request.cookie("NID_SES=" + ses), "http://comic.naver.com"); doingAuthInput = false; webtoonGetter(callback); // Retry with session information }) }); } else { //console.log("Failed to load toon#" + i + ". Waiting until input is done..."); (function waitInputDone() { if(doingAuthInput) { async.setImmediate(waitInputDone); } else { webtoonGetter(callback); } })(); } }

이게 가장 최근에 추가했던 기능이다.


성인 웹툰은 사용자 로그인이 필요하다. 로그인되지 않은 상태에서 성인 웹툰 보기 페이지에 들어가면 로그인 페이지로 302 리디렉션을 넘겨주는데, 로그인을 직접 구현하기에는 귀찮고 힘들다.(난 OTP까지 걸어놔서 특히!)

그런 고로 사용자에게 현재 로그인된 세션의 쿠키를 입력하도록 질의한다.


해본 결과 생각보다 간단하게 해결되서 놀랐다. 이렇게 금방 될 줄은 몰랐는데, 아무튼 성공적으로 로그인 인증이 되어서 성인 웹툰도 다운로드받을 수 있다.


이 프로그램은 여러 회차를 동시에 다운로드 받으므로 여러 회차가 동시에 302 리디렉션 응답을 받을 것이다. 동시에 여러 개의 질문에 응답할 수는 없고, node.js의 readline도 꼬이므로 doingAuthInput 변수에 지금 이미 쿠키 입력을 받고 있는지를 저장한다.


입력을 받고있지 않으면 쿠키 정보를 입력받고, 이미 입력을 받고있다면 아래의 else문을 실행한다.

else문에서는 waitInputDone() 함수가 있는데, 여기서는 입력을 받을때까지 setImmediate() 함수를 이용해서 다른 동시작업이 먼저 실행되도록 자기 자신을 미뤄서, 입력을 받는 부분이 먼저 실행되어 입력을 완료하도록 대기한다.

그러다가 입력이 완료되면 다운로드를 재시작(자기 자신의 함수를 다시 호출 - webtoonGetter(callback))한다.


이 병렬 처리 과정도 일반적인 자바스크립트 코딩을 하면 볼 일이 없겠지만 어쩌다보니 쓰게 되어서 신기했다. 타 언어의 스레딩과는 달리 데이터 완전성 이런건 확인을 안해도 되어서 좋았지만, synchronized block 같은 기능을 생각하고 저 부분을 짜다가 나중에 보니 비슷한 기능은 없고 setImmeriate() 함수를 찾게 되어 그걸 사용하게 되었다.

블로그 이미지

예비컴공돌이

각종 프로젝트 진행중! 생각날때마다 블로그 업데이트합니다.

드론(쿼드콥터) 완제품을 산다면 신경 쓸 필요가 없는 부분이지만, 나는 직접 조립할 것이므로 부품을 따로 알아보고 사야한다.

각 부품에 대한 자세한 설명은 따로 글을 파서 하겠지만, 우선 주요 내용에 대해서 메모해둔다.



1. 모터

당연히 드론을 날리려면 드론을 띄울 동력이 필요하다. 쿼드콥터에는 4개가 필요하다.

드론에 주로 쓰이는 모터의 종류로는 코어리스 모터BLDC 모터가 있는데,

코어리스 모터는 회로가 덜 복잡하고, 그래서 작은 완구 드론에 주로 쓰이지만 드론 체급이 커지면 힘이 부족하다.

BLDC 모터는 브러시리스 모터라고도 부르는데, ESC라는게 필요하지만 더 강하고 빠른 힘을 낼 수 있어서 대부분 이 쪽을 쓴다.

나도 BLDC 모터를 써서 만들 것이다.



2. ESC (Electronic Speed Controller, 전자 속도 제어기 / 변속기)

위에서 말한 BLDC 모터의 제어를 위해 사용하는 부품이다.

BLDC 모터는 구조상 선이 3개 있는데, 여기에 극성을 적절하게 가해서 회전시키는 원리이다. ESC는 그 극성을 가해서 모터를 회전시키며, 또 신호를 받아 적절히 모터 회전 속도를 가/감속한다.


ESC는 모터에 필요한 전류에 따라 다르게 선택하는데, 예를 들어 모터의 최대 소모 전류가 18A라면 ESC는 20A 이상의 것을 사용하면 된다.

또 제품 카탈로그를 보면 OneShot125 같은 기능도 있는데, FC(제어보드)의 역량에 따라서 쓸 수 있는지가 결정된다.

나는 아두이노로 직접 제어보드를 만드는데, 우선은 날리는 데에 의의를 두고 나머지 ESC의 기능은 나중에 천천히 생각해보도록 한다.



3. 배터리

모터를 돌리려면 역시 필요한 전력원이다.

리튬 폴리머 배터리는 "셀"로 구성돼있는데, 이를 몇개 직렬로 연결했는지에 따라 1S, 2S 등으로 분류한다. 일반적으로 멀티콥터에는 2S ~ 6S 사이의 배터리를 많이 쓰고, 3S~4S 정도가 무난하다. 나는 3S 배터리를 사용하기로 했다.

3S 배터리라면 12.6V ~ 10.2V의 전압이 출력된다. 배터리의 특성이나 전압과 관련된 얘기는 추후 배터리 글에서 하자.



4. PDB (Power Distribution Board, 전원 분배 보드)

배터리에서 나가서 4개의 모터로 들어가는 전류는 꽤 크다. 이 전류를 전선에 과부하를 걸지 않고 전달하기 위해 PDB를 사용한다.


물론 전선을 잘만 연결한다면 전류에 대해서는 생각할 필요가 없다. 나는 다만 미관상으로 좋지 않고 망가지기 쉬워서라고 생각한다.

배터리의 +극에 ESC 4개의 +선을 연결하면 한 접점에 5개의 선이 연결된다. -극에 대해서도 하면 또 선 5개가 추가된다. 어쩔 수 없이 접점은 커질것이고, 진동이나 충격에 깨지기도 쉬울테니 PDB를 사용해서 구분을 해 놓는 것이다.


아무튼 어느 정도만 넘으면 큰 차이가 없는 부품이고 가격도 크게 비싸지 않으므로, 적당한걸 사면 된다. 간혹 드론 몸체에 내장되어있기도 한데, 그렇다면 그걸 사용하면 된다.



5. 드론 본체 (프레임)

모든 부품들을 올려놓을 본체이다. 사용 목적에 따라 고르는 기준이 몇가지 있는데 적당히 맞춰서 사면 된다.


첫째로 크기, 레이싱 드론 같은 것들은 250mm 정도의 프레임을 주로 사용하고, 촬영용으로는 비행 안정성을 위해 450mm 이상의 것들을 주로 쓴다.

둘째로는 재질, 카본섬유(카본파이버) 재질이 가장 튼튼하면서도 가볍지만, 그만큼 비싸진다. 작고 추락 가능성이 큰 레이싱 드론들은 비싸진 않은 카본섬유 프레임이 많이 있다.

그 다음으로 유리섬유도 있는데, 질기고 적당히 가볍고 저렴해서 많이 쓰인다.

나는 유리섬유 재질의 450mm 프레임을 사용할 예정이다.



6. FC (Flight Controller, 비행 제어기)

시중에도 많이 있고, 뭘 고르느냐에 따라 비행 특성, 효율 등이 많이 달라질 부품이다.

평범한 RC 비행기, RC 헬리콥터에는 잘 달지 않는 부품인데, 센서로 현재 각도를 계산해 여러 모터들의 출력을 끊임없이 조절하면서 각도를 맞추어 수평을 유지하면서 안정적으로 날 수 있게 해주는, 멀티콥터에게는 반드시 필요한 부품이다.


CC3D, Naze32, APM 등등 여러 상용 보드가 있지만, 이 프로젝트의 목적이 아두이노로 FC를 만들어 쿼드콥터를 조종하는 것이므로 상용 보드는 다루지 않는다.

'진행중인 프로젝트 > Arduino Quadcopter' 카테고리의 다른 글

1. 드론 제작 부품 소개  (0) 2016.11.19
아두이노 드론 제작 시작  (0) 2016.11.19
블로그 이미지

예비컴공돌이

각종 프로젝트 진행중! 생각날때마다 블로그 업데이트합니다.

이번 학기 안으로 직접 아두이노로 드론을 제작해서 날리려고 한다.

드론의 종류는 RC 비행기, 헬기, 멀티콥터 등등 다양하게 있는데, 여기서 말하는 드론은 프로펠러가 4개 달린 쿼드콥터이다.


계획은 학기 초부터 했지만, 회로 설계, 부품 주문, 드론에 탑재될 다른 기능 제작 등으로 프로젝트 시작과 포스팅이 늦어졌다.


윗 줄에서도 말했듯이, 드론을 날려보는게 끝이 아니고 추가적으로 넣을 기능도 있다. 그건 앞으로 진행하면서 공개하기로 하고, 인트로 끝!

'진행중인 프로젝트 > Arduino Quadcopter' 카테고리의 다른 글

1. 드론 제작 부품 소개  (0) 2016.11.19
아두이노 드론 제작 시작  (0) 2016.11.19
블로그 이미지

예비컴공돌이

각종 프로젝트 진행중! 생각날때마다 블로그 업데이트합니다.

관리를 못하고 있던 블로그를 다시 시작해볼까 한다. 주로 진행하고 있는 프로젝트나 그것 관련해서 새롭게 알게 된 점 위주로 포스팅하려고 생각중이다.


제대로 블로그를 운영하는 것 자체가 처음이라 잘 될 지는 모르겠지만 어떻게든 되려니... 하고 있다.


'기타 > 잡담' 카테고리의 다른 글

블로그 되살리는 중...  (0) 2016.10.15
블로그 이미지

예비컴공돌이

각종 프로젝트 진행중! 생각날때마다 블로그 업데이트합니다.

마인크래프트를 하던 도중에 "서버 플러그인을 만들면 어떨까" 하는 김에 시작해봤습니다.
자바스크립트라면 신경쓰지 않아도 될 private, public 부터 final, static 까지.. 매우 헷갈리는중..

'소프트웨어 > Java' 카테고리의 다른 글

요새 관심을 가지기 시작한 자바..  (1) 2012.01.20
블로그 이미지

예비컴공돌이

각종 프로젝트 진행중! 생각날때마다 블로그 업데이트합니다.


"그냥 한번 만들어보자"하면서 시작했는데 완성까지 3주 이상 걸렸다는;;
소스파일을 봐도 못알아볼 판인데 한가지는 거의 확실히 말할수 있습니다. "매우 비효율적입니다."
y=x^2 을 눈금밀도 100 해서 해봐도 늦습니다.(컴 사양이 딸리니까 바꾸라는 계시..?)
어쨌건 잘 활용해 보시기 바랍니다.

PS. 플래시가 영향력이 약해진다는 것은 알고있습니다. 이건 액션스크립트를 익히기 위해서 만들어 보았습니다. 자바스크립트랑 비슷하니깐요..

※특정한 조건(x^5-눈금밀도 3 이상, x^13 이상 등)에서 까맣게 나오는 경우가 있습니다. 그건 하지 마시길..(아마 4차 이하는 그런게 없던것 같습니다.)
   -원인 미상
※그리고 "만들기"를 누르면 왼쪽 위에 점이 하나 생기더군요. 디버거에도 안나옵니다;; 무시하고 쓰시길 바랍니다.. 

   -원인 미상
※또 하나더 - 눈금 밀도나 선 단위에 "0"을 넣으면 멈춥니다. 멈춘다기보단 ∞까지 계산을 한다는게 맞겠죠. 물론 1분동안만 건드려도 고칠수는 있습니다마는...
   -귀차니즘



2016-11-19 추가

블로그 살리면서 예전 글 보니까, 이런게 남아있었구나...

만들던 기억은 나는데 벌써 5년 전이었구나.. 소스는 어딨는지 기억이 안나요ㅋㅋㅋ

지금 다시 만들라고 하면 도함수랑 써서 더 나은 퀄리티로 만들 수 있을 것 같은데, 이때(중3)는 교육과정을 착실히만 따라가서 그런거 몰랐어요. 대학교에서 공업수학 듣고있을거라고 생각이나 했을까..

용어를 제가 생각하기 편한 식으로 써놨었네요. 눈금밀도는 눈금이 얼마나 촘촘한지 = x좌표 증가량이고, 선 단위는 눈금 몇칸당 한번 계산할지 = 그래프 밀도의 역수입니다.

'소프트웨어 > 그 외' 카테고리의 다른 글

그래프 만드는 프로그램(플래시)  (0) 2011.03.31
블로그 이미지

예비컴공돌이

각종 프로젝트 진행중! 생각날때마다 블로그 업데이트합니다.