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
Processing.js アニメーションの基本
Search
Atsushi Tadokoro
May 29, 2014
Technology
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Processing.js アニメーションの基本
Atsushi Tadokoro
May 29, 2014
More Decks by Atsushi Tadokoro
See All by Atsushi Tadokoro
デザイン言語総合講座 - クリエイティブ・コーディング
tado
0
2.8k
Tumblrを使う4 - Webサイトを構成する、固定ページとタグ
tado
0
1.8k
Tumblrを使う3- カスタムHTMLテーマの作成
tado
0
470
Processing.jsによるデータの可視化と生成的表現
tado
1
1.9k
Tumblrを使う2 - テーマをカスタマイズする
tado
0
380
Touchéの仕組みを理解 - ProcessingとArduinoの連携
tado
0
2.4k
Github Pagesで作品を公開、Automatic Page Generatorでサイトを生成
tado
0
1.6k
TumblrでWebサイトを作成
tado
0
730
bmaw14 第2回: Touchéセンサーを使う1 Touchéセンサーを作成する
tado
0
2.2k
Other Decks in Technology
See All in Technology
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
410
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
140
Making sense of Google’s agentic dev tools
glaforge
1
290
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
120
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
3.2k
副作用のある Lambda でも Lambda Power Tuning は使えるのか / lambda-power-tuning-side-effects
koukihosaka
1
110
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
4.7k
CSに"SLO"は要らない、経営層に"99.9%"は伝わらない - SREを全社に"翻訳"する3原則
cscengineer
PRO
1
5.2k
インフラと開発の垣根を超えていき!〜元AWSインフラエンジニアがAWS開発で奮闘している話〜
hatahata021
3
300
AI時代の闇と光
tatsuya1970
0
110
Playwright × AI Agent でE2Eテストはどう変わるか AI駆動テストの可能性と実用検証の結果
taiga7543
1
460
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
400
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
Thoughts on Productivity
jonyablonski
76
5.2k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
390
The browser strikes back
jonoalderson
0
1.4k
Documentation Writing (for coders)
carmenintech
77
5.4k
WENDY [Excerpt]
tessaabrams
11
38k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Context Engineering - Making Every Token Count
addyosmani
9
1k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Transcript
ใฤू 8FC 1SPDFTTJOHKT Ξχϝʔγϣϯͷجຊ ݄ ౦ژज़େֶܳज़ใηϯλʔ ".$
୲ɿాॴ३
Ξχϝʔγϣϯͷجຊ
Ξχϝʔγϣϯ ‣ ࠓૣΞχϝʔγϣϯʹઓ ‣ ·ͣશମͷΈΛཧղ͢Δ ! ‣ ΞχϝʔγϣϯΛ࣮ݱ͢ΔʹɺϓϩάϥϜΛΑΓߏԽ͍ͯ͘͠ඞཁ ‣ TFUVQ
ͱVQEBUF ͱ͍͏ೋͭͷύʔτʹߏԽͯ͠ΞχϝʔγϣϯΛ࣮ݱ͢Δ
Ξχϝʔγϣϯ ‣ TFUVQ rॳظઃఆϓϩάϥϜͷىಈ࣌ʹҰ͚࣮ͩߦ͞Ε·͢ɻը໘ͷجຊઃఆ ϑϨʔϜϨʔτͳͲΛઃఆ͠·͢ɻ ‣ ESBX rඳըઃఆͨ͠͞ ϑϨʔϜϨʔτ ͰϓϩάϥϜ͕ऴྃ͢Δ·Ͱ͘Γ͔͑
࣮͠ߦ͞Ε·͢ɻ
Ξχϝʔγϣϯ ‣ ͜ͷΈΛར༻ͯ͠ԁ͕ࣼΊԼʹҠಈ͢ΔϓϩάϥϜΛ࡞ͯ͠ΈΔ
Ξχϝʔγϣϯ ‣ ҎԼͷίʔυΛهೖ float posX, posY; //ԁͷத৺ҐஔΛ֨ೲ͢Δม float speedX, speedY;
//ԁͷΛ֨ೲ͢Δม void setup() { size(640, 480); //640x480pixelͷը໘Λੜ frameRate(60); //ϑϨʔϜϨʔτ stroke(63, 191, 255); //ઢͷ৭ fill(0, 127, 255, 127); //ృΓͷ৭ posX = 40; //ԁͷॳظҐஔX posY = 40; //ԁͷॳظҐஔY speedX = 3; //ԁͷॳظҐஔX speedY = 2; //ԁͷॳظҐஔY } ! void draw() { background(15); //എܠΛඳը ellipse(posX, posY, 20, 20); //ࢦఆͨ͠ҐஔʹԁΛඳը posX = posX + speedX; //ԁͷX࠲ඪΛߋ৽ posY = posY + speedY; //ԁͷY࠲ඪΛߋ৽ }
Ξχϝʔγϣϯ ‣ ԁ͕Ξχϝʔγϣϯ͢Δ ͣ
Ξχϝʔγϣϯ ‣ ը໘ͷͰόϯυͤͯ͞ΈΔ ! ‣ ҎԼͷ݅Λઃఆ͢Δඞཁ ‣ ը໘ͷӈɺ͘͠ը໘ͷࠨˠ9ํͷεϐʔυΛస ‣ ը໘ͷ্ɺ͘͠ը໘ͷԼˠ:ํͷεϐʔυΛస
! ‣ JGจ ‣ ͜ͷΑ͏ͳʮ͠˓˓ͩͬͨΒɺ˘˘͠ͳ͍͞ɺʢͦ͏Ͱͳ͚Εɺ˚˚˚͠ͳ͞ ͍ʣʯͱ͍͏Α͏ͳ੍ޚߏΛදݱ͢ΔͨΊͷΈ
Ξχϝʔγϣϯ ‣ JGจͷจ๏ if(ʬ݅ࣜʭ){ ʬਅจʭ//͕݅ਖ਼͍͠߹ͷॲཧ } else { ʬِจʭ//͕݅ਖ਼͘͠ͳ͍߹ͷॲཧ }
Ξχϝʔγϣϯ ‣ ݅ذΛ͔ͭͬͯɺนͰόϯυͤͯ͞ΈΔ float posX, posY; //ԁͷத৺ҐஔΛ֨ೲ͢Δม float speedX, speedY;
//ԁͷΛ֨ೲ͢Δม ! void setup() { size(640, 480); //640x480pixelͷը໘Λੜ frameRate(60); //ϑϨʔϜϨʔτ stroke(63, 191, 255); //ઢͷ৭ fill(0, 127, 255, 127); //ృΓͷ৭ posX = 40; //ԁͷॳظҐஔX posY = 40; //ԁͷॳظҐஔY speedX = 3; //ԁͷॳظҐஔX speedY = 2; //ԁͷॳظҐஔY }
Ξχϝʔγϣϯ ‣ ݅ذΛ͔ͭͬͯɺนͰόϯυͤͯ͞ΈΔ void draw() { background(15); //എܠΛඳը ellipse(posX, posY,
20, 20); //ࢦఆͨ͠ҐஔʹԁΛඳը posX = posX + speedX; //ԁͷX࠲ඪΛߋ৽ posY = posY + speedY; //ԁͷY࠲ඪΛߋ৽ if (posX < 0 || posX > width) { //͠ը໘ͷࠨ·ͨӈʹ౸ୡͨ͠Β speedX = speedX * -1; //XํͷεϐʔυΛస } if (posY < 0 || posY > height) { //͠ը໘ͷԼ·্ͨʹ౸ୡͨ͠Β speedY = speedY * -1; //YํͷεϐʔυΛస } }
Ξχϝʔγϣϯ ‣ ͨ͘͞ΜͷਤܗΛҰʹಈ͔ͯ͠ΈΔ ‣ ઌिͬͨGPSจͷԠ༻ ! ‣ σʔλͷ࣋ͪํʹ͕ඞཁˠྻ ‣ σʔλͷϩοΧʔͷΑ͏ͳΠϝʔδ
Ξχϝʔγϣϯ ‣ ྻͷఆٛͷํ๏ͷྫ // floatܕͷྖҬ100ίΛ֬อɺdataͱ͍͏ྻ໊ʹ float data[] = new float[100];
! // data[0], data[1], data[2] ... data[99] ·ͰҰؾʹੜ!
Ξχϝʔγϣϯ ‣ ྻͱ͘Γ͔͑͠Λ༻ͯ͠ɺઌఔͷนͰόϯυ͢ΔϓϩάϥϜΛվ ‣ ͨ͘͞ΜͷਤܗΛಉ࣌ʹಈ͔ͯ͠ΈΔ
Ξχϝʔγϣϯ ‣ ྻΛ༻ͯ͠ɺͨ͘͞ΜͷਤܗΛಈ͔͢ int NUM = 100; float posX[] =
new float[NUM]; //ԁͷத৺ҐஔΛ֨ೲ͢Δม float posY[] = new float[NUM]; float speedX[] = new float[NUM]; //ԁͷΛ֨ೲ͢Δม float speedY[] = new float[NUM]; ! void setup() { size(640, 480); //640x480pixelͷը໘Λੜ frameRate(60); //ϑϨʔϜϨʔτ stroke(63, 191, 255); //ઢͷ৭ fill(0, 127, 255, 127); //ృΓͷ৭ //NUMճ͘Γ͔͑͠ for (int i = 0; i < NUM; i++) { posX[i] = random(width); //ԁͷॳظҐஔX posY[i] = random(height); //ԁͷॳظҐஔY speedX[i] = random(-5,5); //ԁͷॳظҐஔX speedY[i] = random(-5,5); //ԁͷॳظҐஔY } }
Ξχϝʔγϣϯ ‣ ྻΛ༻ͯ͠ɺͨ͘͞ΜͷਤܗΛಈ͔͢ void draw() { background(15); //എܠΛඳը //NUMճ͘Γ͔͑͠ for
(int i = 0; i < NUM; i++) { ellipse(posX[i], posY[i], 20, 20); //ࢦఆͨ͠ҐஔʹԁΛඳը posX[i] = posX[i] + speedX[i]; //ԁͷX࠲ඪΛߋ৽ posY[i] = posY[i] + speedY[i]; //ԁͷY࠲ඪΛߋ৽ //͠ը໘ͷࠨɺ·ͨӈʹ౸ୡͨ͠Β if (posX[i] < 0 || posX[i] > width) { speedX[i] = speedX[i] * -1; //XํͷεϐʔυΛస } //͠ը໘ͷԼɺ·্ͨʹ౸ୡͨ͠Β if (posY[i] < 0 || posY[i] > height) { speedY[i] = speedY[i] * -1; //YํͷεϐʔυΛస } } }
Ξχϝʔγϣϯ ‣ ͨ͘͞Μͷਤܗ͕ಉ࣌ʹಈ͘
Ξχϝʔγϣϯ ‣ ࠓ͜͜·Ͱ