CAD曲線 (ベジエ曲線・Bスプライン曲線)

Slides:



Advertisements
Similar presentations
計測工学 10 データの補間 スプライン補間 1. . 復習 階差 近似多項式の次数 の決定法 等間隔階差 – 関数 y=f(x) で、 x の値 が等間隔の場合 等間隔: x 0, x 0 +h, x 0 +2h ・・・ y の値: y 0, y 1, y 2 ・・・ これらの階差は – 第1階差:
Advertisements

1 微分・ベクトル解析 (4) 講師:幹 浩文( A314) TA :西方良太 M 1 ( A305 ) A 1 03 ( 10 : 50~12 : 20 ) 【金】 https://
統計学 第3回 西山. 第2回のまとめ 確率分布=決まっている分布の 形 期待値とは平均計算 平均=合計 ÷ 個数から卒業! 平均=割合 × 値の合計 同じ平均値でも 同じ分散や標準偏差でも.
ファーストイヤー・セミナーⅡ 第13回 2次元グラフィックス(1). 2次元グラフィックス Ultra-C では、これまで利用してきた「標準入出力」 以外に「グラフィックス画面」があり、図形などを 表示できる C 言語のグラフィックスには細かな規定がなく、こ れから学ぶ内容が他の環境、システムでは利用でき.
数学のかたち 数学解析の様々なツール GRAPSE編 Masashi Sanae.
初年次セミナー 第13回 2次元グラフィックス(1).
到着時刻と燃料消費量を同時に最適化する船速・航路計画
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
初年次セミナー 第14回 2次元グラフィックス(2).
CGアニメーションの原理 基本技術 対象物体の動きや変形の設定方法 レンダリング技術
・力のモーメント ・角運動量 ・力のモーメントと角運動量の関係
伝達事項 皆さんに数学と物理の全国統一テストを受けても らいましたが、この時の試験をまた受けていただ きます。
確率・統計Ⅰ 第11回 i.i.d.の和と大数の法則 ここです! 確率論とは 確率変数、確率分布 確率変数の独立性 / 確率変数の平均
プログラミング論 I 補間
初級ミクロ経済学 -生産者行動理論- 2014年10月20日 古川徹也 2014年10月20日 初級ミクロ経済学.
数個、数十個のデータ点から その特徴をつかむ
中学数学1年 5章 平面図形 §1 図形の基礎と移動 (7時間).
円筒座標をやる前に 復習をします。 1.三角関数の復習(高校数学) 2.2次元極座標の復習(高校の数学B) 3.円筒座標の復習(前期)
シミュレーション論Ⅰ 第4回 基礎的なシミュレーション手法.
次に 円筒座標系で、 速度ベクトルと加速度ベクトルを 求める.
ブロック線図によるシミュレーション ブロック線図の作成と編集 ブロック線図の保存と読込み ブロック線図の印刷 グラフの印刷
形状モデリングにおいて,任意の自由曲面を定義する必要のある場合がある.自由曲面の表現法について説明する.
第3章 重回帰分析 ー 計量経済学 ー.
多変数関数の積分(6/3~24) 重積分(2重積分) 第6章(§5は除く) 重積分の定義 「連続関数は積分可能」
透視投影(中心射影)とは  ○ 3次元空間上の点を2次元平面へ投影する方法の一つ  ○ 投影方法   1.投影中心を定義する   2.投影平面を定義する
慣性モーメントを求めてみよう.
需要の価格弾力性 価格の変化率と需要の変化率の比.
ストークスの定理と、 渦度・循環の関係を 直感で理解する方法
10. 積分 積分・・確率モデルと動学モデルで使われる この章は計算方法の紹介 積分の定義から
金沢大学 工学部 情報システム工学科3年 岩淵 勇樹
ラスタデータの処理 -微分とその応用- 東京大学 精密工学専攻 大竹豊 資料および授業の情報は :
CGと形状モデリング 授業資料 長井 超慧(東京大学)
C 言語について 補足資料 資料および授業の情報は :
第3回 確率変数の平均 確率・統計Ⅰ ここです! 確率変数と確率分布 確率変数の同時分布、独立性 確率変数の平均 確率変数の分散
SystemKOMACO Jw_cad 基本操作(6) Ver.1
Computer Graphics 第6回 モデリング2 曲線・曲面,その他の表現手法 芝浦工業大学情報工学科 青木 義満
CGと形状モデリング 授業資料 長井 超慧(東京大学)
ネットワーク理論 Text. Part 3 pp 最短路問題 pp 最大流問題 pp.85-94
Hough変換 投票と多数決原理に基づく図形の検出
正規分布確率密度関数.
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
ポリゴンメッシュ (1) - データ構造とレンダリングに必要な計算 -
OpenGLライブラリを用いた3次元フラクタルの描画
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
デザイン情報学科 メディア情報設計 河原英紀
第12回   ディジタル画像(3) ディジタル画像処理(3)
古代の難問と曲線 (3時間目) 筑波大学大学院 教育研究科 1年                 石井寿一.
CAD曲面 東京大学 精密工学専攻 大竹豊 資料および授業の情報は :
ポリゴンメッシュ (2) - 変形と簡略化- 東京大学 精密工学専攻 大竹豊 資料および授業の情報は :
9.通信路符号化手法1 (誤り検出と誤り訂正の原理)
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
平面波 ・・・ 平面状に一様な電磁界が一群となって伝搬する波
速度ポテンシャルと 流線関数を ベクトルで理解する方法
SystemKOMACO Jw_cad 基本操作(3) Ver.1
資料 線型変換のイメージ 固有値、固有ベクトル 平賀譲(209研究室) 資料
第3回 基礎作図 基本的な作図法をしっかりと学ぶ! 本日の課題.
「データ学習アルゴリズム」 第3章 複雑な学習モデル 報告者 佐々木 稔 2003年6月25日 3.1 関数近似モデル
地理情報システム論(総)/ 国民経済計算論(商)
地理情報システム論 第4回 コンピュータシステムおける データ表現(2)
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
モデルの微分による非線形モデルの解釈 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
Cプログラミング演習 ニュートン法による方程式の求解.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
ベクトル関数の回転(カール、ローティション)
3 一次関数 1章 一次関数とグラフ §4 方程式とグラフ         (3時間).
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
空間図形の取り扱いについて.
Presentation transcript:

CAD曲線 (ベジエ曲線・Bスプライン曲線) 東京大学 精密工学専攻 大竹豊 資料および授業の情報は : http://www.den.t.u-tokyo.ac.jp/ohtake/GeomPro/

今回の授業の目的 CGやCADにおいて 昔から良く使われている曲線について学ぶ パラメトリック曲線のオフセットや曲率を学ぶ

話の流れ パラメトリック曲線とは? ベジエ曲線 接線と法線 曲率 Bスプライン曲線 空間曲線 課題はなし

数式による平面曲線の表現方法 陽(グラフ)形式 : パラメトリック形式 : 陰形式 : 扱い易いが自由度がない 扱い易く、自由度も高い 空間曲線への拡張も容易 陰形式 : 等値線とも呼ばれる タマネギ状の曲線群

パラメトリック曲線 各座標ごとに陽(グラフ)形式の関数

パラメトリック曲線のレンダリング 折れ線を用いる 0.5 秒刻みで打った点

課題 1 prog4-1 を使う 以下のパラメトリック曲線上の点列の座標を 計算する関数 “generatePoints” を完成させよ 点列の数は N とする (#define N 21 としてある) x 座標は配列 float px[N] へ代入 y 座標は配列 float py[N] へ代入 1で作成した座標を折れ線として  描くための関数 “drawCurve” を完成させよ 時間があれば前ページのように点を打ってみよ 7

話の流れ パラメトリック曲線とは? ベジエ曲線 接線と法線 曲率 Bスプライン曲線 空間曲線 課題はなし

CADでよく使われる曲線 ベジエ (Bezier) 曲線 Bスプライン曲線 ベジエ曲線 Bスプライン閉曲線

実用例 アウトラインフォント どこまでズームしても滑らか and アウトラインフォント (ベクタ画像) ドットフォント (ラスタ画像) 10

ベジエが取り組んだ問題 (車体のデザインのため) ベジエが取り組んだ問題 (車体のデザインのため) 平面(空間)上に与えられた点列をもとに、曲線を描く 点列の移動を反映して、曲線も移動するようにする デザインの変更 「制御点」 を移動

ベジエのアイディア 滑らかな関数を足して全体を表現しよう! あるデータ 掛ける 足す!

3回に1回当たるくじを 3回引いたら 1回だけ当たる確率が 一番高い ベルンシュタイン基底関数 「繰り返し試行」の確率の式 確率 t の試行を n 回繰り返して i 回起こる確率 t を0から1の変数としてみて と書く 100%当たるくじを 3回引いて 3回当たる確率は100% 3回に1回当たるくじを 3回引いたら 1回だけ当たる確率が 一番高い

y についても 同様にすると

3次ベジエ曲線 実用で最もよく使われる 制御点は4つ 始点・終点の位置とそこでの曲線の方向 を指定して曲線を描く際に便利 始点・終点の位置とそこでの曲線の方向 を指定して曲線を描く際に便利 パラメータに関して3次多項式 → 次ページ 終点へ曲線が 向かう方向 始点から曲線が 向かう方向

3次のベジエ曲線の計算 (x 座標のみ) t の3次多項式 t = 0 で 0 になる t = 1 で 2重解をもつ ※ 他の3つの B は 自力で計算すること

ベジエ曲線の性質 (メモ) 座標系を平行移動しても形は変わらない 曲線が制御点列の凸包に含まれる 座標系を 移動 原点 原点 理由 : 曲線上の点は、制御点の位置の非負の重み付き平均

課題 2 prog4-2 を使う 3次のベジエ曲線上の点を計算する関数 “generatePoints” を完成させよ 制御点の座標 (xi, yi) は配列 cx[4] と cy[4] とする 関数 “drawCurve” は、課題1からコピーする マウスクリックにより実行される関数   “moveControlPoint(float x float y)”は、 ベジエ曲線の制御点を動かすための関数である。 クリックされた点 (x,y) に最も近い制御点を見つけて その制御点の座標を (x,y) へ変更せよ。

話の流れ パラメトリック曲線とは? ベジエ曲線 接線と法線 曲率 Bスプライン曲線 空間曲線 課題はなし

接線ベクトルと法線ベクトル 接線ベクトル : 曲線の向きを表す 法線ベクトル : 接線ベクトルに垂直な向き 横向き 前向き ※ 真上から走る 自動車をみたとき

パラメトリック曲線の接線ベクトル パラメータで微分する パラメータが時間なら 速度ベクトルになる 遅い 一定時間毎に 描かれた点 パラメータが時間なら         速度ベクトルになる 一定時間毎に 描かれた点 経過時間を 無限に小さくすると微分になる 速い

ベジエ曲線の接線ベクトル 基底関数を微分すればよい 制御点は係数 3次ベジエ曲線の1番目の基底関数の微分

ベジエスプライン曲線 低い次数(3次の場合がほとんど) のベジエ曲線をつないでいく 接ベクトルが平行となるように制御点を配置する 低い次数(3次の場合がほとんど) のベジエ曲線をつないでいく 接ベクトルが平行となるように制御点を配置する 接続点の前後で 制御点を直線上に配置する 接続点 接続点 ※ ベジエ曲線は端点において、制御点が成す折れ線に接する → 時間のある人は計算で確かめてみましょう

法線ベクトル 接線ベクトルを 90度回転する 通常は長さが1の単位法線を用いる 接線ベクトル 法線ベクトル

オフセット曲線 曲線上の点を法線ベクトルの方向に移動した点の軌跡 ボール状の工具により切削加工をする時、 中心のパスは半径分のオフセット曲線 ボール状の工具により切削加工をする時、    中心のパスは半径分のオフセット曲線 r : 工具の半径 n : 単位法線ベクトル 工具 加工したい形

課題 3 prog4-2 を使う 単位法線を計算する関数 “computeNormals” を完成させよ 法線の x成分は配列 nx[N] へ代入 法線の y成分は配列 ny[N] へ代入 オフセット曲線群を描く関数 “drawOffsetCurves” を完成させよ まずは +0.5 のオフセット曲線を描け -1 ~ +1 までのオフセット曲線 20 本を 0.1 の間隔で描け

話の流れ パラメトリック曲線とは? ベジエ曲線 接線と法線 曲率 Bスプライン曲線 空間曲線 課題はなし

曲率と曲率半径 曲率半径 : ベストフィットする円の半径 曲率 : 曲率半径の逆数 (まっすぐならゼロ) 正なら法線ベクトルと同じ方向に円の中心がある 曲率 : 曲率半径の逆数 (まっすぐならゼロ) 曲率半径 (正) 曲率半径 (負) 法線ベクトル

この辺で 工具が入らない (オフセット曲線の 曲率半径の応用例 曲率半径より大きな径の工具を用いて 加工をすることはできない 工具を選ぶときに役にたつ 工具 この辺で 工具が入らない (オフセット曲線の 自己交差) 加工したい形状

: 曲線上を微小長さ動いたときの 接線ベクトルの角度の変化量 曲率の計算 曲線を局所的に円弧で近似して半径を考える 曲率半径×接ベクトルの回転量 [ラジアン] = 曲線を円弧としてみた時の長さ 微小な変化を考えて : 曲線上を微小長さ動いたときの 接線ベクトルの角度の変化量

曲率の計算方法 ※ 2階微分が 出てくる これらを使って計算すると 接線 角度の基準線

縮閉線 ベストフィットする円の中心の軌跡 曲率半径の量だけ法線方向に移動する オフセット曲線群が「折れる」点を通過する オフセット曲線群が 折れる点

点Oでの曲率半径を 三角形 OAB の 辺の長さと面積を 用いて表してみよう 折れ線データでの曲率半径の近似 3点を通る円の半径を求める 正弦定理を思い出す 点Oでの曲率半径を 三角形 OAB の 辺の長さと面積を 用いて表してみよう

課題 4 prog4-2 を使う 曲率半径を計算する関数 “computeCurvatureRadius” を完成させよ 曲率半径の値は配列 R[N] 縮閉線を描く関数  “drawEvolute” を完成させよ 変曲点で縮閉線が途切れることに注意せよ 曲率半径を前後の点を通る円の半径として近似した場合の精度を縮閉線を描き、確認せよ

話の流れ パラメトリック曲線とは? ベジエ曲線 接線と法線 曲率 Bスプライン曲線 空間曲線

ベジエ曲線の問題点 制御点が増えると次数も増える 1点の移動が全体に影響する この辺も 少し動く 30次式!

Bスプライン (ベジエスプラインとは別物) 曲線が制御点間の線分に接する 形式は (基底関数×制御点位置) の和

B-スプライン基底関数

B-スプライン基底関数の作り方 以下の畳込み積分で再帰的に定義される 1 左右が反転 t s -t -1/2 1/2 ここの面積が

話の流れ パラメトリック曲線とは? ベジエ曲線 接線と法線 曲率 Bスプライン曲線 空間曲線

パラメトリック形式の空間曲線 z 座標を増やすだけ 螺旋曲線 :

従法線とねじれ率 (空間曲線) 道路を空間曲線とみて車で走ることを考える 曲率 k : 道路の曲がり具合 ねじれ率 τ: 頭の振れ具合 接線 t : 進行方向は接線 法線 n : カーブの方向(直線では定義できない) 従法線 b : 自分に対する上向き方向 曲率 k : 道路の曲がり具合 ねじれ率 τ: 頭の振れ具合 b t n ※ 横G は無視

フレネ・セレの公式 (空間曲線) τ b b t t k 2つのフレームの 原点を一致させる n n