SlideShare a Scribd company logo
1 of 1
Download to read offline
Crowbar :
○ バール,かなてこ
 × シロツメクサの別称
”入力用変数”の宣言
PPrroocceessssiinnggのの特特徴徴
・Casey Reas, Ben Fryが開発
・2008年11月末に安定版Processing1.0公開
・インタラクティブなビジュアルプログラム作成が得意
・インストール(USBメモリ等に展開するだけ)
・Androidアプリケーション,Arduino開発も可能
・Windows/Mac/Linux上で開発可能
・オブジェクト指向言語(Javaベース)
・統合開発環境が用意されている
・オープンソース
初学者や情報系以外の学習者に適する
DP-16 Processing上で
古典的なコンソール対話型プログラミングから
高度なグラフィックスプログラミングまで
学習可能なフレームワークCrowbar+Tomahawkの紹介
鈴鹿工業高等専門学校 機械工学科 白井 達也 (Tatsuya SHIRAI), shirai@mech.suzuka-ct.ac.jp (@tatsuva)
今後の課題
・ドキュメントの整備(マニュアル)
・システムメッセージの言語パック対応(多言語化含む)
・Tomahawkの拡張
  正しいビューポート(一つの仮想描画領域に複数のビューポート)
・Crowbar と Tomahawk の融合
  各仮想描画領域に一つずつのテキスト領域を割り当て可
  (現在,TomahawkとCrowbarは別レイヤー)
・関数名の見直しなど,大幅な改良を予定
PPrroocceessssiinnggのの弱弱点点
・キーボードから文字列を入力できない
 (文字単位なら可)
・グラフィックスとして文字は表示
 (座標を指定しないといけない)
・描画ウィンドウが一つしか開けない
Crowbar で解決
Tomahawk で解決
フレームワーク
Crowbar
グラフィックスライブラリー
Tomahawk
ゲーム作りには
最適だが…
対話型の”テキスト表示”+”キーボード入力”の
CUI(Character User Interface)の
プログラム(数値解析など)は『作れない』
crowbarClass crow;
void initCrowbar() {
crow = startCrowbar.generate(56, 30); // 画面サイズ設定(キャラクタ×行:固定)
}
void Options() {
crow.fontSize(14); // デフォルトフォントサイズ指定
crow.bgColor(#000000); // 背景色の指定
crow.systemColor(#ffffff, #ff0000, #8888ff); // システムフォント色指定
crow.startLogging(); // ログファイル記録開始
}
void Setup() {
crow.programComment("二分法のプログラム");
crow.programComment("区間aは区間bよりも小さな値(例:a = 1, b = 2)");
crow.param("区間a").setFloat(1.0).label("xa");
crow.param("区間b").setFloat(2.0).label("xb");
}
// メインルーチン
void Main() {
float err;
float a, b, c, tmp;
int loopcount;
// 許容誤差
err = 0.000001;
// 変数の代入
a = crow.getFloat("xa");
b = crow.getFloat("xb");
【Processingで変数の値を変更したい場合】
プログラム中の定数や文字列を直接変更
【Crowbarならば】
実行時にキーボードから入力可能
(制約)
 1)キーボードからの入力はメインプログラム実行前に
   まとめて入力しなくてはいけない
 2)日本語は入力できない(仕様)
// 繰り返し計算
loopcount = 0;
displayBSM(loopcount, a, b);
while (abs(b - a) >= err) {
c = (a + b) / 2.0;
if (sgn(f(a)) == sgn(f(c))) a = c;else b = c;
loopcount++;
displayBSM(loopcount, a, b);
}
crow.textColor(#00ff00); // 文字色変更
// 最終結果
crow.newline().textColor(#ffffff).writeln(str(loopcount) + "回で収束しました.");
crow.writeln("結果は" + nf((a + b) / 2.0, 1, 10) + "です.");
}
// 問題の方程式
float f(float x) {
float y;
y = pow(x,3) - 3.0 * pow(x, 2) + 9.0 * x - 8.0;
return y;
}
// 区間aと区間bの値を表示する関数
void displayBSM(int i, float a, float b) {
crow.textColor(#ffffff).write("[" + nf(i, 3) + "] ");
crow.textColor(#00ffff).write("区間A :xa = " + nf(a, 1, 10) + " f(xa) = " + nf(f(a), 1, 10));
crow.textColor(#ffffff).write(" / ");
crow.textColor(#ff00ff).write("区間B :xb = " + nf(b, 1, 10) + " f(xb) = " + nf(f(b), 1, 10));
crow.newline();
}
aa)) OOppttiioonnss(())内内でで””入入力力用用変変数数””をを宣宣言言
crow.param("区間a").setFloat(1.0).label("xa");
crow.param("区間b").setFloat(2.0).label("xb");
bb)) 実実行行すするるととキキーーボボーードドかかららのの入入力力をを要要求求さされれるる..
cc)) MMaaiinn(())等等でで””入入力力用用変変数数””かからら読読みみ出出すす
a = crow.getFloat("xa");
b = crow.getFloat("xb");
《《画画面面ススククロローールル,,折折りり返返しし》》
文字列は,wite(), writeln(), newlin()などで出力する
(座標を意識しないで垂れ流し可能,ログファイル出力可)
:自前のテキストVRAM領域を持ち,自動的にグラフィックス描画
aa)) 自自動動ススククロローールル
画面最下行にカーソル位置が到達すると上にスクロールする
 (自動スクロール量は変更可能)
bb)) 手手動動ススククロローールル
  カーソルキーで上下にスクロール可能
cc)) 自自動動折折りり返返しし
  画面の右端にカーソルが到達し
たら,自動的に改行されます.
(その他)
 画面全消去,文字色変更,
 カーソル位置移動が可能
『複数のウィンドウを開けないなら,
  一つのウィンドウを分割すれば良いじゃないか』
PGraphics: Off-screen graphics buffer
メインスクリーンに描画する代わりに,PGrapicsのバッファ(複数
確保可能)に対して描画(ほとんど全ての描画コマンドが対応)
し,それをblend()でメインスクリーンに貼り付けることで実現
(注)各矩形領域を”Viewport”と呼んでいるが,現段階では厳密なViewportではない.
・タイリング,重ね合わせ
・順番入替え,半透明化, 枠線有無と太さ
  表示/非表示切替,マウスクリック判定
Crowbarの文字出力は背景/前面を選択可能
各Viewport内は二つの座標系で座標を指定可能
(Viewportの設定例)
void Setup() {
crow.createView("Oval").viewBgColor(#eeeeee); // オーバルコース
crow.splitViewV("Text", 0.45).viewBgColor(#ffffff);// テキスト情報
crow.splitViewH("DMC", 0.6).viewBgColor(#eeeeee).viewPivotCenter();// DMC中心視点
// ワールド座標の設定
crow.getView("Oval").world(0.0, 0.0, 12200.0, 2000.0).worldOrigin();
crow.getView("DMC").worldY(-200.0, 200.0).worldOrigin();
// 軌跡表示用の透明なビューポートの作成
crow.cloneView("Oval", "Trajectory").setTransparentView(true);
}
標準の描画関数では
円(ellipse)のクリッピングはできない
(Tomahawkの描画例)
vp = crow.getView("Oval");
vp.fill(#ffff00).stroke(#000000).ellipse(-5500.0, 0.0, 40.0);
// ゴールエリア
vp.moveTo(-2000.0, 0.0);
drawCircle(vp, 500.0, lw);
drawCircle(vp, 300.0, lw);
drawCircle(vp, 100.0, lw);
円のクリッピング成功
【【一一つつのの言言語語ででCCUUIIかかららGGUUIIままでで!! 】】
【【((先先生生がが))死死蔵蔵ししてていいるるココーードドをを復復活活!! 】】
【【一一つつのの言言語語ででCCUUIIかかららGGUUIIままでで!! 】】
【【((先先生生がが))死死蔵蔵ししてていいるるココーードドをを復復活活!! 】】
”入力用変数”からの読み出し
(Crowbarサンプルプログラム)

More Related Content

Similar to Processing上で古典的なコンソール対話型プログラミングから高度なグラフィックスプログラミングまで学習可能なフレームワークCrowbar+Tomahawkの紹介

SmartARの使い方(基本編)
SmartARの使い方(基本編)SmartARの使い方(基本編)
SmartARの使い方(基本編)Takashi Yoshinaga
 
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptxhkharu0803
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011Hiroh Satoh
 
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 TokyoSoftware for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 TokyoShohei Hido
 
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)Shin-ya Koga
 
Open Design Computer Project - Tsukuba.pm
Open Design Computer Project - Tsukuba.pmOpen Design Computer Project - Tsukuba.pm
Open Design Computer Project - Tsukuba.pmHirotaka Kawata
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜Hideki Takase
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指してAkira Inoue
 
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)Takashi Sogabe
 
Microsoft azureとdockerとansibleと
Microsoft azureとdockerとansibleとMicrosoft azureとdockerとansibleと
Microsoft azureとdockerとansibleとKinoshita Miku
 
TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都Takuya Azumi
 
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!hmimura_embarcadero
 
Visual Studio Code でプログラムをデバッグしよう!
Visual Studio Code でプログラムをデバッグしよう!Visual Studio Code でプログラムをデバッグしよう!
Visual Studio Code でプログラムをデバッグしよう!m ishizaki
 
20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdfKazuaki Ishizaki
 
DEV-022_これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~
DEV-022_これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~DEV-022_これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~
DEV-022_これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~decode2016
 
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発Kazuaki Tanaka
 
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組みRecruit Technologies
 

Similar to Processing上で古典的なコンソール対話型プログラミングから高度なグラフィックスプログラミングまで学習可能なフレームワークCrowbar+Tomahawkの紹介 (20)

SmartARの使い方(基本編)
SmartARの使い方(基本編)SmartARの使い方(基本編)
SmartARの使い方(基本編)
 
自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx自己紹介とC# Devkitについて.pptx
自己紹介とC# Devkitについて.pptx
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 TokyoSoftware for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
 
Nishimotz pycon2011jan
Nishimotz pycon2011janNishimotz pycon2011jan
Nishimotz pycon2011jan
 
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
2014年の社内新人教育テキスト #3(オブジェクト指向言語ふりかえり)
 
Open Design Computer Project - Tsukuba.pm
Open Design Computer Project - Tsukuba.pmOpen Design Computer Project - Tsukuba.pm
Open Design Computer Project - Tsukuba.pm
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
Nishimotz osc2011oct-v2
Nishimotz osc2011oct-v2Nishimotz osc2011oct-v2
Nishimotz osc2011oct-v2
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
 
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
 
Microsoft azureとdockerとansibleと
Microsoft azureとdockerとansibleとMicrosoft azureとdockerとansibleと
Microsoft azureとdockerとansibleと
 
TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都
 
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
 
Visual Studio Code でプログラムをデバッグしよう!
Visual Studio Code でプログラムをデバッグしよう!Visual Studio Code でプログラムをデバッグしよう!
Visual Studio Code でプログラムをデバッグしよう!
 
20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf
 
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
 
DEV-022_これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~
DEV-022_これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~DEV-022_これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~
DEV-022_これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~
 
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
 
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
 

More from 鈴鹿工業高等専門学校

πを使わずに解けたら東大合格も夢じゃない問題
πを使わずに解けたら東大合格も夢じゃない問題πを使わずに解けたら東大合格も夢じゃない問題
πを使わずに解けたら東大合格も夢じゃない問題鈴鹿工業高等専門学校
 
鈴鹿総合工学同好会第1回設立準備会 同好会説明
鈴鹿総合工学同好会第1回設立準備会 同好会説明鈴鹿総合工学同好会第1回設立準備会 同好会説明
鈴鹿総合工学同好会第1回設立準備会 同好会説明鈴鹿工業高等専門学校
 
Moodle mootjapan2013 「Moodle±5年」 English Version
Moodle mootjapan2013 「Moodle±5年」 English VersionMoodle mootjapan2013 「Moodle±5年」 English Version
Moodle mootjapan2013 「Moodle±5年」 English Version鈴鹿工業高等専門学校
 
ご静聴ありがとうございました(テンプレート2)
ご静聴ありがとうございました(テンプレート2)ご静聴ありがとうございました(テンプレート2)
ご静聴ありがとうございました(テンプレート2)鈴鹿工業高等専門学校
 
Moodleを活用していると思われる大学のリスト
Moodleを活用していると思われる大学のリストMoodleを活用していると思われる大学のリスト
Moodleを活用していると思われる大学のリスト鈴鹿工業高等専門学校
 
ご清聴ありがとうございました(テンプレートその1)
ご清聴ありがとうございました(テンプレートその1)ご清聴ありがとうございました(テンプレートその1)
ご清聴ありがとうございました(テンプレートその1)鈴鹿工業高等専門学校
 
20121116 第3回越中とやまmoodleワークショップ
20121116 第3回越中とやまmoodleワークショップ20121116 第3回越中とやまmoodleワークショップ
20121116 第3回越中とやまmoodleワークショップ鈴鹿工業高等専門学校
 
Moodleを利用した学校ポータルサイト構築の事例紹介とネットワーク化の提案
Moodleを利用した学校ポータルサイト構築の事例紹介とネットワーク化の提案Moodleを利用した学校ポータルサイト構築の事例紹介とネットワーク化の提案
Moodleを利用した学校ポータルサイト構築の事例紹介とネットワーク化の提案鈴鹿工業高等専門学校
 

More from 鈴鹿工業高等専門学校 (20)

How tostartmoodlecloud
How tostartmoodlecloudHow tostartmoodlecloud
How tostartmoodlecloud
 
リモコンムーバ説明
リモコンムーバ説明リモコンムーバ説明
リモコンムーバ説明
 
リモコンムーバ説明
リモコンムーバ説明リモコンムーバ説明
リモコンムーバ説明
 
Emによる環境教育の問題点(新潟市)
Emによる環境教育の問題点(新潟市)Emによる環境教育の問題点(新潟市)
Emによる環境教育の問題点(新潟市)
 
πを使わずに解けたら東大合格も夢じゃない問題
πを使わずに解けたら東大合格も夢じゃない問題πを使わずに解けたら東大合格も夢じゃない問題
πを使わずに解けたら東大合格も夢じゃない問題
 
Moodle version history
Moodle version historyMoodle version history
Moodle version history
 
Osc2013 nagoya0622crowbar
Osc2013 nagoya0622crowbarOsc2013 nagoya0622crowbar
Osc2013 nagoya0622crowbar
 
Osc2013 nagoya0622moodle
Osc2013 nagoya0622moodleOsc2013 nagoya0622moodle
Osc2013 nagoya0622moodle
 
鈴鹿総合工学同好会第1回設立準備会 同好会説明
鈴鹿総合工学同好会第1回設立準備会 同好会説明鈴鹿総合工学同好会第1回設立準備会 同好会説明
鈴鹿総合工学同好会第1回設立準備会 同好会説明
 
Moodle mootjapan2013 「Moodle±5年」 English Version
Moodle mootjapan2013 「Moodle±5年」 English VersionMoodle mootjapan2013 「Moodle±5年」 English Version
Moodle mootjapan2013 「Moodle±5年」 English Version
 
Moodle ±5年 (MMJ2013inTokyo)
Moodle ±5年 (MMJ2013inTokyo)Moodle ±5年 (MMJ2013inTokyo)
Moodle ±5年 (MMJ2013inTokyo)
 
ご静聴ありがとうございました(テンプレート2)
ご静聴ありがとうございました(テンプレート2)ご静聴ありがとうございました(テンプレート2)
ご静聴ありがとうございました(テンプレート2)
 
Moodleを活用していると思われる大学のリスト
Moodleを活用していると思われる大学のリストMoodleを活用していると思われる大学のリスト
Moodleを活用していると思われる大学のリスト
 
ご清聴ありがとうございました(テンプレートその1)
ご清聴ありがとうございました(テンプレートその1)ご清聴ありがとうございました(テンプレートその1)
ご清聴ありがとうございました(テンプレートその1)
 
Moodle2管理超入門
Moodle2管理超入門Moodle2管理超入門
Moodle2管理超入門
 
5分で分かる「R.U.R.」
5分で分かる「R.U.R.」5分で分かる「R.U.R.」
5分で分かる「R.U.R.」
 
20121116 第3回越中とやまmoodleワークショップ
20121116 第3回越中とやまmoodleワークショップ20121116 第3回越中とやまmoodleワークショップ
20121116 第3回越中とやまmoodleワークショップ
 
Moodleを利用した学校ポータルサイト構築の事例紹介とネットワーク化の提案
Moodleを利用した学校ポータルサイト構築の事例紹介とネットワーク化の提案Moodleを利用した学校ポータルサイト構築の事例紹介とネットワーク化の提案
Moodleを利用した学校ポータルサイト構築の事例紹介とネットワーク化の提案
 
H24工場見学会案内
H24工場見学会案内H24工場見学会案内
H24工場見学会案内
 
2012 ce116 crowbar_snct_shirai
2012 ce116 crowbar_snct_shirai2012 ce116 crowbar_snct_shirai
2012 ce116 crowbar_snct_shirai
 

Recently uploaded

リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドKen Fukui
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」inspirehighstaff03
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfinspirehighstaff03
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」inspirehighstaff03
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slidessusere0a682
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」inspirehighstaff03
 
International Politics I - Lecture 1
International Politics I - Lecture 1International Politics I - Lecture 1
International Politics I - Lecture 1Toru Oga
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」inspirehighstaff03
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」inspirehighstaff03
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドKen Fukui
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」inspirehighstaff03
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」inspirehighstaff03
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドKen Fukui
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」inspirehighstaff03
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」inspirehighstaff03
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」inspirehighstaff03
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfyukisuga3
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドKen Fukui
 

Recently uploaded (20)

リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
 
International Politics I - Lecture 1
International Politics I - Lecture 1International Politics I - Lecture 1
International Politics I - Lecture 1
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
 

Processing上で古典的なコンソール対話型プログラミングから高度なグラフィックスプログラミングまで学習可能なフレームワークCrowbar+Tomahawkの紹介

  • 1. Crowbar : ○ バール,かなてこ  × シロツメクサの別称 ”入力用変数”の宣言 PPrroocceessssiinnggのの特特徴徴 ・Casey Reas, Ben Fryが開発 ・2008年11月末に安定版Processing1.0公開 ・インタラクティブなビジュアルプログラム作成が得意 ・インストール(USBメモリ等に展開するだけ) ・Androidアプリケーション,Arduino開発も可能 ・Windows/Mac/Linux上で開発可能 ・オブジェクト指向言語(Javaベース) ・統合開発環境が用意されている ・オープンソース 初学者や情報系以外の学習者に適する DP-16 Processing上で 古典的なコンソール対話型プログラミングから 高度なグラフィックスプログラミングまで 学習可能なフレームワークCrowbar+Tomahawkの紹介 鈴鹿工業高等専門学校 機械工学科 白井 達也 (Tatsuya SHIRAI), shirai@mech.suzuka-ct.ac.jp (@tatsuva) 今後の課題 ・ドキュメントの整備(マニュアル) ・システムメッセージの言語パック対応(多言語化含む) ・Tomahawkの拡張   正しいビューポート(一つの仮想描画領域に複数のビューポート) ・Crowbar と Tomahawk の融合   各仮想描画領域に一つずつのテキスト領域を割り当て可   (現在,TomahawkとCrowbarは別レイヤー) ・関数名の見直しなど,大幅な改良を予定 PPrroocceessssiinnggのの弱弱点点 ・キーボードから文字列を入力できない  (文字単位なら可) ・グラフィックスとして文字は表示  (座標を指定しないといけない) ・描画ウィンドウが一つしか開けない Crowbar で解決 Tomahawk で解決 フレームワーク Crowbar グラフィックスライブラリー Tomahawk ゲーム作りには 最適だが… 対話型の”テキスト表示”+”キーボード入力”の CUI(Character User Interface)の プログラム(数値解析など)は『作れない』 crowbarClass crow; void initCrowbar() { crow = startCrowbar.generate(56, 30); // 画面サイズ設定(キャラクタ×行:固定) } void Options() { crow.fontSize(14); // デフォルトフォントサイズ指定 crow.bgColor(#000000); // 背景色の指定 crow.systemColor(#ffffff, #ff0000, #8888ff); // システムフォント色指定 crow.startLogging(); // ログファイル記録開始 } void Setup() { crow.programComment("二分法のプログラム"); crow.programComment("区間aは区間bよりも小さな値(例:a = 1, b = 2)"); crow.param("区間a").setFloat(1.0).label("xa"); crow.param("区間b").setFloat(2.0).label("xb"); } // メインルーチン void Main() { float err; float a, b, c, tmp; int loopcount; // 許容誤差 err = 0.000001; // 変数の代入 a = crow.getFloat("xa"); b = crow.getFloat("xb"); 【Processingで変数の値を変更したい場合】 プログラム中の定数や文字列を直接変更 【Crowbarならば】 実行時にキーボードから入力可能 (制約)  1)キーボードからの入力はメインプログラム実行前に    まとめて入力しなくてはいけない  2)日本語は入力できない(仕様) // 繰り返し計算 loopcount = 0; displayBSM(loopcount, a, b); while (abs(b - a) >= err) { c = (a + b) / 2.0; if (sgn(f(a)) == sgn(f(c))) a = c;else b = c; loopcount++; displayBSM(loopcount, a, b); } crow.textColor(#00ff00); // 文字色変更 // 最終結果 crow.newline().textColor(#ffffff).writeln(str(loopcount) + "回で収束しました."); crow.writeln("結果は" + nf((a + b) / 2.0, 1, 10) + "です."); } // 問題の方程式 float f(float x) { float y; y = pow(x,3) - 3.0 * pow(x, 2) + 9.0 * x - 8.0; return y; } // 区間aと区間bの値を表示する関数 void displayBSM(int i, float a, float b) { crow.textColor(#ffffff).write("[" + nf(i, 3) + "] "); crow.textColor(#00ffff).write("区間A :xa = " + nf(a, 1, 10) + " f(xa) = " + nf(f(a), 1, 10)); crow.textColor(#ffffff).write(" / "); crow.textColor(#ff00ff).write("区間B :xb = " + nf(b, 1, 10) + " f(xb) = " + nf(f(b), 1, 10)); crow.newline(); } aa)) OOppttiioonnss(())内内でで””入入力力用用変変数数””をを宣宣言言 crow.param("区間a").setFloat(1.0).label("xa"); crow.param("区間b").setFloat(2.0).label("xb"); bb)) 実実行行すするるととキキーーボボーードドかかららのの入入力力をを要要求求さされれるる.. cc)) MMaaiinn(())等等でで””入入力力用用変変数数””かからら読読みみ出出すす a = crow.getFloat("xa"); b = crow.getFloat("xb"); 《《画画面面ススククロローールル,,折折りり返返しし》》 文字列は,wite(), writeln(), newlin()などで出力する (座標を意識しないで垂れ流し可能,ログファイル出力可) :自前のテキストVRAM領域を持ち,自動的にグラフィックス描画 aa)) 自自動動ススククロローールル 画面最下行にカーソル位置が到達すると上にスクロールする  (自動スクロール量は変更可能) bb)) 手手動動ススククロローールル   カーソルキーで上下にスクロール可能 cc)) 自自動動折折りり返返しし   画面の右端にカーソルが到達し たら,自動的に改行されます. (その他)  画面全消去,文字色変更,  カーソル位置移動が可能 『複数のウィンドウを開けないなら,   一つのウィンドウを分割すれば良いじゃないか』 PGraphics: Off-screen graphics buffer メインスクリーンに描画する代わりに,PGrapicsのバッファ(複数 確保可能)に対して描画(ほとんど全ての描画コマンドが対応) し,それをblend()でメインスクリーンに貼り付けることで実現 (注)各矩形領域を”Viewport”と呼んでいるが,現段階では厳密なViewportではない. ・タイリング,重ね合わせ ・順番入替え,半透明化, 枠線有無と太さ   表示/非表示切替,マウスクリック判定 Crowbarの文字出力は背景/前面を選択可能 各Viewport内は二つの座標系で座標を指定可能 (Viewportの設定例) void Setup() { crow.createView("Oval").viewBgColor(#eeeeee); // オーバルコース crow.splitViewV("Text", 0.45).viewBgColor(#ffffff);// テキスト情報 crow.splitViewH("DMC", 0.6).viewBgColor(#eeeeee).viewPivotCenter();// DMC中心視点 // ワールド座標の設定 crow.getView("Oval").world(0.0, 0.0, 12200.0, 2000.0).worldOrigin(); crow.getView("DMC").worldY(-200.0, 200.0).worldOrigin(); // 軌跡表示用の透明なビューポートの作成 crow.cloneView("Oval", "Trajectory").setTransparentView(true); } 標準の描画関数では 円(ellipse)のクリッピングはできない (Tomahawkの描画例) vp = crow.getView("Oval"); vp.fill(#ffff00).stroke(#000000).ellipse(-5500.0, 0.0, 40.0); // ゴールエリア vp.moveTo(-2000.0, 0.0); drawCircle(vp, 500.0, lw); drawCircle(vp, 300.0, lw); drawCircle(vp, 100.0, lw); 円のクリッピング成功 【【一一つつのの言言語語ででCCUUIIかかららGGUUIIままでで!! 】】 【【((先先生生がが))死死蔵蔵ししてていいるるココーードドをを復復活活!! 】】 【【一一つつのの言言語語ででCCUUIIかかららGGUUIIままでで!! 】】 【【((先先生生がが))死死蔵蔵ししてていいるるココーードドをを復復活活!! 】】 ”入力用変数”からの読み出し (Crowbarサンプルプログラム)