CG

Similar documents
スライド 1

スライド 1

スライド 1

問 1 図 1 の図形を作るプログラムを作成せよ 但し ウィンドウの大きさは と し 座標の関係は図 2 に示すものとする 図 1 作成する図形 原点 (0,0) (280,0) (80,0) (180,0) (260,0) (380,0) (0,160) 図 2 座標関係 問 2

課題

Computer Graphics

Processingをはじめよう

CG

情報システム設計論II ユーザインタフェース(1)

情報システム設計論II ユーザインタフェース(1)

Processing入門マニュアル17

課題

Graphics with Processing モデリング 塩澤秀和 1

Microsoft PowerPoint P演習 第10回 関数.ppt [互換モード]

<4D F736F F D B B83578B6594BB2D834A836F815B82D082C88C60202E646F63>

もう少し数学っぽい関数もあります 関数名 abs(x) sqrt(x) sq(x) pow(x,n) exp(x) log(x) dist(x1, y1, x2, y2) constrain(v, m0, m1) lerp(v0,v1,t) map(v, low1, high1, low2, hig

Processingをはじめよう

プログラミング演習 Ⅰ 第 14 回 2017/6/5( 月 ) ゲームを作る クイズ 担当 : 紅林林

JavaScript 演習 2 1

CG

<907D945D F D C789C195CF8D5888EA97978CF68A4A97702E786C7378>

Java言語 第1回

課題

Javaプログラムの実行手順

PowerPoint プレゼンテーション

JavaScriptで プログラミング

情報システム設計論II ユーザインタフェース(1)

PowerPoint プレゼンテーション

Microsoft Word - サンプル _図面編集_.doc

Microsoft Word - Grspes…~…j…}…j…–…A…‰6.0.doc

情報システム設計論II ユーザインタフェース(1)

コンピュータグラフィックスS 演習資料

Microsoft PowerPoint P演習 第5回 当たり判定(2)【課題】.pptx

課題

課題

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

基本作図・編集

基本作図・編集

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

Microsoft PowerPoint - prog04.ppt

問題 1 次の文章は 作業環境について述べたものである を解答群 { } より選び その記号で答えよ にあてはまる適切なもの 設問 1. < 図 1>はルーラーの一部である 1に示されるインデントマーカーを移動することにより を設定することができる < 図 1> { ア. 1 行目のインデントイ.


1~50 の白丸付き数字は 記号と特殊文字 から入力できる この機能は OfficeXPSP3 の限定される Windows Update と共に最新版をダウンロードすればよい 1. 挿入 記号と特殊文字 記号と特殊文字 画面の 記号と特殊文字 タブを開く フォント は MSP ゴシック MS ゴシ

(Microsoft Word - 01PowerPoint\217\343\213\211C\203p\203^\201[\203\223\222m\216\257\225\\\216\206.doc)

Mapmakerfor の手順下絵を準備 作者の設定した大きさで作成する場合 下絵にする地図を挿入 トリミングと大きさの調整 大きさを調整した画像を保存 下絵を背景に設定 作成画面の大きさを調整 1 自分で用意した下絵を背景にする場合 下絵を背景に設定 作成画面の大きさを調整 画像が大きい場合シート

2 / 16 ページ 第 7 講データ処理 ブック ( ファイル ) を開く第 6 講で保存したブック internet.xlsx を開きましょう 1. [Office ボタン ] から [ 開く ] をクリックします 2. [ ファイルの場所 ] がデータを保存している場所になっている

Field Logic, Inc. 標準モード 3D モデル作成 配置編 Field Logic, Inc. 第 1 版

Microsoft PowerPoint - info_eng3_05ppt.pptx

参考 作成する図形のイメージ 2. 演習 パワーポイントの利用 パワーポイントは 本来プレゼン資料を作成するためのソフトウェアであるが 図形を作成する機能が 充実しているため ポスターなどイラスト作成においても活用される パワーポイントの図形作成機能は 上部タブの 挿入 にまとめられており 主に 図

問題 1 次の文章は Excel の作業環境について述べたものである 下線部の記述の正誤を判断し 解答群 { } の記号で答えよ ただし 下線部以外の記述に誤りはないものとする 設問 1. クイックアクセスツールバーには アプリケーション名やファイル名が表示される 設問 2. 数式バーのる ボタンを

ことばを覚える

Graphical User Interface 描画する

Microsoft Word - gnuplot

このうち ツールバーが表示されていないときは メニューバーから [ 表示 (V)] [ ツールバー (T)] の [ 標準のボタン (S)] [ アドレスバー (A)] と [ ツールバーを固定する (B)] をクリックしてチェックを付けておくとよい また ツールバーはユーザ ( 利用者 ) が変更

C#の基本

グラフを作成

KeyListener init addkeylistener addactionlistener addkeylistener addkeylistener( this ); this.addkeylistener( this ); KeyListener public void keytyped

エクセルの基礎を学びながら、金額を入力すると自動的に計算され、1年分の集計も表示される「おこづかい帳」を作りしょう

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

Microsoft PowerPoint - 講義資料-mlib

Transcription:

Grahics with Processig 2016-05 複雑な図形の描画 htt://vilab.org 塩澤秀和 1

2006-2016 H. SHIOZAWA htt://vilab.org 5.1 頂点列による図形描画 複雑な図形描画 begishae( 図形 ) 頂点列モードの開始 図形が空欄なら頂点を線で結ぶ ( 折れ線か多角形になる ) その他, 下記図形を指定できる POINTS, LINES, TRIANGLES, TRIANGLE_FAN, TRIANGLE_STRIP, QUADS, QUAD_STRIP edshae() 頂点列モードの終了 edshae(close): 最初の点と最後の点を結ぶ線を描く 塗りつぶし fill() とoFill() で指定できる 頂点の追加 vertex(x, y) 図形に次の頂点を加える strokeで色指定 (P2Dモード) curvevertex(x, y) 曲線でつなぐ頂点を追加する beziervertex(x1, y1, x2, y2, x3, y3) ベジエ曲線をつなげる 例 ( 塗りつぶさない多角形 ) ofill(); begishae(); vertex(30, 20); vertex(30, 75); vertex(50, 75); vertex(50, 20); edshae(close); 2

2006-2016 H. SHIOZAWA htt://vilab.org 5.2 画像の貼り付け 2D テクスチャマッピング texture( 画像 ) 画像 : PImage 型 (3.4 参照 ) テクスチャ画像の設定 begishae(), edshae() の中で指定する size 関数でP2Dモードを指定 vertex(x, y, u, v) 通常のvertex(x, y) の処理に加えて, テクスチャ画像の座標 (u, v) を対応づけて貼り付ける 画像の一部分だけも利用可能 texturemode( モード ) uv 座標の指定モード NORMAL: 0.0~1.0 IMAGE: 実際の画像の座標 PImage ic; P2Dモードで利用可能 void setu() { size(800, 800, P2D); ic = loadimage("sharaku.jg"); void draw() { backgroud(0); it w = ic.width; it h = ic.height; // ostroke(); begishae(quad_strip); texture(ic); for (float f = 0; f < 1.1; f += 0.1) { float x = mousex * si(f * PI); float y = f * h; vertex(x, y, 0, y); vertex(x + w, y, w, y); edshae(); 3

2006-2016 H. SHIOZAWA htt://vilab.org 5.3 図形の回転 拡大 ( 予習 ) 基本的な書きかた ushmatrix(); traslate(x, y); rotate(a); /* (x,y) からの相対位置で描画 */ omatrix(); 簡単な意味 ushmatrix()~omatrix() 座標の変更部分を囲む traslate(x, y) 座標原点 ( 回転 拡大の中心 ) を (x, y) に移動する rotate(a) 原点を中心に,aラジアン回転 scale(s), scale(sx, sy) 原点を中心に, 拡大または縮小 図形の回転の例 it agle = 0; void setu() { size(400, 400); rectmode(center); void draw() { backgroud(255); fill(#ffa0a0); ushmatrix(); traslate(width/2, height/2); rotate(radias(agle)); ellise(0, 0, 200, 100); omatrix(); agle++; 新しい原点 (0, 0) は新しい原点の位置 4

2006-2016 H. SHIOZAWA htt://vilab.org 5.4 タイポグラフィ ( 文字表示 ) // 描画用フォントの変数 (PFot 型 ) PFot fot1, fot2; void draw() { backgroud(255); void setu() { size(300, 300); // xy 方向の位置あわせ方法 textalig(center, BOTTOM); // Processig 用フォント // ( フォントファイルはあらかじめメニューの // Tools Create Fot... で作っておく ) fot1 = loadfot("imact-48.vlw"); // Java または OS のフォント名のフォント // ( バージョン 1 では下の行が必要 ) // hit(enable_native_fonts); fot2 = createfot(" メイリオ ", 48); // 座標指定モード ( 通常は MODEL) textmode(model); ushmatrix(); traslate(width/2, height/2); rotate(radias(framecout)); fill(128, 0, 0); // 文字の色 textfot(fot1, 32); // フォントとサイズ text("processig", 0, 0); // 文字列と座標 fill(0, 0, 128); textfot(fot2, 48); text(" 角度 " + framecout, 0, 100); omatrix(); 5

2006-2016 H. SHIOZAWA htt://vilab.org 5.5 対話的入力処理 システム変数 mousex, mousey mousepressed 既出 mousex, mousey 前フレームでのマウス位置 mousebutto 押されたマウスボタン LEFT, RIGHT, CENTER keypressed キーが押されていればtrue key 押された文字 keycode 特殊キーのキーコード コールバック関数 void mousepressed() この関数があると, マウスボタンが押されたときに自動的に実行 void mousereleased() 同様に, ボタンが離されたとき void mousemoved() マウスが動かされたとき ( ただし, ボタンは押されていないとき ) void mousedragged() マウスがドラッグされたとき void keypressed() キーが押されたとき void keyreleased() キーが離されたとき 6

2006-2016 H. SHIOZAWA htt://vilab.org 5.6 ファイル入出力 簡易ファイル入出力 loadstrigs(" ファイル ") ファイルから1 行ごとに文字列として読み出して配列に入れる 画像と同様, ファイルは事前に Sketch Add File でデータフォルダにコピーしておく Strig [] lies = loadstrigs("data.txt"); for (it i = 0; i < lies.legth; i++) { // lies[i] の処理 savestrigs(" ファイル ", 配列 ) ファイルに文字列を保存 loadstrigs の逆 ( 行単位 ) 文字列処理 float( 文字列 ), it( 文字列 ) 文字列を数値に変換 str( 数値 ) 数値を文字列に変換 hex( 整数 ) 整数を16 進文字列に変換 uhex( 文字列 ) 16 進文字列を数値に変換 trim( 文字列 ) 文字列から前後の空白を除去 joi( 文字列配列 ) 文字列の連結 slit( 文字列 ) 文字列を空白で分割 (joiの逆) 7

2006-2016 H. SHIOZAWA htt://vilab.org 5.7 演習課題 課題 マウスでクリックした点の座標を順に結ぶ 折れ線 ( または曲線 ) を描くプログラムを作成しなさい 条件 : begishae() を使って折れ線を書くこと begishaeとedshaeは, ループの中に入れない 次ページ (5.8) のプログラムを参考にして改造するとよい できた人は点が動いてアニメーションするようにしてみなさい 動的配列 ArrayList Javaの標準クラス (java.util) ArrayList< クラス名 > list = ew ArrayList< クラス名 >(); 主なメソッド.add(x).size().get(i).set(i, x).remove(i) 説明 末尾に x を追加 要素数を取得 i 番目の要素を取得 i 番目の要素を x に交換 i 番目の要素を削除 注意!! 見やすいプログラムを提出せよ Edit Auto Format でプログラムを整形できる ( かも ) itやfloatはarraylistが使えない ItList, FloatList を利用 例 ) ItList a = ew ItList() 要素の追加は.aed(x) 8

2006-2016 H. SHIOZAWA htt://vilab.org 5.8 演習課題 ( 続き ) // 頂点情報クラス class Vertex { float x, y; color c; Vertex(it x, it y) { this.x = x; this.y = y; c = color(128, 128, 255); // 動的配列を生成 ArrayList<Vertex> vlist = ew ArrayList<Vertex>(); void setu() { size(800, 600, P2D); framerate(30); void draw() { backgroud(0); // ここに begishae for (Vertex v : vlist) { // 下の 2 行を適切に変更すること fill(v.c); ellise(v.x, v.y, 10, 10); // ここに edshae // マウスボタンが押されたときの処理 void mousepressed() { // 動的配列の末尾に要素を追加 Vertex v = ew Vertex(mouseX, mousey); vlist.add(v); 9

2006-2016 H. SHIOZAWA htt://vilab.org 5.9 参考 : ファイル処理の例 // データファイルの形式 : // -100 100 の数値を 1 行に 1 ずつ入れる float[] data; void setu() { size(400, 200); oloo(); stroke(100); fill(255); rectmode(corner); void draw() { backgroud(200); lie(0, height/2, width, height/2); if (data == ull) retur; it w = width / data.legth; for (it i = 0; i < data.legth; i++) { rect(w * i + w/2, height/2, w, -data[i]); void mouseclicked() { // ファイル選択ダイアログを開く selectiut("oe", "fileselected"); // ファイル選択後の処理 void fileselected(file file) { if (file == ull) ritl("file ot foud. "); else loaddata(file.getabsolutepath()); void loaddata(strig fame) { Strig[] lies = loadstrigs(fame); data = ew float[lies.legth]; for (it i = 0; i < lies.legth; i++) data[i] = float(lies[i]); redraw(); 10