Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
クリエイティブコーディングのための数学+JavaScript入門 三角関数と行列
Search
feb19
January 07, 2016
Programming
0
340
クリエイティブコーディングのための数学+JavaScript入門 三角関数と行列
feb19
January 07, 2016
Tweet
Share
More Decks by feb19
See All by feb19
WWDC や iOSDC, Droid Kaigi の動画でウォッチパーティしよう
feb19
0
1.7k
新しい API
feb19
21
8.3k
WWDC19 Design
feb19
1
7.9k
怖い WWDC
feb19
0
2.2k
事業を 0→1 または 1→10 するための UX/UI デザインエンジニアリング
feb19
3
970
Web デザインのこれからを Material Design と Ionic から考えた
feb19
1
990
デザインエンジニアリングことはじめ
feb19
2
2.2k
Other Decks in Programming
See All in Programming
Amazon S3 NYJavaSIG 2024-12-12
sullis
0
100
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
110
SymfonyCon Vienna 2025: Twig, still relevant in 2025?
fabpot
3
1.2k
선언형 UI에서의 상태관리
l2hyunwoo
0
170
Effective Signals in Angular 19+: Rules and Helpers @ngbe2024
manfredsteyer
PRO
0
140
CSC305 Lecture 26
javiergs
PRO
0
140
rails stats で紐解く ANDPAD のイマを支える技術たち
andpad
1
290
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
4
290
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
340
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
260
Cloudflare MCP ServerでClaude Desktop からWeb APIを構築
kutakutat
1
550
見えないメモリを観測する: PHP 8.4 `pg_result_memory_size()` とSQL結果のメモリ管理
kentaroutakeda
0
380
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
243
12k
Building Better People: How to give real-time feedback that sticks.
wjessup
365
19k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
The Cost Of JavaScript in 2023
addyosmani
45
7k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Designing for Performance
lara
604
68k
Mobile First: as difficult as doing things right
swwweet
222
9k
Transcript
ΫϦΤΠςΟϒ ίʔσΟϯάͷͨΊͷ ֶʴ+BWB4DSJQUೖ ࡾ֯ؔͱߦྻ ৽य़εϖγϟϧ ͔ͨ͠ͷͿͻΖ ୈҰճΫϦΤΠςΟϒίʔσΟϯάษڧձʮϕΫτϧʯՌ ୈೋճΫϦΤΠςΟϒίʔσΟϯάษڧձʮྗʯՌ άϧʔϓలʮ3FqFDUJPOʯग़ల࡞ԋग़ άϧʔϓలʮVOGSBNFʯग़ల࡞ʰ3FOEBOʱ
ΫϦΤΠςΟϒίʔσΟϯάͰֶʁ w ύʔςΟΫϧΛࣗ༝ʹඈ͍ͨ͠ ˠͷܭࢉɺϕΫτϧɺҠಈྔܭࢉ w ৭Λࣗ༝ʹมԽ͍ͤͨ͞ ˠपظ֯ͷܭࢉɺೱ୶ͷ࿈ଓతมԽ w େྔͷΦϒδΣΫτʹμϯεͯ͠Β͍͍ͨ ˠ੍࣌ؒޚʢλΠϜϥϓεʣɺߴͳมܗܭࢉ
w δΣωϨΠςΟϒΞʔτΛ࡞Γ͍ͨ ˠֶΞϧΰϦζϜͷཧղ
ඪ ᶃ ࡾ֯ؔͱߦྻͰදݱʹ׆༻Ͱ͖Δ෦ΛΔ w શ෦ΒΜͰԿͱ͔ͳΔΘΑ ᶄ ֶࣜˠ+BWB4DSJQUҠ২Ͱ͖ΔΑ͏ʹͳΔ w ը૾ɺԻॲཧͷXJLJQFEJBจ͕׆༻Ͱ͖ ΔΑ͏ʹͳΓ·ͧ͢
Ұ෦ҙ༁͕͋Γ·͢ਖ਼֬ੑଞͷจݙΛࢀߟʹͯ͠Ͷ
ΞδΣϯμ ᶃ ؔͱ N ᶄ ࡾ֯ؔͱ N ᶅ
ࡾ֯ؔΛͬͨίʔσΟϯάମݧ N ᶆ ߦྻͱ N ᶇ ߦྻΛ࣮͢ΔίʔσΟϯάମݧ N ᶈ ࣗ༝ʹίʔσΟϯά N ᶉ ൃද N
ʮؔʯͱ w ॲཧͷ·ͱΊ w ύϥϝʔλʢҾʣΛͯ͠ɺ ฦΓΛฦͯ͘͠ΕΔʢ͜ͱ͋Δʣ
ʮؔʯͱ w ॲཧͷ·ͱΊ w ύϥϝʔλʢҾʣΛͯ͠ɺ ฦΓΛฦͯ͘͠ΕΔʢ͜ͱ͋Δʣ ֶಉ༷ʂ
ࡾ֯ؔʢֶ*ʣ
ʮࡾ֯ؔʯͱ ᶃ ֯ΛҾʹ͢ͱɺ͔ΒͷΛฦؔ͢ ᶄ ฦͯ͘͠ΕΔϥϯμϜͰͳ͘ ֯ͱؔੑ͕͋Δ
ʮࡾ֯ؔʯͱ ᶃ ֯ΛҾʹ͢ͱɺ͔ΒͷΛฦؔ͢ ᶄ ฦͯ͘͠ΕΔϥϯμϜͰͳ͘ ֯ͱؔੑ͕͋Δ දݱͰ͏ͷओʹαΠϯ TJO ͱίαΠϯ DPT
ͦΕͱύΠˠК<ʜ>Ͱ͋Δͱ͍͏ࣄ
αΠϯTJO Ҿ͕͍͘Β૿͑ͯʙͷΛ॥͢Δ w .BUITJO ˠ w .BUITJO К➗ <ʜ>ˠ
w .BUITJO К <ʜ>ˠ w .BUITJO К К➗ <ʜ>ˠ w .BUITJO К <>ˠ
αΠϯDPT Ҿ͕͍͘Β૿͑ͯʙͷΛ॥͢Δ К➗͚ͩฦΓ͕Φϑηοτ͞Ε͍ͯΔ w .BUIDPT ˠ w .BUIDPT К➗
<ʜ>ˠ w .BUIDPT К <ʜ>ˠ w .BUIDPT К К➗ <ʜ>ˠ w .BUIDPT К <>ˠ
TJOͱDPT ੨ɿTJOɹɿDPT IUUQHPPHMC.E(KM
՝ᶃɹTJODPTΛͬͯԿ͔࡞Δ ੍ w .BUITJO .BUIDPT Λ͏ ྫ w ޫ͕໌໓͢ΔΞχϝʔγϣϯ w
IUUQHPPHMRY3[) w TJODPTΛͬͯඳ͔ΕΔਤ w .BUI1*͍͍͔ͬͯ alpha = sin(count) x = cos(count)×10 y = sin(count)×10 ⎧ ⎨ ⎪ ⎩ ⎪
͓·͚ɿΞʔΫλϯδΣϯτBUBO ΞʔΫʙ͔Β֯ΛٻΊΔٯؔ w .BUIBUBO Z Y ˠК
ऄɿ.BUIBUBOͱ.BUIBUBO UBO୯ҐͰ͕॥͢Δ BUBO୯ҐͰΛฦ͢ BUBO͕Θ͔ΔΑ͏ɺΑ͠ͳʹͬͯ͘ΕΔ w .BUIUBO ˠ w .BUIUBO
ˠ
ߦྻʢֶ$ʣ
ʮߦྻʯͱ w ෳͷΛߦͱྻͰอ࣋͢Δྻ 3 5 ( ) 1 0 0
1 ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ a 11 … a 1n ! " ! a m1 # a mn ⎛ ⎝ ⎜ ⎜ ⎜ ⎜ ⎞ ⎠ ⎟ ⎟ ⎟ ⎟
ʮߦྻʯͱ w ෳͷΛߦͱྻͰอ࣋͢Δྻ w දݱͰߦྻಉ࢜ͷܭࢉ·Ͱཧղ͕͋Δͱ͍͍ײ͡ 3 5 ( ) 1
0 0 1 ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ a 11 … a 1n ! " ! a m1 # a mn ⎛ ⎝ ⎜ ⎜ ⎜ ⎜ ⎞ ⎠ ⎟ ⎟ ⎟ ⎟
ߦྻͷܭࢉɿ߹ମʢDPODBUʣ M = 1 2 3 4 ⎛ ⎝ ⎜
⎞ ⎠ ⎟ 5 6 7 8 ⎛ ⎝ ⎜ ⎞ ⎠ ⎟
ߦྻͷܭࢉɿ߹ମʢDPODBUʣ M = 1 2 3 4 ⎛ ⎝ ⎜
⎞ ⎠ ⎟ 5 6 7 8 ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ = 1×5+2×7 1×6+2×8 3×5+4×7 3×6+4×8 ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ ҰͭΊͷߦྻԣʹɺೋͭΊͷߦྻॎʹΛर͏ ύζϧΈ͍ͨͳײͩ͡Α
ߦྻͷܭࢉɿ߹ମʢDPODBUʣ M = 1 2 3 4 ⎛ ⎝ ⎜
⎞ ⎠ ⎟ 5 6 7 8 ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ = 1×5+2×7 1×6+2×8 3×5+4×7 3×6+4×8 ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ = 19 22 43 50 ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ ҰͭΊͷߦྻԣʹɺೋͭΊͷߦྻॎʹΛर͏ ܭࢉ্ग़ͯ͘Δߦྻ࠷খͷେ͖͞ʹͳΔ ύζϧΈ͍ͨͳײͩ͡Α
ߦྻͷܭࢉɿ߹ମʢDPODBUʣΛ൚Խ = A× E + B ×G A× F +
B × H C × E + D×G C × F + D× H ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ M = A B C D ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ E F G H ⎛ ⎝ ⎜ ⎞ ⎠ ⎟
ߦྻͷܭࢉɿ߹ମʢDPODBUʣΛ൚Խ ࿈ཱํఔࣜʹͯ͠ΈΔ = A× E + B ×G A× F
+ B × H C × E + D×G C × F + D× H ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ M = A B C D ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ E F G H ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ → a = A× E + B ×G b = A× F + B × H c = C × E + D×G d = C × F + D× H ⎧ ⎨ ⎪ ⎪ ⎩ ⎪ ⎪
ߦྻͷܭࢉɿ߹ମʢDPODBUʣΛ࣮ → a = A× E + B ×G b
= A× F + B × H c = C × E + D×G d = C × F + D× H ⎧ ⎨ ⎪ ⎪ ⎩ ⎪ ⎪ function concatMatrix(A, B, C, D, E, F, G, H) { ... return [a, b, c, d] } IUUQHPPHMF:NX&
ʮߦྻʯԿʹ͏Μ ೋ࣍ݩ࠲ඪ 9 : ࡾ࣍ݩ࠲ඪ 9 : ; ͷΑ͏ʹෳ ͷ͔ΒΔσʔλΛૢ࡞͢Δ߹༗ޮ
ྫɿʮ࠲ඪʯʹʮมߦྻʯΛՃ͑Δͱ ɹɹʮมܗʯ͕ߦ͑ΔʢҰ࣍มɺΞϑΟϯมʣ w ʮճసͷͨΊͷߦྻʯ SPUBUF w ʮҠಈͷͨΊͷߦྻʯ USBOTMBUF w ʮ֦େͷͨΊͷߦྻʯ TDBMF w ʮࣼͷͨΊͷߦྻʯ TLFX
՝ᶄɹճసߦྻΛ࣮͢Δ ɿ࠲ඪ ΛݪΛத৺ʹʢКʣճ సͤͨ͞࠲ඪΛϓϩάϥϜͰٻΊΑɻ ճసߦྻ Ұ࿈ཱํఔࣜʹ͢ΔͱϓϩάϥϜԽ͍͢͠Αʂ cosθ −sinθ
sinθ cosθ ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ ′ P = cosθ −sinθ sinθ cosθ ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ 5 10 ⎛ ⎝ ⎜ ⎞ ⎠ ⎟
՝ᶄɹճసߦྻΛ࣮͢Δ ɿ࠲ඪ ΛݪΛத৺ʹʢКʣճ సͤͨ͞࠲ඪΛϓϩάϥϜͰٻΊΑɻ ճసߦྻ cosθ −sinθ sinθ
cosθ ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ ′ P = cosθ −sinθ sinθ cosθ ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ 5 10 ⎛ ⎝ ⎜ ⎞ ⎠ ⎟ = cosθ ×5−sinθ ×10 sinθ ×5+cosθ ×10 IUUQHPPHMLO3R
՝ᶄ`ɹճసߦྻͰΞχϝʔγϣϯ Ͳͷ࠲ඪɾ֯ͰٻΊΒΕΔΑ͏ʹɺ՝ᶄͷΞϧ ΰϦζϜΛؔԽ͠ɺ֯Λ૿͍ͯ͘͠ͱճస͢Δ Α͏ͳΞχϝʔγϣϯΛ࡞͍ͯͩ͘͠͞ɻ IUUQHPPHM;9;Y/L
·ͱΊ ֶ͕ࣜಡΊΔΑ͏ʹͳΕ͍ΖΜͳจ͕δΣωϨ ΠςΟϒදݱͰ׆༻Ͱ͖ΔΑ͏ʹͳͬͯΔΑʂ ֶָ͍͠Αʂ
͓͚ͮ͘ w TJOͱDPTͷղઆͰ͔ͭͬͨΞχϝʔγϣϯ IUUQHPPHMC.E(KM w ՝ᶄճసߦྻΛ͔ͭͬͨΞχϝʔγϣϯ IUUQHPPHM;9;Y/L w ࢀߟɿલʹॻ͍ͨϒϩά IUUQDSFBUPSEFOBKQBSDIJWFTIUNM
w ࣜΤσΟλʔɿ.BUI5ZQF IUUQXXXEFTTDJDPNFOQSPEVDUTNBUIUZQF USJBMBTQ