ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

平行ではない、かつ交わらない線を滑らかに繋げる簡易的な方法

f:id:donadonasan:20180819130600p:plain

モデリングをしていると、平行ではない、かつ交わらない(つまり、ねじれの位置にある)2本の線をなめらかにつなげる曲線を描きたくなる。たとえば、柔らかいケーブルを2点間でつなげる場合だ。検索の仕方が下手なのか、どうやればいいのか解説しているページがなかったので独自にやり方を考えてみた。

f:id:donadonasan:20180819131444p:plain

 

滑らかに繋げる の定義

「滑らかに繋げる」の条件を定義する。円弧と直線が滑らかにつながる条件は、円弧のもととなる円と直線が接すること。これを描き方で言い換えると、「円弧の中心点が直線の端部から円弧の半径の距離にいること」となる。

2本の平行な直線を滑らかに繋げる場合

2本の平行な直線を滑らかにつなげたいならば両者の中間に円弧の中心を置き、半円を描いてつなげれば、少なくとも滑らかにはつながる。

2本の交わる直線を滑らかに繋げる場合

f:id:donadonasan:20180819133343p:plain

平行ではないが延長すると交わる直線の場合は、以下の手順で滑らかに繋げることができる。

1. 直線を延長し、交点を見つける。

f:id:donadonasan:20180819135453p:plain

2. 交点を中心とした円を描き、直線と交点までの距離を確認する。

f:id:donadonasan:20180819135646p:plain

3. 等距離でない場合は、遠い方を延長して等距離にする。

f:id:donadonasan:20180819135904p:plain

4. 垂直二等分線を描くため、両端を結ぶ直線を描く。(円は邪魔なので消しました)

f:id:donadonasan:20180819140045p:plain

5. 交点から直線の中点へと線を描く(これが垂直二等分線)。円弧の中心はこの直線上にある。必要に応じて延長する。

f:id:donadonasan:20180819140423p:plain

f:id:donadonasan:20180819140525p:plain

5. 直先端部と垂直な直線が垂直二等分線と交わる場所が、円弧の中心となる。

f:id:donadonasan:20180819140848p:plain

ちなみに、SketchUp!だと2点円弧を選べば上記4, 5は不要である。

f:id:donadonasan:20180819133637p:plain

2本の平行ではなく交わらない(ねじれの位置にある)直線を滑らかに結ぶ場合

 本題である。この条件では、両方の直線に対し同時に直角となる円弧は存在しない。多分。何しろ、円弧を描くには両直線が乗っている平面が必要なのだが、これが描けないのだ。そこで、2個の円弧で繋げることにする。

1. まず、両直線を繋げる。

f:id:donadonasan:20180819142436p:plain

2. 一方の直線と、今作った直線を使って直角三角形を作る。これが1つ目の円弧が乗る仮の平面となる。

f:id:donadonasan:20180819142406p:plain

直角三角形の直角な直線同士に接するように円弧を描く。

f:id:donadonasan:20180819142647p:plain

あとで回転しやすくするため、円弧及び一部平面以外を消す。このとき、円弧につながる直角三角形の辺の一部を残したほうが、後の作業がやりやすくなる。

f:id:donadonasan:20180819143741p:plain

試しに先ほど残した辺の一部を延長すると、直線端部と交わっていることがわかる(そこに線を伸ばしたんだから当たり前であるが)。

f:id:donadonasan:20180819144022p:plain

ここまでくれば、「2本の交わる直線を滑らかに繋げる」と同じ手法が使える。ただし、このままでは半径0の円弧でつなぐことになるので、先程作った円弧を好みに応じて角度を変える。円弧を作ったときの直線を中心に回転させれば、円弧と直線の滑らかな接続を維持できる。

f:id:donadonasan:20180819144337p:plain

下記は結果の一例。

f:id:donadonasan:20180819144746p:plain

f:id:donadonasan:20180819145143p:plain