티스토리 뷰
p5.js는 프로세싱의 자바스크립트 버전입니다.
HTML 캔버스를 이요하여 다양한 그래픽을 그릴 수 있습니다.
오늘은 6월 6일 현충일을 기념하여 p5.js로 태극기를 그려보았습니다.
시작하기 앞서 순국선열과 호국영령들의 희생에 감사를 표합니다.
태극기가 겉보기에는 단순해보이지만, 은근 복잡하더라고요.
그래서 이곳저곳 많이 참고했습니다 ㅎ
태극기 도안은 여기서 참고했습니다.
https://www.mois.go.kr/chd/sub/a05/birth/screen.do
어린이용 자료이긴 한데 아랫부분에 태극기 도안이 자세히 나와있어서 이게 가장 큰 도움이 되었습니다.
아 그리고 꼭 도안처럼 완벽히 그리진 못하더라도 대충은 그릴 줄 아시죠?
그리고 직각삼각형의 한 각을 구하는 방법을 알지 못하여 위키하우도 참고했습니다.
https://ko.wikihow.com/%EA%B0%81%EB%8F%84-%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94-%EB%B2%95
제가 아직 중학생이라 삼각함수에 대해서도, 음의 지수에 대해서도 잘 모르기 때문에 그냥 공식만 복붙하듯 했습니다.
뭐 나중에 배우면 이해가 가겠죠?
이런 그래픽 프로그래밍은 수학이 필수인 것 같습니다.
그리고 도를 호도로 변환하는 공식은 위키하우에서, 자바스크립트에서의 sin, 제곱근은 MDN web docs에서...
그리고 이런 것들을 찾아준 곳은 당연히 덕덕고와 구글입니다.
거의 덕덕고와 구글이 만들어준 셈입니다 ㅋㅋ
완성된 작품은 여기 있습니다.
https://editor.p5js.org/sunwoo1524/sketches/iNU8hc5Va
p5.js 웹 에디터로 만들었습니다.
설치도 필요 없고 로그인도 필요 없습니다.
다만 저장하려면 로그인해야합니다!
제가 p5.js와 코딩을 잘하는게 아니라 코드가 많이 꼬여있을 수도 있습니다...
코드 첨부로 글 마치겠습니다.
감사합니다!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | const size = 250; function setup() { createCanvas(size * 3, size * 2); } function draw() { const dir = (180 - ((sin(2 / sqrt(13)) * PI / 180) ** -1)) / 2; // 중앙 태극 문양 noStroke(); translate(size * 1.5, size); push(); rotate(dir * PI / 180); fill(255, 0, 0); arc(0, 0, size, size, PI, 0, PIE); fill(0, 0, 255); arc(0, 0, size, size, 0, PI, PIE); pop(); push(); rotate(dir * PI / 180); translate(-(size / 4), 0); fill(255, 0, 0); circle(0, 0, size / 2); translate(size / 2, 0); fill(0, 0, 255); circle(0, 0, size / 2); pop(); // 건곤감리 // 건 push(); rotate(dir * PI / 180); translate(- 0.75 * size - size / 12, 0); fill(0); rect(0, - size / 4, size / 12, size / 2); translate(-size / 12 - size / 24, 0); fill(0); rect(0, - size / 4, size / 12, size / 2); translate(-size / 12 - size / 24, 0); fill(0); rect(0, - size / 4, size / 12, size / 2); pop(); // 곤 push(); rotate(dir * PI / 180); translate(0.75 * size, 0); fill(0); rect(0, - size / 4, size / 12, size / 2); fill(255) rect(-1, - size / 24 / 2, size / 12 + 2, size / 24); translate(size / 12 + size / 24, 0); fill(0); rect(0, - size / 4, size / 12, size / 2); fill(255) rect(-1, - size / 24 / 2, size / 12 + 2, size / 24); translate(size / 12 + size / 24, 0); fill(0); rect(0, - size / 4, size / 12, size / 2); fill(255) rect(-1, - size / 24 / 2, size / 12 + 2, size / 24); pop(); // 이 push(); rotate(- dir * PI / 180); translate(- 0.75 * size - size / 12, 0); fill(0); rect(0, - size / 4, size / 12, size / 2); translate(-size / 12 - size / 24, 0); fill(0); rect(0, - size / 4, size / 12, size / 2); fill(255) rect(-1, - size / 24 / 2, size / 12 + 2, size / 24); translate(-size / 12 - size / 24, 0); fill(0); rect(0, - size / 4, size / 12, size / 2); pop(); // 감 push(); rotate(- dir * PI / 180); translate(0.75 * size, 0); fill(0); rect(0, - size / 4, size / 12, size / 2); fill(255) rect(-1, - size / 24 / 2, size / 12 + 2, size / 24); translate(size / 12 + size / 24, 0); fill(0); rect(0, - size / 4, size / 12, size / 2); translate(size / 12 + size / 24, 0); fill(0); rect(0, - size / 4, size / 12, size / 2); fill(255) rect(-1, - size / 24 / 2, size / 12 + 2, size / 24); pop(); } | cs |
'프로세싱' 카테고리의 다른 글
(홍보) 프로세싱 네이버 카페를 개설했습니다! (0) | 2023.02.15 |
---|
- Total
- Today
- Yesterday
- Preact
- 리디렉션광고
- 연합우주
- 콜라츠 추측
- HTML
- CSS
- brainfuck
- 2x2 배열
- ActivityPub
- vercel
- 코딩
- 안드로이드
- 미스키
- golang
- 자바스크립트
- 매트릭스 생성기
- 앱 인벤터
- 이상한 사이트
- 맵 생성기
- 소스코드 뷰어
- 태극기 그리기
- 브레인퍽
- Go 언어
- godot
- 난해한 프로그래밍 언어
- 게임 개발
- WSL
- Firebase
- p5.js
- 운석 충돌 시뮬레이션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |