지은이 : 대니얼 시프먼
창의적 코딩을 재미있고 친근한 방식으로 전 세계와 공유하는 것을 사명으로 삼고 있다. 구독자 174만 명의 유튜브 채널 '코딩 트레인'에 자바스크립트(p5.js)와 자바(프로세싱) 같은 프로그래밍 언어의 기초부터 물리 시뮬레이션, 머신러닝, 데이터 시각화를 위한 알고리즘까지 다양한 주제의 동영상 튜토리얼을 게시하고 있다. 뉴욕 대학교 티시 예술대학의 ITP/IMA에서 부교수로 일하며, 여가 시간에는 반려 닭인 판초, 루이스, 빌보를 돌본다. 《러닝 프로세싱(2판)》(비제이퍼블릭, 2016)의 저자이기도 하다.
지은이 · 감수자 · 옮긴이 소개 xii
옮긴이 머리말 xiii
베타리더 후기 xiv
추천사 xvi
감사의 글 xviii
이 책에 대하여 xxiv
CHAPTER 0 무작위성 1
0.1 랜덤 워크 2
0.2 랜덤 워커 클래스 3
0.3 확률과 비균등분포 10
0.4 무작위 숫자의 정규분포 14
0.5 무작위 숫자의 사용자 정의 분포 18
0.6 펄린 노이즈를 사용한 더 부드러운 접근 21
CHAPTER 1 벡터 33
1.1 벡터의 중요성 34
1.2 p5.js에서의 벡터 37
1.3 벡터 덧셈 40
1.4 추가적인 벡터 수학 45
1.5 벡터의 길이 50
1.6 벡터 정규화 52
1.7 벡터를 사용한 움직임 54
1.8 가속도 59
CHAPTER 2 힘 71
2.1 힘과 뉴턴의 운동 법칙 72
2.2 힘의 누적 78
2.3 질량 고려하기 80
2.4 힘 만들기 82
2.5 힘 모델링하기 88
2.6 n체 문제 110
CHAPTER 3 진동 117
3.1 각도 118
3.2 각운동 120
3.3 삼각함수 126
3.4 이동 방향 가리키기 127
3.5 극좌표와 데카르트 좌표 131
3.6 진동의 특성 134
3.7 각속도를 이용한 진동 138
3.8 파동 142
3.9 스프링 힘 147
3.10 진자 154
CHAPTER 4 파티클 시스템 165
4.1 파티클 시스템의 중요성 166
4.2 단일 파티클 168
4.3 파티클 배열 172
4.4 파티클 방출기 178
4.5 방출기의 시스템 181
4.6 상속과 다형성 184
4.7 힘을 사용하는 파티클 시스템 197
4.8 밀어내는 객체의 힘을 적용한 파티클 시스템 200
4.9 이미지 텍스처와 가산 혼합 205
CHAPTER 5 자율 에이전트 213
5.1 스스로의 의지로 선택하는 힘 214
5.2 차량과 조향 215
5.3 흐름장 232
5.4 경로 따라가기 239
5.5 복잡한 시스템 256
5.6 알고리즘 효율성: 내 프로그램은 왜 이렇게 느릴까? 273
CHAPTER 6 물리 라이브러리 285
6.1 왜 물리 라이브러리를 사용하는가? 287
6.2 Matter.js 라이브러리 읽어 들이기 289
6.3 Matter.js 개요 291
6.4 p5.js와 함께 사용하는 Matter.js 301
6.5 정적 Matter.js 바디 306
6.6 다각형과 도형 그룹 307
6.7 Matter.js 제약 315
6.8 여러 가지 힘 적용하기 323
6.9 충돌 이벤트 327
6.10 간단한 소개: 적분 331
6.11 Toxiclibs.js로 구현하는 베를레 물리 333
6.12 연체 시뮬레이션 342
6.13 인력과 척력 355
CHAPTER 7 셀룰러 오토마타 359
7.1 셀룰러 오토마타란 무엇인가? 360
7.2 기초 셀룰러 오토마타 362
7.3 울프럼의 분류 체계 380
7.4 생명 게임 382
7.5 객체지향적인 셀 만들기 391
7.6 전통적인 셀룰러 오토마타의 변형 394
CHAPTER 8 프랙털 399
8.1 프랙털이란? 400
8.2 재귀 403
8.3 코크 곡선 414
8.4 나무 422
8.5 L-시스템 430
CHAPTER 9 진화적 컴퓨팅 439
9.1 유전 알고리즘: 자연의 지혜 440
9.2 왜 유전 알고리즘을 사용할까? 441
9.3 유전 알고리즘의 작동 원리 444
9.4 유전 알고리즘 코딩하기 452
9.5 유전 알고리즘 맞춤 설정하기 464
9.6 진화하는 힘: 스마트 로켓 471
9.7 대화형 선택 484
9.8 생태계 시뮬레이션 489
CHAPTER 10 신경망 499
10.1 인공 신경망 소개 501
10.2 퍼셉트론 505
10.3 신경망에 '네트워크' 추가하기 521
10.4 ml5.js를 사용한 머신러닝 524
10.5 제스처 분류기 만들기 532
CHAPTER 11 신경진화 545
11.1 강화 학습 547
11.2 신경망의 진화: NEAT 알고리즘 552
11.3 플래피 버드 코딩하기 553
11.4 신경진화하는 플래피 버드 557
11.5 신경진화로 조향하기 568
11.6 신경진화하는 생태계 576
맺음말 587
부록: 생명체 디자인 589
도판 출처 593
찾아보기 596
도서 DB 제공 - 알라딘 인터넷서점 (www.aladin.co.kr)