1. 序論
◎非規範的この仕様は、[ 点, 矩形, 四辺形, [ ~3x2/~4x4 ]変形n行列 ]を表現するための,数種の幾何~interfaceを述べる。 ◎ This specification describes several geometry interfaces for the representation of points, rectangles, quadrilaterals and transformation matrices with the dimension of 3x2 and 4x4.
~SVGの~interface[ `SVGPoint^I, `SVGRect^I, `SVGMatrix^I ]は、 ここに定義される各種~interfaceの別名とされることになる — それらの~interfaceを[ ~SVG / Canvas 2D Context / CSS Transforms ]から共通して利用することの支持を受けて。 `SVG11$r `HTML$r `CSS3-TRANSFORMS$r ◎ The SVG interfaces SVGPoint, SVGRect and SVGMatrix are aliasing the here defined interfaces in favor for common interfaces used by SVG, Canvas 2D Context and CSS Transforms. [SVG11] [HTML] [CSS3-TRANSFORMS]
【この訳に特有な表記規約】
◎表記記号浮動小数点数(有限でないものも含む)の比較における記号 ~EQ に添えられる “ `~SameValueZero@ ” は、[ `-0^jv, `+0^jv ]も互いに同じ (すなわち, `-0^jv ~EQ`~SameValueZero$ `+0^jv ) と見なすことを除き,通常の ~EQ と同じ意味とする (特に, `NaN^jv ~EQ`~SameValueZero$ `NaN^jv )。 記号 ~NEQ に添えられたときは ~EQ`~SameValueZero$ の否定を表すとする。
【 原文では,この比較を表すために `SameValueZero$jA() 抽象-演算も一部~利用されているが ( `SameValueZero^jA( `-0^jv, `+0^jv ) は ~T を返す)、 表記を一貫させるため,上の定義を利用することにする。 】
原文にて定義される各種~objを作成するための手続きは、 単に初期化のみを遂行するように改めている — そのままだと `WEBIDL$r における`構築子~手続き$の表記規約と整合でないので。
2. `DOMPoint^I ~interface
~2D/~3Dの `点@ は、 次の~IDL~interfaceで表現できる: ◎ A 2D or a 3D point can be represented by the following WebIDL interfaces:
[`Exposed$=(Window,Worker), `Serializable$] interface `DOMPointReadOnly@I { `DOMPointReadOnly$mc( optional `unrestricted double$ %x = 0, optional `unrestricted double$ %y = 0, optional `unrestricted double$ %z = 0, optional `unrestricted double$ %w = 1 ); [`NewObject$] static `DOMPointReadOnly$I `fromPoint$pR(optional `DOMPointInit$I %other = {}); readonly attribute `unrestricted double$ `x$pR; readonly attribute `unrestricted double$ `y$pR; readonly attribute `unrestricted double$ `z$pR; readonly attribute `unrestricted double$ `w$pR; [`NewObject$] `DOMPoint$I `matrixTransform$pR(optional `DOMMatrixInit$I %matrix = {}); [`Default$] object `toJSON@pR(); }; [`Exposed$=(Window,Worker), `Serializable$, `LegacyWindowAlias$=`SVGPoint@I] interface `DOMPoint@I : `DOMPointReadOnly$I { `DOMPoint$mc( optional `unrestricted double$ %x = 0, optional `unrestricted double$ %y = 0, optional `unrestricted double$ %z = 0, optional `unrestricted double$ %w = 1 ); [`NewObject$] static `DOMPoint$I `fromPoint$pM(optional `DOMPointInit$I %other = {}); inherit attribute `unrestricted double$ `x$pR; inherit attribute `unrestricted double$ `y$pR; inherit attribute `unrestricted double$ `z$pR; inherit attribute `unrestricted double$ `w$pR; }; dictionary `DOMPointInit@I { `unrestricted double$ `x@pI = 0; `unrestricted double$ `y@pI = 0; `unrestricted double$ `z@pI = 0; `unrestricted double$ `w@pI = 1; };
各 `DOMPointReadOnly$I ~obj %P は、 次に挙げる内部~member変数を持つものと見做される:
- `~x座標@
- `~y座標@
- `~z座標@
- `~w視座@
- これらは、 %P が表現する`点$ — 単に “%P の点” とも記される — を成す各 成分を与える。
- 【 ~3D射影空間~内の点を表現する。 `~w視座$( w-perspective )は “遠近感” を与えるためにある。 】
`DOMPointReadOnly$I ~interfaceは、 これらの変数に~accessできなければナラナイ。 それを継承している `DOMPoint$I ~interfaceは、 これらの変数の値も設定できなければナラナイ。
◎ The following algorithms assume that DOMPointReadOnly objects have the internal member variables x coordinate, y coordinate, z coordinate and w perspective. DOMPointReadOnly as well as the inheriting interface DOMPoint must be able to access and set the value of these variables.`DOMPointReadOnly$I ~objを返す各種~interfaceは、 内部~member変数~値を改変してもヨイ。 そのような~interfaceは、 その能を注釈文にて明示的に指定しなければナラナイ。 ◎ An interface returning an DOMPointReadOnly object by an attribute or function may be able to modify internal member variable values. Such an interface must specify this ability explicitly in prose.
内部~member変数は、 公開しないモノトスル。 ◎ Internal member variables must not be exposed in any way.
`DOMPointReadOnly$I の `fromPoint(other)@pR 静的~method手続きは:
- %P ~LET 新たな `DOMPointReadOnly$I ~obj
- `点を辞書で初期化する$( %P, %other )
- ~RET %P
`DOMPoint$I の `fromPoint(other)@pM 静的~method手続きは:
- %P ~LET 新たな `DOMPoint$I ~obj
- `点を辞書で初期化する$( %P, %other )
- ~RET %P
`点を辞書で初期化する@ ときは、 所与の ( `DOMPointReadOnly$I ~obj %P, `DOMPointInit$I 辞書 %other ) に対し ⇒ `点を初期化する$( %P, %other[ "`x$pI" ], %other[ "`y$pI" ], %other[ "`z$pI" ], %other[ "`w$pI" ] )
【 ~scriptが,この手続きを呼出す~methodにて %other 引数( `DOMPointInit$I )の ある~memberを省略して呼出した場合でも、 省略された~memberには — `WEBIDL$r に則って — 各自の既定~値が自動的にアテガわれる — %other 自体も省略した場合、 点 ( 0, 0, 0, 1 ) を表現することになる。 】
◎ To create a DOMPointReadOnly from a dictionary other, or to create a DOMPoint from a dictionary other, follow these steps: • Let point be a new DOMPointReadOnly or DOMPoint as appropriate. • Set point’s variables x coordinate to other’s x dictionary member, y coordinate to other’s y dictionary member, z coordinate to other’s z dictionary member and w perspective to other’s w dictionary member. • Return point.`点を初期化する@ ときは、 所与の ( `DOMPointReadOnly$I ~obj %P, %x, %y, %z, %w ) に対し ⇒ %P の ⇒# `~x座標$ ~SET %x, `~y座標$ ~SET %y, `~z座標$ ~SET %z, `~w視座$ ~SET %w
◎ ↑[ `x@pR / `y@pR / `z@pR / `w@pR ]属性の(以下同順):
- 取得子~手続きは ⇒ ~RET コレの[ `~x座標$/`~y座標$/`~z座標$/`~w視座$ ]
- ( `DOMPoint$I 用の) 設定子~手続きは ⇒ コレの[ `~x座標$/`~y座標$/`~z座標$/`~w視座$ ] ~SET 所与の値
`matrixTransform(matrix)@pR ~method手続きは: ◎ The matrixTransform(matrix) method, when invoked, must run the following steps:
- %M ~LET 新たな `DOMMatrix$I ~obj ◎ ↓
- `行列を辞書で初期化する$( %M, %matrix ) ◎ Let matrixObject be the result of invoking create a DOMMatrix from the dictionary matrix.
- ~RET `点を行列で変形する$( コレ, %M ) ◎ Return the result of invoking transform a point with a matrix, given the current point and matrixObject. The current point does not get modified.
`DOMPoint$I ~instance %point 上の `matrixTransform()$pR ~methodを, `DOMMatrix$I ~instance %matrix を引数に~callする例: ◎ In this example the method matrixTransform() on a DOMPoint instance is called with a DOMMatrix instance as argument.
var %point = new DOMPoint(5, 4); var %matrix = new DOMMatrix([2, 0, 0, 2, 10, 10]); var %transformedPoint = %point.matrixTransform(%matrix);
変数 %point は、 ( `~x座標$, `~y座標$ ) が ( 5, 4 ) に初期化された,新たな `DOMPoint$I ~objに設定される。 次に,この新たな `DOMPoint$I は、 %matrix により拡縮され並進される。 結果の %transformedPoint の ( `~x座標$, `~y座標$ ) は ( 20, 18 ) になる。 ◎ The point variable is set to a new DOMPoint object with x coordinate initialized to 5 and y coordinate initialized to 4. This new DOMPoint is now scaled and the translated by matrix. This resulting transformedPoint has the x coordinate 20 and y coordinate 18.
2.1. 点を行列で変形する
`点を行列で変形する@ ときは、 所与の ( `DOMPointReadOnly$I ~obj %P, `DOMMatrixReadOnly$I ~obj %M ) に対し:
- %変形した点 ~LET 新たな `DOMPoint$I
- ( %x, %y, %z, %w ) ~LET %P の ( `~x座標$, `~y座標$, `~z座標$, `~w視座$ ) が成す~~縦~vectorに %M の`行列$を`左から乗算-$した結果
- `点を初期化する$( %変形した点, %x, %y, %z, %w )
- ~RET %変形した点
注記: [ %M の`~2Dか$ ~EQ ~T ]~AND[ %P の`~z座標$ ~EQ`~SameValueZero$ `0^jv ]~AND[ %P の`~w視座$ ~EQ `1^jv ]ならば,これは~2D変形nになり、 他の場合は~3D変形nになる。 ◎ Note: If matrix’s is 2D is true, point’s z coordinate is 0 or -0, and point’s w perspective is 1, then this is a 2D transformation. Otherwise this is a 3D transformation.
3. `DOMRect^I ~interface
`DOMRectReadOnly$I ~interfaceを実装している~objは、 `矩形@ を表現する。 ◎ Objects implementing the DOMRectReadOnly interface represent a rectangle.
各 矩形は次の~propを持つ: ◎ Rectangles have the following properties:
- `原点@ ◎ origin
- 矩形の横方向~原点は、 矩形の`横幅~寸法$が[ 負でなければ左端 /負であれば右端 ]辺に~~位置する。 同様に,矩形の縦方向~原点は、 矩形の`縦幅~寸法$が[ 負でなければ上端 /負であれば下端 ]辺に~~位置する。 ◎ When the rectangle has a non-negative width dimension, the rectangle’s horizontal origin is the left edge; otherwise, it is the right edge. Similarly, when the rectangle has a non-negative height dimension, the rectangle’s vertical origin is the top edge; otherwise, it is the bottom edge.
- `~x座標@rT ◎ x coordinate
- 表示域の左端~辺から相対的な,矩形の`原点$の横方向~~位置を与える。 ◎ The horizontal distance between the viewport’s left edge and the rectangle’s origin.
- `~y座標@rT ◎ y coordinate
- 表示域の上端~辺から相対的な,矩形の`原点$の縦方向~~位置を与える。 ◎ The vertical distance between the viewport’s top edge and the rectangle’s origin.
- `横幅~寸法@ ◎ width dimension
- 矩形の横幅を表す — 負にもなり得る。 ◎ The width of the rectangle. Can be negative.
- `縦幅~寸法@ ◎ height dimension
- 矩形の縦幅を表す — 負にもなり得る。 ◎ The height of the rectangle. Can be negative.
[`Exposed$=(Window,Worker), `Serializable$] interface `DOMRectReadOnly@I { `DOMRectReadOnly$mc( optional `unrestricted double$ %x = 0, optional `unrestricted double$ %y = 0, optional `unrestricted double$ %width = 0, optional `unrestricted double$ %height = 0 ); [`NewObject$] static `DOMRectReadOnly$I `fromRect$rR(optional `DOMRectInit$I %other = {}); readonly attribute `unrestricted double$ `x@rR; readonly attribute `unrestricted double$ `y@rR; readonly attribute `unrestricted double$ `width@rR; readonly attribute `unrestricted double$ `height@rR; readonly attribute `unrestricted double$ `top@rR; readonly attribute `unrestricted double$ `right@rR; readonly attribute `unrestricted double$ `bottom@rR; readonly attribute `unrestricted double$ `left@rR; [`Default$] object `toJSON@rR(); }; [`Exposed$=(Window,Worker) `Serializable$, `LegacyWindowAlias$=`SVGRect@I] interface `DOMRect@I : `DOMRectReadOnly$I { `DOMRect$mc( optional `unrestricted double$ %x = 0, optional `unrestricted double$ %y = 0, optional `unrestricted double$ %width = 0, optional `unrestricted double$ %height = 0 ); [`NewObject$] static `DOMRect$I `fromRect$rM(optional `DOMRectInit$I %other = {}); inherit attribute `unrestricted double$ `x@rM; inherit attribute `unrestricted double$ `y@rM; inherit attribute `unrestricted double$ `width@rM; inherit attribute `unrestricted double$ `height@rM; }; dictionary `DOMRectInit@I { `unrestricted double$ `x@rI = 0; `unrestricted double$ `y@rI = 0; `unrestricted double$ `width@rI = 0; `unrestricted double$ `height@rI = 0; };
各 `DOMRectReadOnly$I ~objは、 次に挙げる内部~member変数を持つものと見做される ⇒ `~x座標$rT, `~y座標$rT, `横幅~寸法$, `縦幅~寸法$
`DOMRectReadOnly$I ~interfaceは、 これらの変数に~accessできなければナラナイ。 それを継承している `DOMRect$I ~interfaceは、 これらの変数の値も設定できなければナラナイ。
◎ The following algorithms assume that DOMRectReadOnly objects have the internal member variables x coordinate, y coordinate, width dimension and height dimension. DOMRectReadOnly as well as the inheriting interface DOMRect must be able to access and set the value of these variables.`DOMRectReadOnly$I ~objを返す各種~interfaceは、 内部~member変数~値を改変してもヨイ。 そのような~interfaceは、 その能を注釈文にて明示的に指定しなければナラナイ。 ◎ An interface returning an DOMRectReadOnly object by an attribute or function may be able to modify internal member variable values. Such an interface must specify this ability explicitly in prose.
内部~member変数は、 公開しないモノトスル。 ◎ Internal member variables must not be exposed in any way.
`DOMRectReadOnly$I の `fromRect(other)@rR 静的~method手続きは:
- %矩形 ~LET 新たな `DOMRectReadOnly$I ~obj
- `矩形を辞書で初期化する$( %矩形, %other )
- ~RET %矩形
`DOMRect$I の `fromRect(other)@rM 静的~method手続きは:
- %矩形 ~LET 新たな `DOMRect$I ~obj
- `矩形を辞書で初期化する$( %矩形, %other )
- ~RET %矩形
`矩形を辞書で初期化する@ ときは、 所与の ( `DOMRectReadOnly$I ~obj %R, `DOMRectInit$I 辞書 %other ) に対し ⇒ `矩形を初期化する$( %R, %other[ "`x$rI" ], %other[ "`y$rI" ], %other[ "`width$rI" ], %other[ "`height$rI" ] )
【 ここでも、 `点を辞書で初期化する$ときに述べたのと同様のことが該当する。 】
`矩形を初期化する@ ときは、 所与の ( `DOMRectReadOnly$I ~obj %R, %x, %y,%width, %height ) に対し ⇒ %R の ⇒# `~x座標$rT ~SET %x, `~y座標$rT ~SET %y, `横幅~寸法$ ~SET %width, `縦幅~寸法$ ~SET %height ◎ To create a DOMRectReadOnly from a dictionary other, or to create a DOMRect from a dictionary other, follow these steps: • Let rect be a new DOMRectReadOnly or DOMRect as appropriate. • Set rect’s variables x coordinate to other’s x dictionary member, y coordinate to other’s y dictionary member, width dimension to other’s width dictionary member and height dimension to other’s height dictionary member. • Return rect.
[ `x@r0 / `y@r0 / `width@r0 / `height@r0 ]属性の(以下同順):
- 取得子~手続きは ⇒ ~RET コレの[ `~x座標$rT/`~y座標$rT/`横幅~寸法$/`縦幅~寸法$ ]
- ( `DOMRect$I 用の)設定子~手続きは ⇒ コレの[ `~x座標$rT/`~y座標$rT/`横幅~寸法$/`縦幅~寸法$ ] ~SET 所与の値
`top@r0【!*】 取得子~手続きは ⇒ ~RET `~NaN安全な最小$( コレの`~y座標$rT, コレの`~y座標$rT ~PLUS コレの`縦幅~寸法$ ) ◎ The top attribute, on getting, must return the NaN-safe minimum of the y coordinate and the sum of the y coordinate and the height dimension.
`right@r0 取得子~手続きは ⇒ ~RET `~NaN安全な最大$( コレの`~x座標$rT, コレの`~x座標$rT ~PLUS コレの`横幅~寸法$ ) ◎ The right attribute, on getting, must return the NaN-safe maximum of the x coordinate and the sum of the x coordinate and the width dimension.
`bottom@r0 取得子~手続きは ⇒ ~RET `~NaN安全な最大$( コレの`~y座標$rT, コレの`~y座標$rT ~PLUS コレの`縦幅~寸法$ ) ◎ The bottom attribute, on getting, must return the NaN-safe maximum of the y coordinate and the sum of the y coordinate and the height dimension.
`left@r0 取得子~手続きは ⇒ ~RET `~NaN安全な最小$( コレの`~x座標$rT, コレの`~x座標$rT ~PLUS コレの`横幅~寸法$ ) ◎ The left attribute, on getting, must return the NaN-safe minimum of the x coordinate and the sum of the x coordinate and the width dimension.
4. `DOMRectList^I ~interface
[`Exposed$=Window] interface `DOMRectList@I { readonly attribute `unsigned long$ `length$m; getter `DOMRect$I? `item$m(`unsigned long$ %index); };
`length@m 取得子~手続きは ⇒ ~RET コレに結付けられた `DOMRect$I ~objの総数 ◎ The length attribute must return the total number of DOMRect objects associated with the object.
`item(index)@m ~method手続きは ⇒ ~RET [[ 0 ~LTE %index ~LT ( コレに結付けられた `DOMRect$I ~objの総数 ) ]ならば それらのうち %index 番の `DOMRect$I ~obj / ~ELSE_ ~NULL ] ◎ The item(index) method, when invoked, must return null when index is greater than or equal to the number of DOMRect objects associated with the DOMRectList. Otherwise, the DOMRect object at index must be returned. Indices are zero-based.
`DOMRectList$I が存在するのは、 旧来の~Web内容との互換性のために限られる。 新たな~APIを指定するときには、 利用してはナラナイ — 代わりに `sequence<DOMRect>^c を利用すること。 `WEBIDL$r ◎ DOMRectList only exists for compatibility with legacy Web content. When specifying a new API, DOMRectList must not be used. Use sequence<DOMRect> instead. [WEBIDL]
5. `DOMQuad^I ~interface
`DOMQuad$I ~interfaceを実装している~objは、 `四辺形@ を表現する。 ◎ Objects implementing the DOMQuad interface represents a quadrilateral.
[`Exposed$=(Window,Worker), `Serializable$] interface `DOMQuad@I { `DOMQuad$mc( optional `DOMPointInit$I %p1 = {}, optional `DOMPointInit$I %p2 = {}, optional `DOMPointInit$I %p3 = {}, optional `DOMPointInit$I %p4 = {} ); [`NewObject$] static `DOMQuad$I `fromRect$q(optional `DOMRectInit$I %other = {}); [`NewObject$] static `DOMQuad$I `fromQuad$q(optional `DOMQuadInit$I %other = {}); [`SameObject$] readonly attribute `DOMPoint$I `p1$q; [`SameObject$] readonly attribute `DOMPoint$I `p2$q; [`SameObject$] readonly attribute `DOMPoint$I `p3$q; [`SameObject$] readonly attribute `DOMPoint$I `p4$q; [`NewObject$] `DOMRect$I `getBounds$q(); [`Default$] object `toJSON@q(); }; dictionary `DOMQuadInit@I { `DOMPointInit$I `p1@qI; `DOMPointInit$I `p2@qI; `DOMPointInit$I `p3@qI; `DOMPointInit$I `p4@qI; };
各 `DOMQuad$I ~obj %Q は、 次に挙げる内部~member変数を持つものと見做される:
- `点1@
- `点2@
- `点3@
- `点4@
- これらは、 `DOMPoint$I ~objを保持し, %Q を通して[ 取得-/設定- ]できなければナラナイ。
- 作者は,これらの `DOMPoint$I ~objを改変して, %Q が表現する`四辺形$に直に影響させれる。
- 【 4 個の点には、 同一平面内などの制約はない。 四辺形を成す各~辺の順序は,これらの点の番号順に従うことになると見受けられるが、 この仕様においては,この順序に幾何学的な意味は定義されていない。 】
`DOMQuad$I ~objを返す各種~interfaceは、 内部~member変数~値を改変してもヨイ。 そのような~interfaceは、 その能を注釈文にて明示的に指定しなければナラナイ。 ◎ An interface returning a DOMQuad object by an attribute or function may be able to modify internal member variable values. Such an interface must specify this ability explicitly in prose.
内部~member変数は、 公開しないモノトスル。 ◎ Internal member variables must not be exposed in any way.
`new DOMQuad(p1, p2, p3, p4)@m 構築子~手続きは: ◎ The DOMQuad(p1, p2, p3, p4) constructor, when invoked, must run the following steps:
- %点~list ~LET « » ◎ ↓
-
« %p1, %p2, %p3, %p4 » を成す ~EACH( %p ) に対し
- %P ~LET 新たな `DOMPoint$I ~obj
- `点を辞書で初期化する$( %P, %p )
- %点~list に %P を付加する
- `四辺形を~listで初期化する$( コレ, %点~list ) ◎ Return a new DOMQuad with point 1 set to point1, point 2 set to point2, point 3 set to point3 and point 4 set to point4.
注記: 引数には[ `DOMPoint$I / `DOMPointReadOnly$I ]を渡すこともアリである。 渡された引数は、 `WEBIDL$r の規則に従って,内部的に正しい~obj型に~~変換されることになる†。 【†単に同じ名前の~propを持つ JS Object 値として解釈されるので。】 ◎ Note: It is possible to pass DOMPoint/DOMPointReadOnly arguments as well. The passed arguments will be transformed to the correct object type internally following the WebIDL rules. [WEBIDL]
`fromRect(other)@q 静的~method手続きは:
- %Q ~LET 新たな `DOMQuad$I ~obj
- `四辺形を矩形~辞書で初期化する$( %Q, %other )
- ~RET %Q
`四辺形を矩形~辞書で初期化する@ ときは、 所与の ( `DOMQuad$I ~obj %Q, `DOMRectInit$I 辞書 %other ) に対し:
- %x ~LET %other[ "`x$rI" ]【! rR → rI 】
- %y ~LET %other[ "`y$rI" ]
- %width ~LET %other[ "`width$rI" ]
- %height ~LET %other[ "`height$rI" ]
- ( %P1, %P2, %P3, %P4 ) ~LET 4 個の新たな `DOMPoint$I ~obj
- `点を初期化する$( %P1, %x, %y, 0, 1 )
- `点を初期化する$( %P2, %x ~PLUS %width, %y, 0, 1 )
- `点を初期化する$( %P3, %x ~PLUS %width, %y ~PLUS %height, 0, 1 )
- `点を初期化する$( %P4, %x, %y ~PLUS %height, 0, 1 )
- `四辺形を~listで初期化する$( %Q, « %P1, %P2, %P3, %P4 » )
`fromQuad(other)@q 静的~method手続きは:
- %Q ~LET 新たな `DOMQuad$I ~obj
- `四辺形を辞書で初期化する$( %Q, %other )
- ~RET %Q
`四辺形を辞書で初期化する@ ときは、 所与の ( `DOMQuad$I ~obj %Q, `DOMQuadInit$I 辞書 %other ) に対し:
- %点~list ~LET « »
-
« %other[ "`p1$qI" ], %other[ "`p2$qI" ], %other[ "`p3$qI" ], %other[ "`p4$qI" ] » を成す ~EACH( %p ) に対し:
- ~IF[ %p ~EQ ε ] ⇒ %p ~SET 新たな `DOMPointInit$I 値
- %P ~LET 新たな `DOMPoint$I ~obj
- `点を辞書で初期化する$( %P, %p )
- %点~list に %P を付加する
- `四辺形を~listで初期化する$( %Q, %点~list )
`四辺形を~listで初期化する@ ときは、 所与の ( `DOMQuad$I ~obj %Q, %~list ) に対し ⇒ %Q の ⇒# `点1$ ~SET %~list[0], `点2$ ~SET %~list[1], `点3$ ~SET %~list[2], `点4$ ~SET %~list[3]
◎ ↑`getBounds()@q ~method手続きは: ◎ The getBounds() method, when invoked, must run the following algorithm:
- %S ~LET コレの[ `点1$, `点2$, `点3$, `点4$ ]からなる~list ◎ Let bounds be a DOMRect object.
- %左端 ~LET `~NaN安全な最小$( %S を成す各~点の`~x座標$からなる~list ) ◎ Let left be the NaN-safe minimum of point 1’s x coordinate, point 2’s x coordinate, point 3’s x coordinate and point 4’s x coordinate.
- %上端 ~LET `~NaN安全な最小$( %S を成す各~点の`~y座標$からなる~list ) ◎ Let top be the NaN-safe minimum of point 1’s y coordinate, point 2’s y coordinate, point 3’s y coordinate and point 4’s y coordinate.
- %右端 ~LET `~NaN安全な最大$( %S を成す各~点の`~x座標$からなる~list ) ◎ Let right be the NaN-safe maximum of point 1’s x coordinate, point 2’s x coordinate, point 3’s x coordinate and point 4’s x coordinate.
- %下端 ~LET `~NaN安全な最大$( %S を成す各~点の`~y座標$からなる~list ) ◎ Let bottom be the NaN-safe maximum of point 1’s y coordinate, point 2’s y coordinate, point 3’s y coordinate and point 4’s y coordinate.
- %R ~LET 新たな `DOMRect$I ~obj ◎ ↓
- `矩形を初期化する$( %R, %左端, %上端, %右端 − %左端, %下端 − %上端 ) ◎ ↓
- ~RET %R ◎ Set x coordinate of bounds to left, y coordinate of bounds to top, width dimension of bounds to right - left and height dimension of bounds to bottom - top. ◎ Return bounds.
次の例では、 `new DOMQuad()$m 構築子は、 `DOMPoint$I / `DOMPointInit$I 型の値を引数に~callされている。 両~型の引数とも受容され,利用できる: ◎ In this example the DOMQuad constructor is called with arguments of type DOMPoint and DOMPointInit. Both arguments are accepted and can be used.
var %point = new DOMPoint(2, 0); var %quad1 = new DOMQuad(%point, {x: 12, y: 0}, {x: 12, y: 10}, {x: 2, y: 10});
上による結果, および次による結果の `DOMQuad$I %quad1, %quad2 の互いに対応する属性が表現する点は、 互いに等価になる: ◎ The attribute values of the resulting DOMQuad quad1 above are also equivalent to the attribute values of the following DOMQuad quad2:
var %rect = new DOMRect(2, 0, 10, 10); var %quad2 = DOMQuad.fromRect(%rect);
不規則な四辺形の例: ◎ This is an example of an irregular quadrilateral:
new DOMQuad({x: 40, y: 25}, {x: 180, y: 8}, {x: 210, y: 150}, {x: 10, y: 180});
6. `DOMMatrix^I ~interface
`DOMMatrix$I / `DOMMatrixReadOnly$I ~interfaceは、 ~graphicな文脈における変形nを表すための,数学的な `行列@ を表現する。 以下の各~節では、 この~interfaceの詳細を述べる。 ◎ The DOMMatrix and DOMMatrixReadOnly interfaces each represent a mathematical matrix with the purpose of describing transformations in a graphical context. The following sections describe the details of the interface.
%m11 | %m21 | %m31 | %m41 |
%m12 | %m22 | %m32 | %m42 |
%m13 | %m23 | %m33 | %m43 |
%m14 | %m24 | %m34 | %m44 |
以下の節では、 次の用語が用いられる: ◎ In the following sections, terms have the following meaning:
- `右から乗算-@ ( post-multiply )
- 項 %A に項 %B を右から乗算するときは、 %A を %A ~MUL %B の結果に改変する。 ◎ Term A post-multiplied by term B is equal to A · B.
- 【 この ~MUL は行列の乗算。 %A や %B は正方~行列に限られない。 】【 原文には, “( %A を)改変する” とは記されていないが、 概ね,そのように演算することが意図されており、 この区別は重要なので,ここでは明示的に記す。 改変しない必要がある場合、 下の`乗算-$を用いて述べることにする。 】
- `左から乗算-@ ( pre-multiply )
- 項 %A に項 %B を左から乗算するときは、 %A を %B ~MUL %A の結果に改変する。 ◎ Term A pre-multiplied by term B is equal to B · A.
- 【 点 %A に行列 %B を左から乗算する場合、 %A を[ その各~成分が成す~~縦~vectorによる 1×4 行列 ]と見なすことになる。 】
- `乗算-@ ( multiply )
- 項 %A, %B を乗算するときは、 %A ~MUL %B の結果を返す( %A, %B は改変されない)。 ◎ Multiply term A by term B is equal to A · B.
- 【 可換でないので、 %A, %B の順序は有意になる。 】
[`Exposed$=(Window,Worker), `Serializable$] interface `DOMMatrixReadOnly@I { `DOMMatrixReadOnly$mc(optional (`DOMString$ or `sequence$<`unrestricted double$>) %init); [`NewObject$] static `DOMMatrixReadOnly$I `fromMatrix$xR(optional `DOMMatrixInit$I %other = {}); [`NewObject$] static `DOMMatrixReadOnly$I `fromFloat32Array$xR(`Float32Array$I %array32); [`NewObject$] static `DOMMatrixReadOnly$I `fromFloat64Array$xR(`Float64Array$I %array64); /* これらの属性は、 単に,~4x4行列のある成分の別名 ◎ These attributes are simple aliases for certain elements of the 4x4 matrix */ readonly attribute `unrestricted double$ `a$xR; readonly attribute `unrestricted double$ `b$xR; readonly attribute `unrestricted double$ `c$xR; readonly attribute `unrestricted double$ `d$xR; readonly attribute `unrestricted double$ `e$xR; readonly attribute `unrestricted double$ `f$xR; readonly attribute `unrestricted double$ `m11$xR; readonly attribute `unrestricted double$ `m12$xR; readonly attribute `unrestricted double$ `m13$xR; readonly attribute `unrestricted double$ `m14$xR; readonly attribute `unrestricted double$ `m21$xR; readonly attribute `unrestricted double$ `m22$xR; readonly attribute `unrestricted double$ `m23$xR; readonly attribute `unrestricted double$ `m24$xR; readonly attribute `unrestricted double$ `m31$xR; readonly attribute `unrestricted double$ `m32$xR; readonly attribute `unrestricted double$ `m33$xR; readonly attribute `unrestricted double$ `m34$xR; readonly attribute `unrestricted double$ `m41$xR; readonly attribute `unrestricted double$ `m42$xR; readonly attribute `unrestricted double$ `m43$xR; readonly attribute `unrestricted double$ `m44$xR; readonly attribute `boolean$ `is2D$xR; readonly attribute `boolean$ `isIdentity$xR; /* 変異-不能な変形~method ◎ Immutable transform methods */ [`NewObject$] `DOMMatrix$I `translate$xR( optional `unrestricted double$ %tx = 0, optional `unrestricted double$ %ty = 0, optional `unrestricted double$ %tz = 0); [`NewObject$] `DOMMatrix$I `scale$xR( optional `unrestricted double$ %scaleX = 1, optional `unrestricted double$ %scaleY, optional `unrestricted double$ %scaleZ = 1, optional `unrestricted double$ %originX = 0, optional `unrestricted double$ %originY = 0, optional `unrestricted double$ %originZ = 0); [NewObject] DOMMatrix `scaleNonUniform$xR( optional `unrestricted double$ %scaleX = 1, optional `unrestricted double$ %scaleY = 1); [`NewObject$] `DOMMatrix$I `scale3d$xR( optional `unrestricted double$ %scale = 1, optional `unrestricted double$ %originX = 0, optional `unrestricted double$ %originY = 0, optional `unrestricted double$ %originZ = 0); [`NewObject$] `DOMMatrix$I `rotate$xR( optional `unrestricted double$ %rotX = 0, optional `unrestricted double$ %rotY, optional `unrestricted double$ %rotZ); [`NewObject$] `DOMMatrix$I `rotateFromVector$xR( optional `unrestricted double$ %x = 0, optional `unrestricted double$ %y = 0); [`NewObject$] `DOMMatrix$I `rotateAxisAngle$xR( optional `unrestricted double$ %x = 0, optional `unrestricted double$ %y = 0, optional `unrestricted double$ %z = 0, optional `unrestricted double$ %angle = 0); [`NewObject$] `DOMMatrix$I `skewX$xR(optional `unrestricted double$ %sx = 0); [`NewObject$] `DOMMatrix$I `skewY$xR(optional `unrestricted double$ %sy = 0); [`NewObject$] `DOMMatrix$I `multiply$xR(optional `DOMMatrixInit$I %other = {}); [`NewObject$] `DOMMatrix$I `flipX$xR(); [`NewObject$] `DOMMatrix$I `flipY$xR(); [`NewObject$] `DOMMatrix$I `inverse$xR(); [`NewObject$] `DOMPoint$I `transformPoint$xR(optional `DOMPointInit$I %point = {}); [`NewObject$] `Float32Array$I `toFloat32Array$xR(); [`NewObject$] `Float64Array$I `toFloat64Array$xR(); [`Exposed$=Window] `stringifier$xR; [`Default$] object `toJSON@xR(); }; [`Exposed$=(Window,Worker), `Serializable$, `LegacyWindowAlias$=(`SVGMatrix@I,`WebKitCSSMatrix@I)] interface `DOMMatrix@I : `DOMMatrixReadOnly$I { `DOMMatrix$mc(optional (`DOMString$ or `sequence$<`unrestricted double$>) %init); [`NewObject$] static `DOMMatrix$I `fromMatrix$xM(optional `DOMMatrixInit$I %other = {}); [`NewObject$] static `DOMMatrix$I `fromFloat32Array$xM(`Float32Array$I %array32); [`NewObject$] static `DOMMatrix$I `fromFloat64Array$xM(`Float64Array$I %array64); /* これらの属性は、 単に,~4x4行列のある成分の別名 ◎ These attributes are simple aliases for certain elements of the 4x4 matrix */ inherit attribute `unrestricted double$ `a$xR; inherit attribute `unrestricted double$ `b$xR; inherit attribute `unrestricted double$ `c$xR; inherit attribute `unrestricted double$ `d$xR; inherit attribute `unrestricted double$ `e$xR; inherit attribute `unrestricted double$ `f$xR; inherit attribute `unrestricted double$ `m11$xR; inherit attribute `unrestricted double$ `m12$xR; inherit attribute `unrestricted double$ `m13$xR; inherit attribute `unrestricted double$ `m14$xR; inherit attribute `unrestricted double$ `m21$xR; inherit attribute `unrestricted double$ `m22$xR; inherit attribute `unrestricted double$ `m23$xR; inherit attribute `unrestricted double$ `m24$xR; inherit attribute `unrestricted double$ `m31$xR; inherit attribute `unrestricted double$ `m32$xR; inherit attribute `unrestricted double$ `m33$xR; inherit attribute `unrestricted double$ `m34$xR; inherit attribute `unrestricted double$ `m41$xR; inherit attribute `unrestricted double$ `m42$xR; inherit attribute `unrestricted double$ `m43$xR; inherit attribute `unrestricted double$ `m44$xR; /* 変異-可能な変形~method ◎ Mutable transform methods */ `DOMMatrix$I `multiplySelf$xM(optional `DOMMatrixInit$I %other = {}); `DOMMatrix$I `preMultiplySelf$xM(optional `DOMMatrixInit$I %other = {}); `DOMMatrix$I `translateSelf$xM( optional `unrestricted double$ %tx = 0, optional `unrestricted double$ %ty = 0, optional `unrestricted double$ %tz = 0); `DOMMatrix$I `scaleSelf$xM( optional `unrestricted double$ %scaleX = 1, optional `unrestricted double$ %scaleY, optional `unrestricted double$ %scaleZ = 1, optional `unrestricted double$ %originX = 0, optional `unrestricted double$ %originY = 0, optional `unrestricted double$ %originZ = 0); `DOMMatrix$I `scale3dSelf$xM( optional `unrestricted double$ %scale = 1, optional `unrestricted double$ %originX = 0, optional `unrestricted double$ %originY = 0, optional `unrestricted double$ %originZ = 0); `DOMMatrix$I `rotateSelf$xM( optional `unrestricted double$ %rotX = 0, optional `unrestricted double$ %rotY, optional `unrestricted double$ %rotZ); `DOMMatrix$I `rotateFromVectorSelf$xM( optional `unrestricted double$ %x = 0, optional `unrestricted double$ %y = 0); `DOMMatrix$I `rotateAxisAngleSelf$xM( optional `unrestricted double$ %x = 0, optional `unrestricted double$ %y = 0, optional `unrestricted double$ %z = 0, optional `unrestricted double$ %angle = 0); `DOMMatrix$I `skewXSelf$xM(optional `unrestricted double$ %sx = 0); `DOMMatrix$I `skewYSelf$xM(optional `unrestricted double$ %sy = 0); `DOMMatrix$I `invertSelf$xM(); [`Exposed$=Window] `DOMMatrix$I `setMatrixValue$xM(`DOMString$ %transformList); }; dictionary `DOMMatrix2DInit@I { `unrestricted double$ `a@xI; `unrestricted double$ `b@xI; `unrestricted double$ `c@xI; `unrestricted double$ `d@xI; `unrestricted double$ `e@xI; `unrestricted double$ `f@xI; `unrestricted double$ `m11@xI; `unrestricted double$ `m12@xI; `unrestricted double$ `m21@xI; `unrestricted double$ `m22@xI; `unrestricted double$ `m41@xI; `unrestricted double$ `m42@xI; }; dictionary `DOMMatrixInit@I : `DOMMatrix2DInit$I { `unrestricted double$ `m13@xI = 0; `unrestricted double$ `m14@xI = 0; `unrestricted double$ `m23@xI = 0; `unrestricted double$ `m24@xI = 0; `unrestricted double$ `m31@xI = 0; `unrestricted double$ `m32@xI = 0; `unrestricted double$ `m33@xI = 1; `unrestricted double$ `m34@xI = 0; `unrestricted double$ `m43@xI = 0; `unrestricted double$ `m44@xI = 1; `boolean$ `is2D@xI; };
各 `DOMMatrixReadOnly$I ~obj %M は、 次に挙げる内部~member変数を持つものと見做される:
- `m11@xE, `m12@xE, `m13@xE, `m14@xE, `m21@xE, `m22@xE, `m23@xE, `m24@xE, `m31@xE, `m32@xE, `m33@xE, `m34@xE, `m41@xE, `m42@xE, `m43@xE, `m44@xE
- %M が表現する`行列$ — 単に “%M の行列” とも記される — を成す各 成分を与える。 それぞれ、 `~4x4抽象-行列$の同~名の成分に対応する。
- `列主導順@ とは、 上に挙げた順による成分の順序を意味する。
- `~2Dか$
- 真偽値。 ~T ならば、 %M は~2D行列を表現することを指示する (が、 逆は真でない)。
`DOMMatrixReadOnly$I ~interfaceは、 これらの変数に~accessできなければナラナイ。 それを継承している `DOMMatrix$I ~interfaceは、 これらの変数の値も設定できなければナラナイ。
◎ The following algorithms assume that DOMMatrixReadOnly objects have the internal member variables m11 element, m12 element, m13 element, m14 element, m21 element, m22 element, m23 element, m24 element, m31 element, m32 element, m33 element, m34 element, m41 element, m42 element, m43 element, m44 element and is 2D. DOMMatrixReadOnly as well as the inheriting interface DOMMatrix must be able to access and set the value of these variables.`DOMMatrixReadOnly$I ~objを返す各種~interfaceは、 内部~member変数~値を改変してもヨイ。 そのような~interfaceは、 その能を注釈文にて明示的に指定しなければナラナイ。 ◎ An interface returning an DOMMatrixReadOnly object by an attribute or function may be able to modify internal member variable values. Such an interface must specify this ability explicitly in prose.
内部~member変数は、 公開しないモノトスル。 ◎ Internal member variables must not be exposed in any way.
`DOMMatrix$I / `DOMMatrixReadOnly$I ~interfaceは `SVG11$r の `SVGMatrix^I ~interfaceを置換する。 ◎ The DOMMatrix and DOMMatrixReadOnly interfaces replace the SVGMatrix interface from SVG. [SVG11]
6.1. `DOMMatrix2DInit^I, `DOMMatrixInit^I 辞書
`~2D用に辞書を検証して修復する@ ときは、 所与の ( [ `DOMMatrix2DInit$I / `DOMMatrixInit$I ]辞書 %辞書 ) に対し,次を走らす: ◎ To validate and fixup (2D) a DOMMatrix2DInit or DOMMatrixInit dictionary dict, run the following steps:
-
下の表t A を成す ~EACH( %行 ) に対し:
- %m1 ~LET %辞書[ %行 の 1 列目の~member名 ]
- %m2 ~LET %辞書[ %行 の 2 列目の~member名 ]
- ~IF[ %m1 ~NEQ ε ]~AND[ %m2 ~NEQ ε ]~AND[ %m1 ~NEQ`~SameValueZero$ %m2 ] ⇒ ~THROW `TypeError$E
◎ If if at least one of the following conditions are true for dict, then throw a TypeError exception and abort these steps. • a and m11 are both present and SameValueZero(a, m11) is false. • b and m12 are both present and SameValueZero(b, m12) is false. • c and m21 are both present and SameValueZero(c, m21) is false. • d and m22 are both present and SameValueZero(d, m22) is false. • e and m41 are both present and SameValueZero(e, m41) is false. • f and m42 are both present and SameValueZero(f, m42) is false.表t A "`m11$xI" "`a$xI" 1 "`m12$xI" "`b$xI" 0 "`m21$xI" "`c$xI" 0 "`m22$xI" "`d$xI" 1 "`m41$xI" "`e$xI" 0 "`m42$xI" "`f$xI" 0 -
上の表t A を成す ~EACH( %行 ) に対し:
- %m1 ~LET %辞書[ %行 の 1 列目の~member名 ]
- %m2 ~LET %辞書[ %行 の 2 列目の~member名 ]
- ~IF[ %m1 ~EQ ε ] ⇒ %辞書[ %行 の 1 列目の~member名 ] ~SET [ %m2 ~NEQ ε ならば %m2 / ~ELSE_ %行 の 3 列目の値 ]
`辞書を検証して修復する@ ときは、 所与の ( `DOMMatrixInit$I 辞書 %辞書 ) に対し,次を走らす: ◎ To validate and fixup a DOMMatrixInit dictionary dict, run the following steps:
- `~2D用に辞書を検証して修復する$( %辞書 ) ◎ Validate and fixup (2D) dict.
- %~2Dか ~LET ~IS[ どの %~member名 ~IN { "`m13$xI", "`m14$xI", "`m23$xI", "`m24$xI", "`m31$xI", "`m32$xI", "`m33$xI", "`m34$xI", "`m43$xI", "`m44$xI" } に対しても,次が満たされる ] ⇒ %辞書[ %~member名 ] ~EQ`~SameValueZero$ %辞書 の %~member名 ~memberの既定~値 ◎ ↓
- ~IF[ %~2Dか ~EQ ~F ]~AND[ %辞書[ "`is2D$xI" ] ~EQ ~T ] ⇒ ~THROW `TypeError$E ◎ If is2D is true and: at least one of m13, m14, m23, m24, m31, m32, m34, m43 are present with a value other than 0 or -0, or at least one of m33, m44 are present with a value other than 1, then throw a TypeError exception and abort these steps.
- %辞書[ "`is2D$xI" ] ~SET %~2Dか ◎ If is2D is not present and at least one of m13, m14, m23, m24, m31, m32, m34, m43 are present with a value other than 0 or -0, or at least one of m33, m44 are present with a value other than 1, set is2D to false. ◎ If is2D is still not present, set it to true.
6.2. 文字列を構文解析して抽象-行列を得る
`行列として構文解析する@ ときは、 所与の ( 文字列 %変形~list~文字列 ) に対し,次を走らせた結果を返す: ◎ To parse a string into an abstract matrix, given a string transformList, means to run the following steps. It will either return a 4x4 abstract matrix and a boolean 2dTransform, or failure.
- ( %行列, %~2Dか ) ~LET ( 単位i行列を成す`~4x4抽象-行列$, ~T ) ◎ ↓
- ~IF[ %変形~list~文字列 ~EQ 空~文字列 ] ⇒ ~RET ( %行列, %~2Dか ) ◎ If transformList is the empty string, set it to the string "matrix(1, 0, 0, 1, 0, 0)".
- %変形~list ~LET ~CSS `transform$p ~propの文法を与える下で, %変形~list~文字列 を`構文解析-$した結果 `CSS3-TRANSFORMS$r `CSS3-SYNTAX$r ◎ Parse transformList into parsedValue given the grammar for the CSS transform property. The result will be a <transform-list>, the keyword none, or failure.\
-
%変形~list に応じて:
- `失敗^i( `none^v 以外の~keywordが利用されている ) ⇒ ~RET ( ε, ε )
- ~keyword `none^v ⇒ ~RET ( %行列, %~2Dか )
- `transform-list$t ⇒ ~IF[ %変形~list 内の,ある `transform-function$t 内の ある `length$t 値の単位は、 `絶対~長さ$でない ] ⇒ ~RET ( ε, ε )
-
%変形~list を成す ~EACH( `transform-function$t %変形-関数 ) に対し:
- ~IF[ %変形-関数 は`~3D変形-関数$である ] ⇒ %~2Dか ~SET ~F
- %行列 に次で与えられる行列を`右から乗算-$する ⇒ `変形-関数@~TRANSFORM#transform-functions$, および その[ `~2D行列@~TRANSFORM#mathematical-description$ / `~3D行列@~TRANSFORM2#mathematical-description$ ]による数学的~記述に従って, %変形-関数 が表現する`~4x4抽象-行列$ `CSS3-TRANSFORMS$r
- ~RET ( %行列, %~2Dか ) ◎ Return matrix and 2dTransform.
6.3. `DOMMatrixReadOnly^I / `DOMMatrix^I ~objの初期化-法
`行列を~2D行列に初期化する@ ときは、 所与の ( `DOMMatrixReadOnly$I ~obj %M, ~list « %a, %b, %c, %d, %e, %f » ) に対し, %M の各種 内部~変数を次に従って設定する: ◎ To create a 2d matrix of type type being either DOMMatrixReadOnly or DOMMatrix, with a sequence init of 6 elements, follow these steps:
- ( `m11$xE, `m12$xE, `m21$xE, `m22$xE, `m41$xE, `m42$xE ) ~SET ( %a, %b, %c, %d, %e, %f ) ◎ Let matrix be a new instance of type. ◎ Set m11 element, m12 element, m21 element, m22 element, m41 element and m42 element to the values of init in order starting with the first value.
- ( `m13$xE, `m14$xE, `m23$xE, `m24$xE, `m31$xE, `m32$xE, `m34$xE, `m43$xE ) ~SET ( 0, 0, 0, 0, 0, 0, 0, 0 ) ◎ Set m13 element, m14 element, m23 element, m24 element, m31 element, m32 element, m34 element, and m43 element to 0.
- ( `m33$xE, `m44$xE ) ~SET ( 1, 1 ) ◎ Set m33 element and m44 element to 1.
- `~2Dか$ ~SET ~T ◎ Set is 2D to true. ◎ Return matrix
`行列を~3D行列に初期化する@ ときは、 所与の ( `DOMMatrixReadOnly$I ~obj %M, ~listまたは~4x4行列 %行列 ) に対し:
- ~IF[ %行列 は~listである ] ⇒ %行列 ~SET %行列 により,各 成分~値が`列主導順$で与えられる~4x4行列
- %M の行列 ~SET %行列,
- %M の`~2Dか$ ~SET ~F
[ `new DOMMatrixReadOnly(init)@m / `new DOMMatrix(init)@m ]構築子~手続きは、 %init に応じて: ◎ The DOMMatrixReadOnly(init) and the DOMMatrix(init) constructors must follow these steps:
- ε ⇒# `行列を~2D行列に初期化する$( コレ, « 1, 0, 0, 1, 0, 0 » ); ◎ If init is omitted • Return the result of invoking create a 2d matrix of type DOMMatrixReadOnly or DOMMatrix as appropriate, with the sequence [1, 0, 0, 1, 0, 0].
-
`DOMString$I である: ◎ If init is a DOMString
- ~IF[ `現在の大域~obj$は `Window$I ~objでない ] ⇒ ~THROW `TypeError$E ◎ If current global object is not a Window object, then throw a TypeError exception.
- ( %行列, %~2Dか ) ~LET `行列として構文解析する$( %init ) ◎ Parse init into an abstract matrix, and let matrix and 2dTransform be the result.\
- ~IF[ %行列 ~EQ ε ] ⇒ ~THROW `SyntaxError$E ◎ If the result is failure, then throw a "SyntaxError" DOMException.
-
~IF[ %~2Dか ~EQ ~T ]:
- %成分~list ~LET %行列 の[ %m11, %m12, %m21, %m22, %m41, %m42 ]成分からなる同順の~list
- `行列を~2D行列に初期化する$( コレ, %成分~list )
- ~ELSE ⇒ `行列を~3D行列に初期化する$( コレ, %行列 ) ◎ Otherwise • Return the result of invoking create a 3d matrix of type DOMMatrixReadOnly or DOMMatrix as appropriate, with a sequence of numbers, the values being the 16 elements of matrix.
- ~IDL連列~型である ⇒ `行列を~listで初期化する$( コレ, %init ) ◎ If init is a sequence with 6 elements ◎ Return the result of invoking create a 2d matrix of type DOMMatrixReadOnly or DOMMatrix as appropriate, with the sequence init. ◎ If init is a sequence with 16 elements ◎ Return the result of invoking create a 3d matrix of type DOMMatrixReadOnly or DOMMatrix as appropriate, with the sequence init. ◎ Otherwise ◎ Throw a TypeError exception.
`DOMMatrixReadOnly$I の `fromMatrix(other)@xR 静的~method手続きは:
- %M ~LET 新たな `DOMMatrixReadOnly$I ~obj
- `行列を辞書で初期化する$( %M, %other )
- ~RET %M
`DOMMatrix$I の `fromMatrix(other)@xM 静的~method手続きは:
- %M ~LET 新たな `DOMMatrix$I ~obj
- `行列を辞書で初期化する$( %M, %other )
- ~RET %M
`行列を~2D辞書で初期化する@ ときは、 所与の ( `DOMMatrixReadOnly$I ~obj %M, `DOMMatrix2DInit$I 辞書 %other ) に対し,次の手続きに従う: ◎ To create a DOMMatrixReadOnly from a 2D dictionary other or to create a DOMMatrix from a 2D dictionary other, follow these steps:
- `~2D用に辞書を検証して修復する$( %other ) ◎ Validate and fixup (2D) other.
- `行列を~2D行列に初期化する$( %M, « %other[ "`m11$xI" ], %other[ "`m12$xI" ], %other[ "`m21$xI" ], %other[ "`m22$xI" ], %other[ "`m41$xI" ], %other[ "`m42$xI" ] » ) ◎ Return the result of invoking create a 2d matrix of type DOMMatrixReadOnly or DOMMatrix as appropriate, with a sequence of numbers, the values being the 6 elements m11, m12, m21, m22, m41 and m42 of other in the given order.
`行列を辞書で初期化する@ ときは、 所与の ( `DOMMatrixReadOnly$I ~obj %M, `DOMMatrixInit$I 辞書 %other ) に対し,次の手続きに従う: ◎ To create a DOMMatrixReadOnly from a dictionary other or to create a DOMMatrix from a dictionary other, follow these steps:
- `辞書を検証して修復する$( %other ) ◎ Validate and fixup other.
- ~IF[ %other[ "`is2D$xI" ] ~EQ ~T ] ⇒ `行列を~2D行列に初期化する$( %M, « %other[ "`m11$xI" ], %other[ "`m12$xI" ], %other[ "`m21$xI" ], %other[ "`m22$xI" ], %other[ "`m41$xI" ], %other[ "`m42$xI" ] » ) ◎ If the is2D dictionary member of other is true • Return the result of invoking create a 2d matrix of type DOMMatrixReadOnly or DOMMatrix as appropriate, with a sequence of numbers, the values being the 6 elements m11, m12, m21, m22, m41 and m42 of other in the given order.
- ~ELSE ⇒ `行列を~3D行列に初期化する$( %M, 各~成分が %other の同~名の~memberで与えられる~4x4行列 ) ◎ Otherwise • Return the result of invoking create a 3d matrix of type DOMMatrixReadOnly or DOMMatrix as appropriate, with a sequence of numbers, the values being the 16 elements m11, m12, m13, ..., m44 of other in the given order.
`DOMMatrixReadOnly$I の `fromFloat32Array(array32)@xR 静的~method手続きは:
- %M ~LET 新たな `DOMMatrixReadOnly$I ~obj
- `行列を~listで初期化する$( %M, %array32 )
- ~RET %M
`DOMMatrix$I の `fromFloat32Array(array32)@xM 静的~method手続きは:
- %M ~LET 新たな `DOMMatrix$I ~obj
- `行列を~listで初期化する$( %M, %array32 )
- ~RET %M
`DOMMatrixReadOnly$I の `fromFloat64Array(array64)@xR 静的~method手続きは:
- %M ~LET 新たな `DOMMatrixReadOnly$I ~obj
- `行列を~listで初期化する$( %M, %array64 )
- ~RET %M
`DOMMatrix$I の `fromFloat64Array(array64)@xM 静的~method手続きは:
- %M ~LET 新たな `DOMMatrix$I ~obj
- `行列を~listで初期化する$( %M, %array64 )
- ~RET %M
`行列を~listで初期化する@ ときは、 所与の ( `DOMMatrixReadOnly$I ~obj %M, %成分~list ) に対し, %成分~list の長さに応じて:
- 6 個
- `行列を~2D行列に初期化する$( %M, %成分~list )
- 16 個
- `行列を~3D行列に初期化する$( %M, %成分~list )
- その他
- ~THROW `TypeError$E
6.4. `DOMMatrix^I 属性
次に挙げる 16 個の属性は、 それぞれ,当の属性と同~名の`行列~成分$に対応する ⇒# `m11@xR, `m12@xR, `m13@xR, `m14@xR, `m21@xR, `m22@xR, `m23@xR, `m24@xR, `m31@xR, `m32@xR, `m33@xR, `m34@xR, `m41@xR, `m42@xR, `m43@xR, `m44@xR
- これら各~属性の取得子~手続きは、 いずれも[ 当の属性に対応する,コレの`行列~成分$ ]の値を返す。
-
これら各~属性の( `DOMMatrix$I 用の)設定子~手続きは、 いずれも:
- [ 当の属性に対応する,コレの`行列~成分$ ]の値 ~SET 所与の値
- ~IF[ 当の属性は[ `m11$xR, `m12$xR, `m21$xR, `m22$xR, `m41$xR, `m42$xR ]のいずれかである ] ⇒ ~RET
- ~IF[ 所与の値 ~EQ`~SameValueZero$ [ 当の属性と同~名の `DOMMatrixInit$I の~member ]の既定~値 ] ⇒ ~RET
- コレの`~2Dか$ ~SET ~F
次の表tの 1 列目に挙げる属性の[ 取得子~手続き/設定子~手続き ]は、 同じ行の 2 列目に挙げる属性のそれと同じにふるまうモノトスル:
`a@xR | `m11$xR |
`b@xR | `m12$xR |
`c@xR | `m21$xR |
`d@xR | `m22$xR |
`e@xR | `m41$xR |
`f@xR | `m42$xR |
注記: これらの属性は、 コレの行列の~2D成分に対応する。
◎ The following attributes a to f correspond to the 2D components of the matrix interfaces. ◎ • The a attribute is an alias to the m11 attribute. • The b attribute is an alias to the m12 attribute. • The c attribute is an alias to the m21 attribute. • The d attribute is an alias to the m22 attribute. • The e attribute is an alias to the m41 attribute. • The f attribute is an alias to the m42 attribute. ◎ ↑[ `is2D$xR / `isIdentity$xR ]属性は、 `DOMMatrixReadOnly$I ~objの状態情報を供する。 ◎ The following attributes provide status information about DOMMatrixReadOnly.
`isIdentity@xR 取得子~手続きは ⇒ ~RET ~IS[ コレの行列は ~AND↓ を満たす ]:
- 次に挙げる成分の値 ~EQ `1^jv ⇒# `m11$xE, `m22$xE, `m33$xE, `m44$xE
- 他のすべての成分の値 ~EQ`~SameValueZero$ `0^jv
各 `DOMMatrixReadOnly$I ~obj %M は、 真偽値をとる `~2Dか@ を持つ — ~T ならば次を指示する: ◎ Every DOMMatrixReadOnly object must be flagged with a boolean is 2D. This flag indicates that:
- %M の行列は、 ~2D行列として初期化された。 詳細は、 個々の`初期化子@#dommatrix-create$を見よ。 ◎ The current matrix was initialized as a 2D matrix. See individual creators for more details.
- %M の行列には、 ~2D変形nでない演算は適用されていない。 どの演算が`~2Dか$を ~F に設定することになるかは、 各種[ `変異-可能@#mutable-transformation-methods$ / `変異-不能@#immutable-transformation-methods$ ]な変形n~methodごとに定義される。 ◎ Only 2D transformation operations were applied. Each mutable or immutable transformation method defines if is 2D must be set to false.
注記: `DOMMatrix$I ~objの`~2Dか$が ~F に設定されて以降は、 【何らかの演算により,~2D行列になったとしても,】 `setMatrixValue()$xM ~methodを~callする以外に ~T に戻ることは決してない。 ◎ Note: Is 2D can never be set to true when it was set to false before on a DOMMatrix object with the exception of calling the setMatrixValue() method.
6.5. 変異-不能な変形n~method
以下の各種~methodは、 現在の行列を改変せずに,新たな `DOMMatrix$I ~objを返す。 ◎ The following methods do not modify the current matrix and return a new DOMMatrix object.
`DOMMatrixReadOnly$I ~obj %M の `変異-可能な複製@ は、 新たな `DOMMatrix$I ~objであって,その内部~変数すべて — `行列~成分$すべて, および`~2Dか$ — を %M から複製したものを返す。
【 この用語は、 以下を簡潔に述べるために,この訳に導入したものである。 】
`scale(scaleX, scaleY, scaleZ, originX, originY, originZ)@xR ~method手続きは:
- ~IF[ %scaleY ~EQ ε ] ⇒ %scaleY ~SET %scaleX
- ~RET コレの`変異-可能な複製$に対し,次の~method手続きを遂行した結果 ⇒ `scaleSelf(scaleX, scaleY, scaleZ, originX, originY, originZ )$xM
`scaleNonUniform(scaleX, scaleY)@xR ~method手続きは ⇒ ~RET コレの`変異-可能な複製$に対し,次の~method手続きを遂行した結果 ⇒ `scaleSelf(scaleX, scaleY, 1, 0, 0, 0)$xM
注記: 旧来の理由から、 この~methodは, `SVG11$r に定義される `SVGMatrix$I との互換性を得るために~supportされる。 作者には、 代わりに `scale()$xR を利用することが奨励される。
◎ scaleNonUniform(scaleX, scaleY) • Note: Supported for legacy reasons to be compatible with SVGMatrix as defined in SVG 1.1 [SVG11]. Authors are encouraged to use scale() instead. • Let result be the resulting matrix initialized to the values of the current matrix. • Perform a scaleSelf() transformation on result with the arguments scaleX, scaleY, 1, 0, 0, 0. • Return result. • The current matrix is not modified.以下の~methodは、 現在の行列を改変しない。 ◎ The following methods do not modify the current matrix.
`stringifier@xR における文字列~化の挙動は:
-
~IF[ コレの`行列~成分$に,値が有限でないものがある ] ⇒ ~THROW `InvalidStateError$E
注記: ~CSS構文は `NaN^jv / `Infinity^jv 値を表現し得ない。
- %関数~名 ~LET コレの`~2Dか$に応じて: ⇒# ~T ならば `matrix^l / ~F ならば `matrix3d^l
-
%成分~list ~LET コレの`~2Dか$に応じて:
- ~T ⇒ コレの`行列~成分$[ `m11$xE, `m12$xE, `m21$xE, `m22$xE, `m41$xE, `m42$xE ]からなる同順の~list
- ~F ⇒ コレの`行列~成分$すべてからなる`列主導順$による~list
- %文字列~list ~LET « »
- %成分~list を成す ~EACH( %成分 ) に対し ⇒ %文字列~list に次の結果を付加する ⇒ ~NOABRUPT `ToString$jA( %成分 )
- %直列化した成分たち ~LET %文字列~list を `, ^l ( U+002C COMMA, U+0020 SPACE )で`連結する$
- ~RET 次を順に`連結する$ ⇒# %関数~名, `(^l, %直列化した成分たち, `)^l
注記: 結果は、 `~2Dか$に応じて[ ~T ならば `matrix()$f / ~F ならば `matrix3d()$f ]関数の形による文字列になる。 `CSS3-TRANSFORMS$r
◎ stringification behavior • If one or more of m11 element through m44 element are a non-finite value, then throw an "InvalidStateError" DOMException. • Note: The CSS syntax cannot represent NaN or Infinity values. • Let string be the empty string. • If is 2D is true, then: •• Append "matrix(" to string. •• Append ! ToString(m11 element) to string. •• Append ", " to string. •• Append ! ToString(m12 element) to string. •• Append ", " to string. •• Append ! ToString(m21 element) to string. •• Append ", " to string. •• Append ! ToString(m22 element) to string. •• Append ", " to string. •• Append ! ToString(m41 element) to string. •• Append ", " to string. •• Append ! ToString(m42 element) to string. •• Append ")" to string. • Note: The string will be in the form of a a CSS Transforms <matrix()> function. [CSS3-TRANSFORMS] • Otherwise: •• Append "matrix3d(" to string. •• Append ! ToString(m11 element) to string. •• Append ", " to string. •• Append ! ToString(m12 element) to string. •• Append ", " to string. •• Append ! ToString(m13 element) to string. •• Append ", " to string. •• Append ! ToString(m14 element) to string. •• Append ", " to string. •• Append ! ToString(m21 element) to string. •• Append ", " to string. •• Append ! ToString(m22 element) to string. •• Append ", " to string. •• Append ! ToString(m23 element) to string. •• Append ", " to string. •• Append ! ToString(m24 element) to string. •• Append ", " to string. 原文抜け m31...m34 •• Append ! ToString(m41 element) to string. •• Append ", " to string. •• Append ! ToString(m42 element) to string. •• Append ", " to string. •• Append ! ToString(m43 element) to string. •• Append ", " to string. •• Append ! ToString(m44 element) to string. •• Append ")" to string. • Note: The string will be in the form of a a CSS Transforms <matrix3d()> function. [CSS3-TRANSFORMS] • Return string.行列を作成して~2D変形n~methodを~callする例: ◎ In this example, a matrix is created and several 2D transformation methods are called:
var %matrix = new DOMMatrix(); %matrix.scaleSelf(2); %matrix.translateSelf(20,20); console.assert(%matrix.toString() === `matrix(2, 0, 0, 2, 40, 40)^l);
行列を作成して~3D変形n~methodを~callする例: ◎ In the following example, a matrix is created and several 3D transformation methods are called:
var %matrix = new DOMMatrix(); %matrix.scale3dSelf(2); console.assert(matrix.toString() === `matrix3d(2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1)^l);
~3D演算に対しては、 `stringifier$xR は,~3D行列を表現する文字列を返す。 ◎ For 3D operations, the stringifier returns a string representing a 3D matrix.
次の例は、 行列に有限でない値があるので,例外を投出する: ◎ This example will throw an exception because there are non-finite values in the matrix.
var %matrix = new DOMMatrix([NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN]); var %string = matrix + " Batman!";
6.6. 変異-可能な変形n~method
以下の各種~methodは、 それが呼出された行列~objを改変した上で,~obj自身を返す。 これにより、 ~~作者は~method~callを連鎖できるようになる。 ◎ The following methods modify the current matrix, so that each method returns the matrix where it was invoked on. The primary benefit of this is allowing content creators to chain method calls.
次の~codeは: ◎ The following code example:
var %matrix = new DOMMatrix();matrix.translateSelf(20, 20); %matrix.scaleSelf(2); %matrix.translateSelf(-20, -20);
次に等価になる: ◎ is equivalent to:
var %matrix = new DOMMatrix(); %matrix.translateSelf(20, 20).scaleSelf(2).translateSelf(-20, -20);
注記: ~methodを連鎖して~callする作者には、 変形n~methodのうち変異-可能な方を利用することを勧める — そうすれば、 ~UA内の中間的な `DOMMatrix$I ~objの作成に因る不必要な~memory割振りを避けれるので。 ◎ Note: Authors who use chained method calls are advised to use mutable transformation methods to avoid unnecessary memory allocations due to creation of intermediate DOMMatrix objects in user agents.
`multiplySelf(other)@xM ~method手続きは: ◎ multiplySelf(other)
- %M ~LET 新たな `DOMMatrix$I ~obj ◎ ↓
- `行列を辞書で初期化する$( %M, %other ) ◎ Let otherObject be the result of invoking create a DOMMatrix from the dictionary other.
- コレの行列に %M を`右から乗算-$する ◎ The otherObject matrix gets post-multiplied to the current matrix.
- ~IF[ %M の`~2Dか$ ~EQ ~F ] ⇒ コレの`~2Dか$ ~SET ~F ◎ If is 2D of otherObject is false, set is 2D of the current matrix to false.
- ~RET コレ ◎ Return the current matrix.
`preMultiplySelf(other)@xM ~method手続きは: ◎ preMultiplySelf(other)
- %M ~LET 新たな `DOMMatrix$I ~obj ◎ ↓
- `行列を辞書で初期化する$( %M, %other ) ◎ Let otherObject be the result of invoking create a DOMMatrix from the dictionary other.
- コレの行列に %M を`左から乗算-$する ◎ The otherObject matrix gets pre-multiplied to the current matrix.
- ~IF[ %M の`~2Dか$ ~EQ ~F ] ⇒ コレの`~2Dか$ ~SET ~F ◎ If is 2D of otherObject is false, set is 2D of the current matrix to false.
- ~RET コレ ◎ Return the current matrix.
`translateSelf(tx, ty, tz)@xM ~method手続きは: ◎ translateSelf(tx, ty, tz)
- コレの行列に次を`右から乗算-$する ⇒ 移動量 ( %tx, %ty, %tz ) による`~3D並進$を表現する行列 `CSS3-TRANSFORMS$r ◎ Post-multiply a translation transformation on the current matrix. The 3D translation matrix is described in CSS Transforms. [CSS3-TRANSFORMS]
- ~IF[ %tz ~NEQ`~SameValueZero$ `0^jv ] ⇒ コレの`~2Dか$ ~SET ~F ◎ If tz is specified and not 0 or -0, set is 2D of the current matrix to false.
- ~RET コレ ◎ Return the current matrix.
`scaleSelf(scaleX, scaleY, scaleZ, originX, originY, originZ)@xM ~method手続きは: ◎ scaleSelf(scaleX, scaleY, scaleZ, originX, originY, originZ)
- ~IF[ %scaleY ~EQ ε ] ⇒ %scaleY ~SET %scaleX ◎ ↓
-
コレの行列に[ 次に与える 3 個の行列 `CSS3-TRANSFORMS$r ]を,順に`右から乗算-$する: ◎ ↓
- 移動量 ( %originX, %originY, %originZ ) による`~3D並進$を表現する行列 ◎ Perform a translateSelf() transformation on the current matrix with the arguments originX, originY, originZ. ◎ If scaleY is missing, set scaleY to the value of scaleX.
- [ %scaleX, %scaleY, %scaleZ ] による`~3D拡縮$を表現する行列 ◎ Post-multiply a non-uniform scale transformation on the current matrix. The 3D scale matrix is described in CSS Transforms with sx = scaleX, sy = scaleY and sz = scaleZ. [CSS3-TRANSFORMS]
- 移動量 ( −%originX, −%originY, −%originZ ) による`~3D並進$を表現する行列 ◎ Negate originX, originY and originZ. ◎ Perform a translateSelf() transformation on the current matrix with the arguments originX, originY, originZ.
- ~IF[ %scaleZ ~NEQ `1^jv ] ⇒ コレの`~2Dか$ ~SET ~F ◎ If scaleZ is not 1, set is 2D of the current matrix to false.
- ~RET コレ ◎ Return the current matrix.
`scale3dSelf(scale, originX, originY, originZ)@xM ~method手続きは ⇒ ~RET コレに対し,次の~method手続きを遂行した結果 ⇒ `scaleSelf(scale, scale, scale, originX, originY, originZ)$xM
【 原文の記述には、 `~2Dか$の設定-法に誤りがある。 】
◎ scale3dSelf(scale, originX, originY, originZ) • Apply a translateSelf() transformation to the current matrix with the arguments originX, originY, originZ. • Post-multiply a uniform 3D scale transformation (m11 = m22 = m33 = scale) on the current matrix. The 3D scale matrix is described in CSS Transforms with sx = sy = sz = scale. [CSS3-TRANSFORMS] • Apply a translateSelf() transformation to the current matrix with the arguments -originX, -originY, -originZ. • If scale is not 1, set is 2D of the current matrix to false. • Return the current matrix.`rotateSelf(rotX, rotY, rotZ)@xM ~method手続きは: ◎ rotateSelf(rotX, rotY, rotZ)
- ~IF[ %rotZ ~EQ ε ] ⇒ %rotZ ~SET `0^jv ◎ ↓
- ~IF[ %rotY ~EQ ε ] ⇒ %rotY ~SET `0^jv ◎ If rotY and rotZ are both missing, set rotZ to the value of rotX and set rotX and rotY to 0. ◎ If rotY is still missing, set rotY to 0. ◎ If rotZ is still missing, set rotZ to 0.
- ~IF[ ( %rotX, %rotY ) ~NEQ`~SameValueZero$ ( `0^jv, `0^jv ) ] ⇒ コレの`~2Dか$ ~SET ~F ◎ If rotX or rotY are not 0 or -0, set is 2D of the current matrix to false.
-
コレの行列に[ 次に与える 3 個の行列 `CSS3-TRANSFORMS$r ]を,順に`右から乗算-$する: ◎ ↓
- 軸~vector [ 0, 0, 1 ] と回転角 %rotZ (単位度) による`~3D回転$を表現する行列 ◎ Post-multiply a rotation transformation on the current matrix around the vector 0, 0, 1 by the specified rotation rotZ in degrees. The 3D rotation matrix is described in CSS Transforms with alpha = rotZ in degrees. [CSS3-TRANSFORMS]
- 軸~vector [ 0, 1, 0 ] と回転角 %rotY (単位度) による`~3D回転$を表現する行列 ◎ Post-multiply a rotation transformation on the current matrix around the vector 0, 1, 0 by the specified rotation rotY in degrees. The 3D rotation matrix is described in CSS Transforms with alpha = rotY in degrees. [CSS3-TRANSFORMS]
- 軸~vector [ 1, 0, 0 ] と回転角 %rotX (単位度) による`~3D回転$を表現する行列 ◎ Post-multiply a rotation transformation on the current matrix around the vector 1, 0, 0 by the specified rotation rotX in degrees. The 3D rotation matrix is described in CSS Transforms with alpha = rotX in degrees. [CSS3-TRANSFORMS]
- ~RET コレ ◎ Return the current matrix.
`rotateFromVectorSelf(x, y)@xM ~method手続きは: ◎ rotateFromVectorSelf(x, y)
- %回転角 ~LET 0
- ~IF[ ( %x, %y ) ~NEQ`~SameValueZero$ ( `0^jv, `0^jv ) ] ⇒ %回転角 ~SET ~vector [ 1, 0 ] と [ %x, %y ]【! T】 との間の時計回り方向の角度 【時計回り — X 軸, Y 軸の方向は?どっちの~vectorから?】 ◎ ↓
- コレの行列に次を`右から乗算-$する ⇒ 回転角 %回転角 による`~2D回転$を表現する行列 `CSS3-TRANSFORMS$r
- ~RET コレ
`rotateAxisAngleSelf(x, y, z, angle)@xM ~method手続きは: ◎ rotateAxisAngleSelf(x, y, z, angle)
- コレの行列に次を`右から乗算-$する ⇒ 軸~vector [ %x, %y, %z ] と回転角 %angle (単位度)による`~3D回転$を表現する行列 `CSS3-TRANSFORMS$r ◎ Post-multiply a rotation transformation on the current matrix around the specified vector x, y, z by the specified rotation angle in degrees. The 3D rotation matrix is described in CSS Transforms with alpha = angle in degrees. [CSS3-TRANSFORMS]
- ~IF[ ( %x, %y ) ~NEQ`~SameValueZero$ ( `0^jv, `0^jv ) ] ⇒ コレの`~2Dか$ ~SET ~F ◎ If x or y are not 0 or -0, set is 2D of the current matrix to false.
- ~RET コレ ◎ Return the current matrix.
`skewXSelf(sx)@xM ~method手続きは: ◎ skewXSelf(sx)
- コレの行列に次を`右から乗算-$する ⇒ 角度 %sx (単位度)による`~X軸~不変な~2D斜傾$を表現する行列 `CSS3-TRANSFORMS$r ◎ Post-multiply a skewX transformation on the current matrix by the specified angle sx in degrees. The 2D skewX matrix is described in CSS Transforms with alpha = sx in degrees. [CSS3-TRANSFORMS]
- ~RET コレ ◎ Return the current matrix.
`skewYSelf(sy)@xM ~method手続きは: ◎ skewYSelf(sy)
- コレの行列に次を`右から乗算-$する ⇒ 角度 %sy (単位度)による`~Y軸~不変な~2D斜傾$を表現する行列 `CSS3-TRANSFORMS$r ◎ Post-multiply a skewX transformation on the current matrix by the specified angle sy in degrees. The 2D skewY matrix is described in CSS Transforms with beta = sy in degrees. [CSS3-TRANSFORMS]
- ~RET コレ ◎ Return the current matrix.
`invertSelf()@xM ~method手続きは: ◎ invertSelf()
- ~IF[ コレの行列は可逆である ] ⇒ コレの行列 ~SET コレの行列の逆~行列 ◎ Invert the current matrix.
- ~ELSE ⇒# コレのすべての`行列~成分$ ~SET `NaN^jv; コレの`~2Dか$ ~SET ~F ◎ If the current matrix is not invertible set all attributes to NaN and set is 2D to false.
- ~RET コレ ◎ Return the current matrix.
`setMatrixValue(transformList)@xM ~method手続きは: ◎ setMatrixValue(transformList)
- ( %行列, %~2Dか ) ~LET `行列として構文解析する$( %transformList ) ◎ Parse transformList into an abstract matrix, and let matrix and 2dTransform be the result.\
- ~IF[ %行列 ~EQ ε ] ⇒ ~THROW `SyntaxError$E ◎ If the result is failure, then throw a "SyntaxError" DOMException.
- コレの`~2Dか$ ~SET %~2Dか ◎ Set is 2D to the value of 2dTransform.
- コレの各 `行列~成分$ ~SET %行列 の対応する成分の値 ◎ Set m11 element through m44 element to the element values of matrix in column-major order.
- ~RET コレ ◎ Return the current matrix.
7. 有構造~直列化
[ `DOMPointReadOnly$I / `DOMPoint$I / `DOMRectReadOnly$I / `DOMRect$I / `DOMQuad$I / `DOMMatrixReadOnly$I / `DOMMatrix$I ]~objは、 `直列化-可能$である。 `HTML$r ◎ DOMPointReadOnly, DOMPoint, DOMRectReadOnly, DOMRect, DOMQuad, DOMMatrixReadOnly, and DOMMatrix objects are serializable objects. [HTML]
[ `DOMPointReadOnly$I / `DOMPoint$I ]用の`直列化~手続き$は、 所与の ( %値, %直列形 ) に対し,次を走らす: ◎ The serialization steps for DOMPointReadOnly and DOMPoint, given value and serialized, are:
- %直列形 . `X^sl ~SET %値 の`~x座標$ ◎ Set serialized.[[X]] to value’s x coordinate.
- %直列形 . `Y^sl ~SET %値 の`~y座標$ ◎ Set serialized.[[Y]] to value’s y coordinate.
- %直列形 . `Z^sl ~SET %値 の`~z座標$ ◎ Set serialized.[[Z]] to value’s z coordinate.
- %直列形 . `W^sl ~SET %値 の`~w視座$ ◎ Set serialized.[[W]] to value’s w perspective.
[ `DOMPointReadOnly$I / `DOMPoint$I ]用の`逆直列化~手続き$は、 所与の ( %直列形, %値, %宛先~realm ) に対し,次を走らす: ◎ Their deserialization steps, given serialized and value, are:
- %値 の`~x座標$ ~SET %直列形 . `X^sl ◎ Set value’s x coordinate to serialized.[[X]].
- %値 の`~y座標$ ~SET %直列形 . `Y^sl ◎ Set value’s y coordinate to serialized.[[Y]].
- %値 の`~z座標$ ~SET %直列形 . `Z^sl ◎ Set value’s z coordinate to serialized.[[Z]].
- %値 の`~w視座$ ~SET %直列形 . `W^sl ◎ Set value’s w perspective to serialized.[[W]].
[ `DOMRectReadOnly$I / `DOMRect$I ]用の`直列化~手続き$は、 所与の ( %値, %直列形 ) に対し,次を走らす: ◎ The serialization steps for DOMRectReadOnly and DOMRect, given value and serialized, are:
- %直列形 . `X^sl ~SET %値 の`~x座標$rT ◎ Set serialized.[[X]] to value’s x coordinate.
- %直列形 . `Y^sl ~SET %値 の`~y座標$rT ◎ Set serialized.[[Y]] to value’s y coordinate.
- %直列形 . `Width^sl ~SET %値 の`横幅~寸法$ ◎ Set serialized.[[Width]] to value’s width dimension.
- %直列形 . `Height^sl ~SET %値 の`縦幅~寸法$ ◎ Set serialized.[[Height]] to value’s height dimension.
[ `DOMRectReadOnly$I / `DOMRect$I ]用の`逆直列化~手続き$は、 所与の ( %直列形, %値, %宛先~realm ) に対し,次を走らす: ◎ Their deserialization steps, given serialized and value, are:
- %値 の`~x座標$rT ~SET %直列形 . `X^sl ◎ Set value’s x coordinate to serialized.[[X]].
- %値 の`~y座標$rT ~SET %直列形 . `Y^sl ◎ Set value’s y coordinate to serialized.[[Y]].
- %値 の`横幅~寸法$ ~SET %直列形 . `Width^sl ◎ Set value’s width dimension to serialized.[[Width]].
- %値 の`縦幅~寸法$ ~SET %直列形 . `Height^sl ◎ Set value’s height dimension to serialized.[[Height]].
`DOMQuad$I 用の`直列化~手続き$は、 所与の ( %値, %直列形 ) に対し,次を走らす: ◎ The serialization steps for DOMQuad, given value and serialized, are:
- %直列形 . `P1^sl ~SET %値 の`点1$の`下位-直列化$ ◎ Set serialized.[[P1]] to the sub-serialization of value’s point 1.
- %直列形 . `P2^sl ~SET %値 の`点2$の`下位-直列化$ ◎ Set serialized.[[P2]] to the sub-serialization of value’s point 2.
- %直列形 . `P3^sl ~SET %値 の`点3$の`下位-直列化$ ◎ Set serialized.[[P3]] to the sub-serialization of value’s point 3.
- %直列形 . `P4^sl ~SET %値 の`点4$の`下位-直列化$ ◎ Set serialized.[[P4]] to the sub-serialization of value’s point 4.
`DOMQuad$I 用の`逆直列化~手続き$は、 所与の ( %直列形, %値, %宛先~realm ) に対し,次を走らす: ◎ Their deserialization steps, given serialized and value, are:
- %値 の`点1$ ~SET %直列形 . `P1^sl の`下位-逆直列化$ ◎ Set value’s point 1 to the sub-deserialization of serialized.[[P1]].
- %値 の`点2$ ~SET %直列形 . `P2^sl の`下位-逆直列化$ ◎ Set value’s point 2 to the sub-deserialization of serialized.[[P2]].
- %値 の`点3$ ~SET %直列形 . `P3^sl の`下位-逆直列化$ ◎ Set value’s point 3 to the sub-deserialization of serialized.[[P3]].
- %値 の`点4$ ~SET %直列形 . `P4^sl の`下位-逆直列化$ ◎ Set value’s point 4 to the sub-deserialization of serialized.[[P4]].
[ `DOMMatrixReadOnly$I / `DOMMatrix$I ]用の`直列化~手続き$は、 所与の ( %値, %直列形 ) に対し,次を走らす: ◎ The serialization steps for DOMMatrixReadOnly and DOMMatrix, given value and serialized, are:
-
~IF[ %値 の`~2Dか$ ~EQ ~T ]: ◎ If value’s is 2D is true:
- %直列形 . `M11^sl ~SET %値 の`m11$xE ◎ Set serialized.[[M11]] to value’s m11 element.
- %直列形 . `M12^sl ~SET %値 の`m12$xE ◎ Set serialized.[[M12]] to value’s m12 element.
- %直列形 . `M21^sl ~SET %値 の`m21$xE ◎ Set serialized.[[M21]] to value’s m21 element.
- %直列形 . `M22^sl ~SET %値 の`m22$xE ◎ Set serialized.[[M22]] to value’s m22 element.
- %直列形 . `M41^sl ~SET %値 の`m41$xE ◎ Set serialized.[[M41]] to value’s m41 element.
- %直列形 . `M42^sl ~SET %値 の`m42$xE ◎ Set serialized.[[M42]] to value’s m42 element.
- %直列形 . `Is2D^sl ~SET ~T ◎ Set serialized.[[Is2D]] to true.
注記: ~2D[ `DOMMatrix$I / `DOMMatrixReadOnly$I ]においては、 一部の他の要素 — 例: `m13$xE — は `-0^jv をとり得る — それは、 この~algoにより往復しないことになる。 ◎ Note: It is possible for a 2D DOMMatrix or DOMMatrixReadOnly to have -0 for some of the other elements, e.g., the m13 element, which will not be roundtripped by this algorithm.
-
~ELSE: ◎ Otherwise:
- %直列形 . `M11^sl ~SET %値 の`m11$xE ◎ Set serialized.[[M11]] to value’s m11 element.
- %直列形 . `M12^sl ~SET %値 の`m12$xE ◎ Set serialized.[[M12]] to value’s m12 element.
- %直列形 . `M13^sl ~SET %値 の`m13$xE ◎ Set serialized.[[M13]] to value’s m13 element.
- %直列形 . `M14^sl ~SET %値 の`m14$xE ◎ Set serialized.[[M14]] to value’s m14 element.
- %直列形 . `M21^sl ~SET %値 の`m21$xE ◎ Set serialized.[[M21]] to value’s m21 element.
- %直列形 . `M22^sl ~SET %値 の`m22$xE ◎ Set serialized.[[M22]] to value’s m22 element.
- %直列形 . `M23^sl ~SET %値 の`m23$xE ◎ Set serialized.[[M23]] to value’s m23 element.
- %直列形 . `M24^sl ~SET %値 の`m24$xE ◎ Set serialized.[[M24]] to value’s m24 element.
- %直列形 . `M31^sl ~SET %値 の`m31$xE ◎ Set serialized.[[M31]] to value’s m31 element.
- %直列形 . `M32^sl ~SET %値 の`m32$xE ◎ Set serialized.[[M32]] to value’s m32 element.
- %直列形 . `M33^sl ~SET %値 の`m33$xE ◎ Set serialized.[[M33]] to value’s m33 element.
- %直列形 . `M34^sl ~SET %値 の`m34$xE ◎ Set serialized.[[M34]] to value’s m34 element.
- %直列形 . `M41^sl ~SET %値 の`m41$xE ◎ Set serialized.[[M41]] to value’s m41 element.
- %直列形 . `M42^sl ~SET %値 の`m42$xE ◎ Set serialized.[[M42]] to value’s m42 element.
- %直列形 . `M43^sl ~SET %値 の`m43$xE ◎ Set serialized.[[M43]] to value’s m43 element.
- %直列形 . `M44^sl ~SET %値 の`m44$xE ◎ Set serialized.[[M44]] to value’s m44 element.
- %直列形 . `Is2D^sl ~SET ~F ◎ Set serialized.[[Is2D]] to false.
[ `DOMMatrixReadOnly$I / `DOMMatrix$I ]用の`逆直列化~手続き$は、 所与の ( %直列形, %値, %宛先~realm ) に対し,次を走らす: ◎ Their deserialization steps, given serialized and value, are:
-
~IF[ %直列形 . `Is2D^sl ~EQ ~T ]: ◎ If serialized.[[Is2D]] is true:
- %値 の`m11$xE ~SET %直列形 . `M11^sl ◎ Set value’s m11 element to serialized.[[M11]].
- %値 の`m12$xE ~SET %直列形 . `M12^sl ◎ Set value’s m12 element to serialized.[[M12]].
- %値 の`m13$xE ~SET `0^jv ◎ Set value’s m13 element to 0.
- %値 の`m14$xE ~SET `0^jv ◎ Set value’s m14 element to 0.
- %値 の`m21$xE ~SET %直列形 . `M21^sl ◎ Set value’s m21 element to serialized.[[M21]].
- %値 の`m22$xE ~SET %直列形 . `M22^sl ◎ Set value’s m22 element to serialized.[[M22]].
- %値 の`m23$xE ~SET `0^jv ◎ Set value’s m23 element to 0.
- %値 の`m24$xE ~SET `0^jv ◎ Set value’s m24 element to 0.
- %値 の`m31$xE ~SET `0^jv ◎ Set value’s m31 element to 0.
- %値 の`m32$xE ~SET `0^jv ◎ Set value’s m32 element to 0.
- %値 の`m33$xE ~SET `1^jv ◎ Set value’s m33 element to 1.
- %値 の`m34$xE ~SET `0^jv ◎ Set value’s m34 element to 0.
- %値 の`m41$xE ~SET %直列形 . `M41^sl ◎ Set value’s m41 element to serialized.[[M41]].
- %値 の`m42$xE ~SET %直列形 . `M42^sl ◎ Set value’s m42 element to serialized.[[M42]].
- %値 の`m43$xE ~SET `0^jv ◎ Set value’s m43 element to 0.
- %値 の`m44$xE ~SET `1^jv ◎ Set value’s m44 element to 1.
- %値 の`~2Dか$ ~SET ~T ◎ Set value’s is 2D to true.
-
~ELSE: ◎ Otherwise:
- %値 の`m11$xE ~SET %直列形 . `M11^sl ◎ Set value’s m11 element to serialized.[[M11]].
- %値 の`m12$xE ~SET %直列形 . `M12^sl ◎ Set value’s m12 element to serialized.[[M12]].
- %値 の`m13$xE ~SET %直列形 . `M13^sl ◎ Set value’s m13 element to serialized.[[M13]].
- %値 の`m14$xE ~SET %直列形 . `M14^sl ◎ Set value’s m14 element to serialized.[[M14]].
- %値 の`m21$xE ~SET %直列形 . `M21^sl ◎ Set value’s m21 element to serialized.[[M21]].
- %値 の`m22$xE ~SET %直列形 . `M22^sl ◎ Set value’s m22 element to serialized.[[M22]].
- %値 の`m23$xE ~SET %直列形 . `M23^sl ◎ Set value’s m23 element to serialized.[[M23]].
- %値 の`m24$xE ~SET %直列形 . `M24^sl ◎ Set value’s m24 element to serialized.[[M24]].
- %値 の`m31$xE ~SET %直列形 . `M31^sl ◎ Set value’s m31 element to serialized.[[M31]].
- %値 の`m32$xE ~SET %直列形 . `M32^sl ◎ Set value’s m32 element to serialized.[[M32]].
- %値 の`m33$xE ~SET %直列形 . `M33^sl ◎ Set value’s m33 element to serialized.[[M33]].
- %値 の`m34$xE ~SET %直列形 . `M34^sl ◎ Set value’s m34 element to serialized.[[M34]].
- %値 の`m41$xE ~SET %直列形 . `M41^sl ◎ Set value’s m41 element to serialized.[[M41]].
- %値 の`m42$xE ~SET %直列形 . `M42^sl ◎ Set value’s m42 element to serialized.[[M42]].
- %値 の`m43$xE ~SET %直列形 . `M43^sl ◎ Set value’s m43 element to serialized.[[M43]].
- %値 の`m44$xE ~SET %直列形 . `M44^sl ◎ Set value’s m44 element to serialized.[[M44]].
- %値 の`~2Dか$ ~SET ~F ◎ Set value’s is 2D to false.
8. ~securityの考慮点
[ `DOMMatrix$I / `DOMMatrixReadOnly$I ]~interfaceには、 文字列を~CSS構文として構文解析する入口もある。 したがって、 `CSS3-SYNTAX$r 仕様の[ `~privacyの考慮点@~CSSSYN#privacy$, `~securityの考慮点@~CSSSYN#security$ ]が適用される。 ◎ The DOMMatrix and DOMMatrixReadOnly interfaces have entry-points to parsing a string with CSS syntax. Therefore the privacy and security considerations of the CSS Syntax specification applies. [CSS3-SYNTAX]
これは、 ~UAにおける~CSS構文解析器の~bugを悪用するために利用される可能性がある。 ◎ This could potentially be used to exploit bugs in the CSS parser in a user agent.
その他に既知な,[ ~security/~privacy ]への影響iは、 この仕様に定義される~interfaceにはない。 しかしながら,この仕様に定義される~interfaceを利用する~APIを有する他の仕様は、[ ~security/~privacy ]の課題を導入する可能性がある。 ◎ There are no other known security or privacy impacts of the interfaces defined in this specification. However, other specifications that have APIs that use the interfaces defined in this specification could potentially introduce security or privacy issues.
9. ~privacyの考慮点
例えば, `CSSOM-VIEW$r に定義される `getBoundingClientRect()$m は、 `DOMRect$I を返す。 それは、[ 特定0の~fontで~~描画される~textを包含している,`行内~level$の要素 ]の~sizeを測定するためにも利用でき,利用者が その~fontを~installしたかどうかについての情報を公開する。 多数の共通的な~fontに対し,その情報が集計された場合、 個人識別可能にもなり得る。 ◎ For example, the getBoundingClientRect() API defined in CSSOM View returns a DOMRect that could be used to measure the size of an inline element containing some text of a particular font, which exposes information about whether the user has that font installed. That information, if used to test many common fonts, can then be personally-identifiable information. [CSSOM-VIEW]
10. 歴史的
◎非規範的この仕様における各種~interfaceは、 様々な仕様に見出される,早期の類似な~interface, および一部の~UAに見出される~proprietaryな~interfaceを置換するものと意図されている。 この節は、 それらの~interfaceを列挙することを試みる。 ◎ The interfaces in this specification are intended to replace earlier similar interfaces found in various specifications as well as proprietary interfaces found in some user agents. This section attempts to enumerate these interfaces.
10.1. CSSOM View
`CSSOM-VIEW$r の早期の改訂に定義されていた `ClientRect^I ~interfaceは、 `DOMRect$I に置換された。 この仕様に適合する実装は、 `ClientRect^I を~supportしないことになる。 ◎ Earlier revisions of CSSOM View defined a ClientRect interface, which is replaced by DOMRect. Implementations conforming to this specification will not support ClientRect. [CSSOM-VIEW]
10.2. ~SVG
~SVGの早期の改訂に定義されていた[ `SVGPoint$I / `SVGRect$I / `SVGMatrix$I ]は、 この仕様にて[ `DOMPoint$I / `DOMRect$I / `DOMMatrix$I ]の別名として定義された。 `SVG11$r ◎ Earlier revisions of SVG defined SVGPoint, SVGRect, SVGMatrix, which are defined in this specifications as aliases to DOMPoint, DOMRect, DOMMatrix, respectively. [SVG11]
10.3. 非~標準な~interface
一部の~UAは、 `WebKitPoint^I ~interfaceを~supportしていた。 この仕様に適合する実装は、 `WebKitPoint^I を~supportしないことになる。 ◎ Some user agents supported a WebKitPoint interface. Implementations conforming to this specification will not support WebKitPoint.
いくつかの~UAは、 `WebKitCSSMatrix$I ~interfaceを~supportしていた — それは、 ~Web上でも広く利用されている。 それは、 この仕様にて `DOMMatrix$I の別名として定義された。 ◎ Several user agents supported a WebKitCSSMatrix interface, which is also widely used on the Web. It is defined in this specification as an alias to DOMMatrix.
一部の~UAは、 `MSCSSMatrix^I ~interfaceを~supportしていた。 この仕様に適合する実装は、 `MSCSSMatrix^I を~supportしないことになる。 ◎ Some user agents supported a MSCSSMatrix interface. Implementations conforming to this specification will not support MSCSSMatrix.
規約
所与の 1 個以上の `unrestricted double$I 値たちが成す~listに対し: ◎ ↓
- `~NaN安全な最小@ は、 ~list内に `NaN^jv が[ 在るならば `NaN^jv / 無いならば ~list内で最小な値 ]を返す。 ◎ The NaN-safe minimum of a non-empty list of unrestricted double values is NaN if any member of the list is NaN, or the minimum of the list otherwise.
- `~NaN安全な最大@ は、 ~list内に `NaN^jv が[ 在るならば `NaN^jv / 無いならば ~list内で最大な値 ]を返す。 ◎ Analogously, the NaN-safe maximum of a non-empty list of unrestricted double values is NaN if any member of the list is NaN, or the maximum of the list otherwise.
最後の公表版からの変更点
◎非規範的- `2018年 12月 4日 勧告候補@~TR/2014/CR-geometry-1-20181204/$ からの変更点: ◎ The following changes were made since the 4 December 2018 Candidate Recommendation.
- ~~縦~vectorに対しては,行列は`左から乗算-$されることを明確化した。 ( `294$issue, `359$issue ) ◎ Clarified that column vectors are pre-multiplied by matrices #294, #359
- [ 最小/最大 ]は、 ~NaNが在る場合は,`それを選好するものと定義した@#conventions$。 ( `222$issue ) ◎ Defined minimum and maximum as preferring NaN #222
- 新たな~Web~IDL構築子~定義を利用した。 ◎ Used new WebIDL constructor definition
- 既定の辞書~値を追加した。 ◎ Added default dictionary value
- 注釈文の記述に倣うよう, `matrixTransform()$pR に `[NewObject]^c を追加した。 ◎ Added [NewObject] to matrixTransform, to align with prose description
- %originZ に対する冗長な検査を除去した。 ( `350$issue ) ◎ Removed redundant originZ check #350
- `DOMRectList$I に明示的な `[Exposed]^c を追加した。 ◎ Added explicit [Exposed] to DOMRectList
- `2014年 11月 25日 勧告候補@~TR/2014/WD-geometry-1-20140918/$ からの変更点: ◎ The following changes were made since the 25 November 2014 Candidate Recommendation.
- 各種~interfaceは、 一般に,多重定義された構築子に代えて,特定の静的~演算を構築に利用するよう変更して、 それらの~interfaceがより一貫するようにした。 しかしながら, `DOMMatrix$I は、 `WebKitCSSMatrix$I との互換性を得るため,依然として多重定義された構築子を利用する。 ◎ Changed the interfaces to generally use specific static operations for construction instead of using overloaded constructors, and made the interfaces more consistent. However, DOMMatrix still uses an overloaded constructor for compatibility with WebKitCSSMatrix.
- `DOMMatrixInit$I 辞書を導入した。 ◎ Introduced the DOMMatrixInit dictionary.
- 各種~interfaceに~JSON直列化子を追加した。 ◎ Added JSON serializers for the interfaces.
-
`DOMMatrixReadOnly$I, `DOMMatrix$I を `WebKitCSSMatrix$I に互換になるよう変更した: ◎ Changed DOMMatrixReadOnly and DOMMatrix to be compatible with WebKitCSSMatrix:
- [ `rotate()$xR / `rotateSelf()$xM ]の引数~名を ( %angle, %originX, %originY ) から ( %rotX, %rotY, %rotZ ) に変更した。 ◎ Changed rotate() and rotateSelf() arguments from (angle, originX, originY) to (rotX, rotY, rotZ).
- [ `scale()$xR / `scaleSelf()$xM ]~methodを,以前の[ `scaleNonUniform()^m / `scaleNonUniformSelf()^m ]~methodにより近くなるよう変更した上で、 各種 `scaleNonUniformSelf()^m ~methodは落とした。 `scaleNonUniform()^m ~method用の~supportは、 旧来の理由から保たれる。 ◎ Changed the scale() and scaleSelf() methods to be more like the previous scaleNonUniform()/scaleNonUniformSelf() methods, and dropped the scaleNonUniformSelf() method. Keep support for scaleNonUniform() for legacy reasons.
- [ `DOMMatrix$I / `DOMMatrixReadOnly$I ]~methodに対するすべての引数は、 `setMatrixValue()$xM を除き,~optionalにした。 ◎ Made all arguments optional for DOMMatrix/DOMMatrixReadOnly methods, except for setMatrixValue().
- 引数をとらない構築子を追加した。 ◎ Added no-argument constructor.
- `WebKitCSSMatrix$I は、 `DOMMatrix$I に対する`旧来の~window上の別名$であるものと定義した。 ◎ Defined WebKitCSSMatrix to be a legacy window alias for DOMMatrix.
- `Worker$I においては、 `DOMMatrix$I / `DOMMatrixReadOnly$I は,~CSS構文の構文解析と文字列~化を~supportしないとした。 ◎ In workers, DOMMatrix and DOMMatrixReadOnly do not support parsing or stringifying with CSS syntax.
- 各種~interfaceの有構造~直列化を定義した。 ◎ Defined structured serialization of the interfaces.
- `DOMQuad$I の~liveな `bounds^m 属性は、 ~liveでない `getBounds()$q ~methodに置換された。 “結付けられた限界~矩形” の概念も除去された。 ◎ The live bounds attribute on DOMQuad was replaced with a non-live getBounds() method. The "associated bounding rectangle" concept was also removed.
- [ `DOMMatrix$I / `DOMMatrixReadOnly$I ]用の文字列~構文解析器は、 ~SVG規則に代えて~CSS規則を利用するよう変更した。 ◎ Changed the string parser for DOMMatrix and DOMMatrixReadOnly to use CSS rules instead of SVG rules.
- [ `DOMMatrix$I / `DOMMatrixReadOnly$I ]用の文字列化子は,今や、 有限でない値があるときは例外を投出し,他の場合は `ToString$jA ~algoを利用する。 `ECMA-262$r ◎ The stringifier for DOMMatrix and DOMMatrixReadOnly now throws if there are non-finite values, and otherwise uses the ToString algorithm. [ECMA-262]
- `0^jv と `-0^jv の比較は、 ~~一貫して等しいものと扱うようにした。 ◎ Made comparisons treat 0 and -0 as equal throughout.
- 次に挙げる節を追加した ⇒# `§ ~securityの考慮点@#security$, `§ ~privacyの考慮点@#privacy$, `§ 歴史的@#historical$ ◎ Added and § 10 Historical sections.
- `2014年 9月 18日 作業草案@~TR/2014/WD-geometry-1-20140918/$ からの変更点: ◎ The following changes were made since the 18 September 2014 Working Draft.
- 次に挙げる~interfaceを `Window$I, `Worker$I 上に公開するようにして,各自の~clone法を定義した ⇒# `DOMPointReadOnly$I, `DOMPoint$I, `DOMRectReadOnly$I, `DOMRect$I, `DOMQuad$I, `DOMMatrixReadOnly$I, `DOMMatrix$I ◎ Exposed DOMPointReadOnly, DOMPoint, DOMRectReadOnly, DOMRect, DOMQuad, DOMMatrixReadOnly and DOMMatrix to Window and Worker. Defined cloning of the interface.
- `2014年 6月 26日 Last Call 公な作業草案@~TR/2014/WD-geometry-1-20140626/$ からの変更点: ◎ The following changes were made since the 26 June 2014 Last Call Public Working Draft.
- `DOMPointReadOnly$I の構築子は、 4 個の引数をとるようにした。 ◎ DOMPointReadOnly got a constructor taking 4 arguments.
- `DOMRectReadOnly$I の構築子は、 4 個の引数をとるようにした ◎ DOMRectReadOnly got a constructor taking 4 arguments.
- `DOMMatrixReadOnly$I の構築子は、 数たちが成す連列を引数にとるようにした。 ◎ DOMMatrixReadOnly got a constructor taking a sequence of numbers as argument.
- `DOMRectList^I は `ArrayClass^I に転換した。 この~interfaceを利用できるのは、 旧来の~interface用に限られる。 ◎ DOMRectList turned to an ArrayClass. The interfaces can just be used for legacy interfaces.
- `DOMRectList^I は、 ~browserからの~feedbackが待たれる~risk下にあるものとした。 ◎ Put DOMRectList on at-Risk awaiting browser feedback.
- すべての~interfaceは、[ 読専かどうか/継承している挙動 ]を述べるため,内部~成分に基づいて述べるようにした。 ◎ All interfaces are described in the sense of internal elements to describe the read-only/writable and inheriting behavior.
- `IndexSizeError^E 例外を `TypeError^E に置換した。 ◎ Replace IndexSizeError exception with TypeError.
- `2014年 5月 22日 最初の公な作業草案@~TR/2014/WD-geometry-1-20140522/$ からの変更点: ◎ The following changes were made since the 22 May 2014 First Public Working Draft.
- 変異-可能な変形n~methodを "…`By^c" から "…`Self^c" に改称した (例: `translateBy()^m から `translateSelf()^m に)。 ◎ Renamed mutable transformation methods *By to *Self. (E.g. translateBy() got renamed to translateSelf().)
- `invert()^m を `invertSelf()$xM に改称した。 ◎ Renamed invert() to invertSelf().
- 文字列による変形n~listを引数にとる `setMatrixValue()$xM を追加した。 ◎ Added setMatrixValue() which takes a transformation list as DOMString.
- [ `is2D$xR, `isIdentity$xR ]属性は、 今や読専になった。 ◎ is2D and isIdentity are read-only attributes now.
- ~3D変形nや属性~設定による `is2D$xR を追跡するため、 対応する~flagを `DOMMatrixReadOnly$I に追加した。 ◎ DOMMatrixReadOnly gets flagged to track 3D transformation and attribute settings for is2D.
- [ `invertSelf()$xM, `inverse()$xR ]は、 例外を投出しないようにした。 ◎ invertSelf() and inverse() do not throw exceptions anymore.
謝辞
注意深い考査, ~comment, 訂正を寄せられた、 次の方々に感謝する: