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
370
クリエイティブコーディングのための数学+JavaScript入門 三角関数と行列
feb19
January 07, 2016
Tweet
Share
More Decks by feb19
See All by feb19
WWDC や iOSDC, Droid Kaigi の動画でウォッチパーティしよう
feb19
0
2.1k
新しい API
feb19
21
8.4k
WWDC19 Design
feb19
1
8k
怖い WWDC
feb19
0
2.3k
事業を 0→1 または 1→10 するための UX/UI デザインエンジニアリング
feb19
3
1k
Web デザインのこれからを Material Design と Ionic から考えた
feb19
1
1k
デザインエンジニアリングことはじめ
feb19
2
2.3k
Other Decks in Programming
See All in Programming
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
2.5k
CSC509 Lecture 03
javiergs
PRO
0
340
オープンソースソフトウェアへの解像度🔬
utam0k
15
2.9k
その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化
yordgenome03
1
130
CSC509 Lecture 06
javiergs
PRO
0
260
10年もののAPIサーバーにおけるCI/CDの改善の奮闘
mbook
0
830
技術的負債の正体を知って向き合う / Facing Technical Debt
irof
0
170
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
150
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
110
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
32k
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
340
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
200
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
5.8k
Scaling GitHub
holman
463
140k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
Statistics for Hackers
jakevdp
799
220k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
The Cult of Friendly URLs
andyhume
79
6.6k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Automating Front-end Workflow
addyosmani
1371
200k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Designing Experiences People Love
moore
142
24k
Agile that works and the tools we love
rasmusluckow
331
21k
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