0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

2019年2月3日: Virtuoso、orient の定義と合成のまとめ

Posted at

2019年2月3日: Virtuoso、orient の定義と合成のまとめ

2019年2月3日 19時27分

Virtuoso オブジェクトで使われるオブジェクトの配置の仕方を指定する orient の定義とその合成をまとめた。${\tt MXR90}$ の定義とかよく忘れるし、合成についてはいつも分かんなくなるから。

定義

$$ {\tt R0}=\left( \begin{matrix} 1 & 0\newline 0 & 1 \end{matrix} \right) $$ $$ {\tt MX}=\left( \begin{matrix} 1 & 0\newline 0 & -1 \end{matrix} \right) $$
$$ {\tt R90}=\left( \begin{matrix} 0 & -1\newline 1 & 0 \end{matrix} \right) $$ $$ {\tt MXR90}=\left( \begin{matrix} 0 & 1\newline 1 & 0 \end{matrix} \right) ={\tt R90}\bullet{\tt MX} $$
$$ {\tt R180}=\left( \begin{matrix} -1 & 0\newline 0 & -1 \end{matrix} \right) $$ $$ {\tt MY}=\left( \begin{matrix} -1 & 0\newline 0 & 1 \end{matrix} \right) $$
$$ {\tt R270}=\left( \begin{matrix} 0 & 1\newline -1 & 0 \end{matrix} \right) $$ $$ {\tt MYR90}=\left( \begin{matrix} 0 & -1\newline -1 & 0 \end{matrix} \right) ={\tt R90}\bullet{\tt MY} $$

合成

二つの変換を合成する。「$左項\bullet右項$」の形で。

この集合に含まれる写像はどれでも合成後のものはこの集合自身に含まれる。数学的に言えば、orient の集合は「$\bullet$」合成に関して群を成してる。行列を真面目に計算せずに、この表から直接答えを検索するだけでいい。

右項
${\tt R0}$ ${\tt R90}$ ${\tt R180}$ ${\tt R270}$ ${\tt MX}$ ${\tt MXR90}$ ${\tt MY}$ ${\tt MYR90}$
左項 ${\tt R0}$ ${\tt R0}$ ${\tt R90}$ ${\tt R180}$ ${\tt R270}$ ${\tt MX}$ ${\tt MXR90}$ ${\tt MY}$ ${\tt MYR90}$
${\tt R90}$ ${\tt R90}$ ${\tt R180}$ ${\tt R270}$ ${\tt R0}$ ${\tt MXR90}$ ${\tt MY}$ ${\tt MYR90}$ ${\tt MX}$
${\tt R180}$ ${\tt R180}$ ${\tt R270}$ ${\tt R0}$ ${\tt R90}$ ${\tt MY}$ ${\tt MYR90}$ ${\tt MX}$ ${\tt MXR90}$
${\tt R270}$ ${\tt R270}$ ${\tt R0}$ ${\tt R90}$ ${\tt R180}$ ${\tt MYR90}$ ${\tt MX}$ ${\tt MXR90}$ ${\tt MY}$
${\tt MX}$ ${\tt MX}$ ${\tt MYR90}$ ${\tt MY}$ ${\tt MXR90}$ ${\tt R0}$ ${\tt R270}$ ${\tt R180}$ ${\tt R90}$
${\tt MXR90}$ ${\tt MXR90}$ ${\tt MX}$ ${\tt MYR90}$ ${\tt MY}$ ${\tt R90}$ ${\tt R0}$ ${\tt R270}$ ${\tt R180}$
${\tt MY}$ ${\tt MY}$ ${\tt MXR90}$ ${\tt MX}$ ${\tt MYR90}$ ${\tt R180}$ ${\tt R90}$ ${\tt R0}$ ${\tt R270}$
${\tt MYR90}$ ${\tt MYR90}$ ${\tt MY}$ ${\tt MXR90}$ ${\tt MX}$ ${\tt R270}$ ${\tt R180}$ ${\tt R90}$ ${\tt R0}$

関連するAPI関数

orient($O$)はアフィン変換の一部として、変位($\vec{d}$)と 拡大倍率($\alpha$)の情報と一緒に使われる。アフィン変換(transform)のデータ形式はリストでこの通り。

$${\tt(}\vec{d}\ \ O\ \ \alpha{\tt)}$$

この形式のデータが次のアフィン変換 $T(\vec{r})$ に対応する。

$$T(\vec{r})=\alpha\cdot\left(O\ \vec{r}+\vec{d}\right)$$

んで、transform に関係する関数は次の通り。

関数 機能
(dbTransformPoint point transform) point を変換 transform した点を求めて返す。
(dbTransformBBox rectangle transform) 矩形 rectangle を変換 transform した矩形を求めて返す。
(dbConcatTransform transformformer transformlatter) 変換 transformformer に続く transformlatter を合成した変換($transform_{latter}\bullet{}transform_{former}$)を求めて返す。

逆元

面白いのは ${\tt R90}$ と ${\tt R270}$ 以外は逆元が自分自身だということ。

$orient$ $orient^{-1}$ 備考
${\tt R0}$ ${\tt R0}$ ${\tt R0}$ は単位元だから当たり前。
${\tt R90}$ ${\tt R270}$
${\tt R180}$ ${\tt R180}$
${\tt R270}$ ${\tt R90}$
${\tt MX}$ ${\tt MX}$
${\tt MXR90}$ ${\tt MXR90}$ $\begin{eqnarray}{\tt MXR90}^{-1}&=&\left({\tt R90}\bullet{\tt MX}\right)^{-1}\newline&=&{\tt MX}^{-1}\bullet{\tt R90}^{-1}\newline&=&{\tt MX}\bullet{\tt R270}\newline&=&{\tt MXR90}\end{eqnarray}$
${\tt MY}$ ${\tt MY}$
${\tt MYR90}$ ${\tt MYR90}$ $\begin{eqnarray}{\tt MYR90}^{-1}&=&\left({\tt R90}\bullet{\tt MY}\right)^{-1}\newline&=&{\tt MY}^{-1}\bullet{\tt R90}^{-1}\newline&=&{\tt MY}\bullet{\tt R270}\newline&=&{\tt MYR90}\end{eqnarray}$
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?