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
360
クリエイティブコーディングのための数学+JavaScript入門 三角関数と行列
feb19
January 07, 2016
Tweet
Share
More Decks by feb19
See All by feb19
WWDC や iOSDC, Droid Kaigi の動画でウォッチパーティしよう
feb19
0
2k
新しい API
feb19
21
8.3k
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
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
3
770
ふつうの技術スタックでアート作品を作ってみる
akira888
1
860
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
120
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
5
1.5k
技術同人誌をMCP Serverにしてみた
74th
1
650
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
220
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
120
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
2
150
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
360
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
560
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
770
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
260
Featured
See All Featured
KATA
mclloyd
30
14k
Code Reviewing Like a Champion
maltzj
524
40k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
950
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
The Invisible Side of Design
smashingmag
301
51k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
BBQ
matthewcrist
89
9.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
The Language of Interfaces
destraynor
158
25k
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