`~3D描画~文脈$に関与する`変形-可能$な要素は、
その `backface-visibility$p の算出d値が `hidden^v になるならば,[
`積層~文脈$, `すべての子孫~用の包含塊$
]どちらも確立する。
◎
A computed value of hidden for backface-visibility on a transformable element that participates in a 3D rendering context establishes both a stacking context and a containing block for all descendants.
`backface-visibility$p: `hidden^v
を伴う要素の可視性は、
次に従って決定される:
◎
The visibility of an element with backface-visibility: hidden is determined as follows:
要素の`累積~3D変形n行列$を算出する。
◎
Compute the element’s accumulated 3D transformation matrix.
行列の `33^M 成分が負である場合、
要素は見えなくされるべきである。
他の場合は可視である。
◎
If the component of the matrix in row 3, column 3 is negative, then the element should be hidden. Otherwise it is visible.
背面の可視性は `33^M を調べるだけでは判明しない。
`917$issue を見よ。
◎
Backface-visibility cannot be tested by only looking at m33. See #917.
注記:
この定義の論拠は次で与えられる:
要素が,薄さ無限小な x–y 平面に埋め込まれた矩形であるとする。
要素が変形されないときの[
表面/裏面
]の座標は,ある極小の %ε に対し
( %x, %y, %ε ) / ( %x, %y, − %ε )
になる。
変形-後,要素の表面が裏面よりも
`視点$に近くなる( %z 値がより高くなる)か, 視点から遠くなるか
どうかを調べればよい。
表面の %z 座標は、
遠近法を織り込む前の段階で
`13^M × %x + `23^M × %y + `33^M × %ε + `43^M
になり,裏面は
`13^M × %x + `23^M × %y − `33^M × %ε + `43^M
になる。
前者の量が後者より大きくなるのは、
`33^M ~GT 0 のとき, そのときに限る。
( 0 に等しいときは,視点からの表面と裏面の近さは等しくなる。
これはおそらく 90° 回転の様な何かを意味する
—
それは,いずれにせよ要素を不可視にするので、
消失するかどうかを考慮する必要はない)
◎
Note: The reasoning for this definition is as follows. Assume elements are rectangles in the x–y plane with infinitesimal thickness. The front of the untransformed element has coordinates like (x, y, ε), and the back is (x, y, −ε), for some very small ε. We want to know if after the transformation, the front of the element is closer to the viewer than the back (higher z-value) or further away. The z-coordinate of the front will be m13x + m23y + m33ε + m43, before accounting for perspective, and the back will be m13x + m23y − m33ε + m43. The first quantity is greater than the second if and only if m33 > 0. (If it equals zero, the front and back are equally close to the viewer. This probably means something like a 90-degree rotation, which makes the element invisible anyway, so we don’t really care whether it vanishes.)
11. ~SVGと~3D変形-関数
この仕様は、
次に挙げる~SVG要素に対し,`~3D変形-関数$の適用-を明示的に要求する
⇒#
`容器~要素$のうち `a$e, `g$e, `svg$e,
`~graphics要素$,
`~graphicを参照する要素$,
`foreignObject$e 要素
◎
This specification explicitly requires three-dimensional transform functions to apply to the container elements: a, g, svg, all graphics elements, all graphics referencing elements and the SVG foreignObject element.
◎
Three-dimensional transform functions and the properties perspective, perspective-origin, transform-style and backface-visibility can not be used for the elements: clipPath, linearGradient, radialGradient and pattern. If a transform list includes a three-dimensional transform function, the complete transform list must be ignored. The values of every previously named property must be ignored. Transformable elements that are contained by one of these elements can have three-dimensional transform functions.\
[
`clipPath$e, `mask$e, `pattern$e
]要素は、[
適用し得るようになる前に,
子孫~要素たちが成す平坦~化された表現を作成する
]よう~UAに要求するので、
`transform-style$p: `preserve-3d^v
の挙動を上書きする。
◎
The clipPath, mask, pattern elements require the user agent to create a flattened representation of the descendant elements before they can be applied, and therefore override the behavior of transform-style: preserve-3d.
`~3D描画~文脈$に属する~objに対しては、
`vector-effect$p ~propが `non-scaling-stroke^v に設定されても,~objの~stroke法には影響しない。
◎
If the vector-effect property is set to non-scaling-stroke and an object is within a 3D rendering context the property has no affect on stroking the object.
~SVGにおける~3D変形~関数の構文を正式に述べる
— `~2D関数~用に述べた@~TRANSFORM#svg-syntax$のと同じく。
◎
formally describe the syntax of the 3D transform functions in SVG, as is done for the 2-D functions.
12. 変形-関数
`transform$p ~propの値は
`transform-function@t
たちが成す~listである。
許容される変形-関数たちが成す集合は、
以下に与えられる。
この仕様において `angle$t が利用される所では、
0 に等しい `number$t も許容され,角度 0 として扱われる。
並進~用の[
横/縦
] `percentage$t 値は,`基準~box$の[
横幅/縦幅
]に相対的になる。
拡縮-関数( `scale^f, 等々)における `percentage$t は、
`number$t と等価であり,指定d値においては `number$t として直列化される。
例えば,
`scale3d(50%, 100%, 150%)^v
は、
`scale3d(0.5, 1, 1.5)^v
として直列化される。
◎
The value of the transform property is a list of <transform-function>. The set of allowed transform functions is given below. Wherever <angle> is used in this specification, a <number> that is equal to zero is also allowed, which is treated the same as an angle of zero degrees. A percentage for horizontal translations is relative to the width of the reference box. A percentage for vertical translations is relative to the height of the reference box. A percentage in a scale function is equivalent to a number, and serializes as a number in specified values. For example, scale3d(50%, 100%, 150%) serializes as scale3d(0.5, 1, 1.5).
12.1. ~2D変形~関数
拡縮-関数は、
`css-transforms-1$r にて定義され,今や百分率を~supportする。
◎
The scale functions defined in [css-transforms-1] now support percentages.
百分率を受容することを除き,
`css-transforms-1$r に`定義される@~TRANSFORM#two-d-transform-functions$とおり。
◎
As defined in css-transforms-1, but also accepting percentages as described above.
12.2. ~3D変形-関数
以下に挙げるものは、
`~3D変形-関数@
と総称される
— それらにおける `zero$t は、
`0deg^v と同じに挙動する
( “単位なしの 0” による角度は、
旧来との互換性の理由から保全される)。
◎
In the following 3d transform functions, a <zero> behaves the same as 0deg. ("Unitless 0" angles are preserved for legacy compat reasons.)
`matrix3d@f = matrix3d( `number$t#{16} )
`列主導順@~GEOMETRY#_column-major-order$による 16 個の値が成す~4x4斉次~行列として、
~3D変形nを指定する。
◎
specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order.
所与の【!廃)`translation-value^t 】 3 個の~parameterからなる移動量~vector
[ %tx, %ty, %tz ]
により,`~3D並進$を指定する。
◎
specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively.
`translateZ@f = translateZ( `length$t )
所与の `length^t 値 %tz による移動量~vector
[ 0, 0, %tz ]
により, Z 方向の`~3D並進$を指定する。
◎
specifies a 3D translation by the vector [0,0,tz] with the given amount in the Z direction.
所与の 3 個の~parameterからなる拡縮ng~vector
[ %sx, %sy, %sz ]
により,`~3D拡縮ng$を指定する。
◎
specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters.
所与の~parameter %sz による拡縮ng~vector
[ 0, 0, %sz ]
により,`~3D拡縮ng$を指定する。
◎
specifies a 3D scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter.
所与の[
3 個の `number^t 値からなる方向~vector [ %x, %y, %z ],
回転角 `angle^t
]により,`~3D回転$を指定する。
[ 0, 0, 0 ]
のような 正規化できない方向~vectorに対しては、
回転は適用されない。
◎
specifies a 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first three parameters. A direction vector that cannot be normalized, such as [0,0,0], will cause the rotation to not be applied.
注記:
回転は、
~vectorが指す先から原点を見たときに時計回りになる。
◎
Note: the rotation is clockwise as one looks from the end of the vector toward the origin.
`rotateX@f = rotateX( [ `angle$t | `zero$t ] )
`rotate3d(1, 0, 0, <angle>)^v
と同じ。
◎
same as rotate3d(1, 0, 0, <angle>).
`rotateY@f = rotateY( [ `angle$t | `zero$t ] )
`rotate3d(0, 1, 0, <angle>)^v
と同じ。
◎
same as rotate3d(0, 1, 0, <angle>).
`rotateZ@f = rotateZ( [ `angle$t | `zero$t ] )
`rotate3d(0, 0, 1, <angle>)^v
と同じ
— `rotate(<angle>)^v と等価な~3D変形を与える。
◎
same as rotate3d(0, 0, 1, <angle>), which is a 3d transform equivalent to the 2d transform rotate(<angle>).
`透視~投影~行列$を指定する。
この行列は、
空間の点を,その Z 値に基づいて X, Y 方向に拡縮する
—
正な Z 値を伴う点は,(画面~上では)原点から離れる方向に拡大し、
負な Z 値を伴う点は,原点に近付く方向に縮小する。
z=0 平面~上の点は不変になる。
`length^t ~parameterは、
`視点$から画面( z=0 平面)までの距離を表現する。
この値を小さくする程、
視点と画面の四隅を頂点とする四角錐は,より平たくなり、
遠近法の効果が誇張されるようになる。
例えば,値 `1000px^v は中程度の遠近感を与え、
値 `200px^v は極度の遠近感を与える。
◎
specifies a perspective projection matrix. This matrix scales points in X and Y based on their Z value, scaling points with positive Z values away from the origin, and those with negative Z values towards the origin. Points on the z=0 plane are unchanged. The parameter represents the distance of the z=0 plane from the viewer. Lower values give a more flattened pyramid and therefore a more pronounced perspective effect. For example, a value of 1000px gives a moderate amount of foreshortening and a value of 200px gives an extreme amount.
この深度~値が `1px^v 未満の場合、
次に挙げる所では `1px^v として扱うモノトスル
⇒#
描画~目的/
`transform$p の`解決d値$を算出するとき/
`補間@#interpolation-of-transform-functions$の端点として利用するとき
◎
If the depth value is less than 1px, it must be treated as 1px for the purpose of rendering, for computing the resolved value of transform, and when used as the endpoint of interpolation.
注記:
上の “`1px^v 未満” 規則の意図は、
`perspective$f 関数を行列に変換する必要がある事例を受持つことにある。
◎
Note: The intent of the above rules on values less than 1px is that they cover the cases where the perspective() function needs to be converted into a matrix.
12.3. 原始関数とその派生関数
一部の変形-関数は、
より汎用な変形-関数の特殊な場合として表現できる。
後者は
原始関数
( `primitive transform functions^en, 略して `primitive^en ),
前者は その
派生関数
( `derived transform function^en )
と呼ばれる。
~3Dにおける原始関数, その派生関数は:
◎
Some transform functions can be represented by more generic transform functions. These transform functions are called derived transform functions, and the generic transform functions are called primitive transform functions. Three-dimensional primitives and their derived transform functions are:
原始関数
派生関数
`translate3d$f
`translateX$f,
`translateY$f,
`translateZ$f,
`translate$f
◎
for <translateX()>, <translateY()>, translateZ() and <translate()>.
`scale3d$f
`scaleX$f,
`scaleY$f,
`scaleZ$f,
`scale$f
◎
for <scaleX()>, <scaleY()>, scaleZ() and <scale()>.
`rotate3d$f
`rotate$f,
`rotateX$f,
`rotateY$f,
`rotateZ$f
◎
for <rotate()>, rotateX(), rotateY() and rotateZ().
派生関数に対応する原始関数として~2D, ~3D両者がある場合、
どちらを利用するかは,文脈から決まる。
`§ 原始関数と派生関数の補間@#interpolation-of-transform-functions$
を見よ。
◎
For derived transform functions that have a two-dimensional primitive and a three-dimensional primitive, the context decides about the used primitive. See Interpolation of primitives and derived transform functions.
13. 二つの行列の補間
2 つの行列の合間を補間するためには、
まず,各~行列を対応している[
並進, 回転, 拡縮, 斜傾
]
— `~3D行列$の場合は、
それに加えて遠近法の成分 —
に分解する。
次に,この分解された 2 つの[
一連の行列
]の間で、
互いに対応する行列を,数量的に補間する。
最後に、
その結果の一連の行列を,一つの行列に再構成する。
◎
When interpolating between two matrices, each matrix is decomposed into the corresponding translation, rotation, scale, skew and (for a 3D matrix) perspective values. Each corresponding component of the decomposed matrices gets interpolated numerically and recomposed back to a matrix in a final step.
13.1. 二つの~3D行列の補間
13.1.1. ~3D行列の分解-法
下の疑似~codeは
“`Graphics Gems II, edited by Jim Arvo^cite”
による “`unmatrix^en” 手法に基づくが、
`Gimbal Locks^en
【`ジンバルロック@https://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%B3%E3%83%90%E3%83%AB$】
の問題を避けるため,
`Euler angle^en
【`オイラー角@https://ja.wikipedia.org/wiki/%E3%82%AA%E3%82%A4%E3%83%A9%E3%83%BC%E8%A7%92$】
の代わりに
`Quaternions^en
【`四元数@https://ja.wikipedia.org/wiki/%E5%9B%9B%E5%85%83%E6%95%B0$】
を利用するよう改変されている。
◎
The pseudo code below is based upon the "unmatrix" method in "Graphics Gems II, edited by Jim Arvo", but modified to use Quaternions instead of Euler angles to avoid the problem of Gimbal Locks.
次の疑似~codeは~4x4斉次~行列に対して働く:
【!homogeneous transformation matrix同次変形n行列】
◎
The following pseudocode works on a 4x4 homogeneous matrix:
始値-行列を分解して得られた各~成分~値[
並進, 拡縮, 斜傾, 遠近法
]は、
対応する 終値-行列の各~成分との間で,線型に補間される。
◎
Each component of the decomposed values translation, scale, skew and perspective of the source matrix get linearly interpolated with each corresponding component of the destination matrix.
注記:
例えば、
始値-行列の translate[0]
と終値-行列の translate[0]
は数量的に補間され,その結果が~animateしている要素の並進を設定するために利用される。
◎
Note: For instance, translate[0] of the source matrix and translate[0] of the destination matrix are interpolated numerically, and the result is used to set the translation of the animating element.
分解された[
始値-/終値-
]行列の四元数は、
下の疑似~codeにて述べられる球面~線型~補間
( `Slerp^en 【`参考@https://en.wikipedia.org/wiki/Slerp$】)
を利用して,補間される。
◎
Quaternions of the decomposed source matrix are interpolated with quaternions of the decomposed destination matrix using the spherical linear interpolation (Slerp) as described by the pseudo code below:
補間の結果の値が、
要素の利用元~空間を変形するときに利用される。
これらの値は~4x4行列に再構成するために利用される。
これは、
次の疑似~codeにより行える:
◎
After interpolation, the resulting values are used to transform the elements user space. One way to use these values is to recompose them into a 4x4 matrix. This can be done following the pseudo code below:
2 つの変形-関数は、
名前も引数の個数も同じならば,
前節による換算を要することなく数量的に補間できる。
その計算-結果は、
同じ個数の引数を伴う同じ型の変形-関数になる。
◎
Two transform functions with the same name and the same number of arguments are interpolated numerically without a former conversion. The calculated value will be of the same transform function type with the same number of arguments.\
変形-関数[
`matrix$f,
`matrix3d$f,
`perspective$f
]には、
特別な規則が適用される
— いずれも、
まず~4x4行列に換算されてから,`§ 行列の補間$の定義に従って補間される。
◎
Special rules apply to <matrix()>, <matrix3d()> and <perspective()>.
◎
The transform functions <matrix()>, matrix3d() and perspective() get converted into 4x4 matrices first and interpolated as defined in section Interpolation of Matrices afterwards.
原始関数 `rotate3d$f の補間~用には、
まず,両~変形-関数の方向~vectorが正規化される。
[
互いの正規化された~vectorは等しくない
]かつ[
回転~角度は どちらも 0 でない
]場合、
両~変形-関数は,まず~4x4行列に換算されてから,`§ 行列の補間$の定義に従って補間される。
他の場合、
回転~角度は数量的に補間され,[
両~角度とも 0 になる場合は (0, 0, 1) /
~ELSE_ 0 でない角度
]による回転~vectorが利用される。
◎
For interpolations with the primitive rotate3d(), the direction vectors of the transform functions get normalized first. If the normalized vectors are not equal and both rotation angles are non-zero the transform functions get converted into 4x4 matrices first and interpolated as defined in section Interpolation of Matrices afterwards. Otherwise the rotation angle gets interpolated numerically and the rotation vector of the non-zero angle is used or (0, 0, 1) if both angles are zero.
2 つの変形~関数[
`translate(0)^v, `translate(100px)^v
]は、
同じ型を成し,同じ個数の引数をとる。
したがって,数量的に補間できる。
変形~関数[
`translateX(100px)^v / `translate(100px, 0)^v
]は、
それらと[
同じ型を成さない/
同じ個数の引数をとらない
]ので,変換~段を経ない限り補間し得ない。
◎
The two transform functions translate(0) and translate(100px) are of the same type, have the same number of arguments and therefore can get interpolated numerically. translateX(100px) is not of the same type and translate(100px, 0) does not have the same number of arguments, therefore these transform functions can not get interpolated without a former conversion step.
2 つの変形~関数は、[
同じ原始関数を共有するが,型は異なる/
同じ型を成すが,引数の個数は異なる
]場合でも,補間できる。
両~変形~関数は、
最初に共通な原始関数への変換が必要になり,
それから数量的に補間される。
算出d値は、
結果の補間された引数を伴う原始関数になる。
◎
Two different types of transform functions that share the same primitive, or transform functions of the same type with different number of arguments can be interpolated. Both transform functions need a former conversion to the common primitive first and get interpolated numerically afterwards. The computed value will be the primitive with the resulting interpolated arguments.
次の例は、
`div^e ~boxに~hoverされているときの,
`translateX(100px)^v から `translateY(100px)^v への 3 秒間の遷移を述べる。
両~変形~関数は、
同じ原始関数 `translate$f から派生するので,補間できる。
◎
The following example describes a transition from translateX(100px) to translateY(100px) in 3 seconds on hovering over the div box. Both transform functions derive from the same primitive translate() and therefore can be interpolated.
両~変形~関数は、
遷移-時には,共通な原始関数へ変形される。
[
`translateX(100px)^v は `translate(100px, 0)^v /
`translateY(100px)^v は `translate(0, 100px)^v
]に変換される。
両~変形~関数は、
それから数量的に補間し得るようになる。
◎
For the time of the transition both transform functions get transformed to the common primitive. translateX(100px) gets converted to translate(100px, 0) and translateY(100px) gets converted to translate(0, 100px). Both transform functions can then get interpolated numerically.
両~変形~関数が ある~2D原始関数を共有する場合、
両~変形~関数とも 当の~2D原始関数に変換される。
どちらかが~3D変形~関数である場合、
共通な~3D原始関数が利用される。
◎
If both transform functions share a primitive in the two-dimensional space, both transform functions get converted to the two-dimensional primitive. If one or both transform functions are three-dimensional transform functions, the common three-dimensional primitive is used.
この例では、
~2D変形~関数から~3D変形~関数へ~animateされる。
共通な原始関数は `translate3d$f になる。
◎
In this example a two-dimensional transform function gets animated to a three-dimensional transform function. The common primitive is translate3d().
◎
Addition of two transform lists Va and Vb is defined as list concatenation such that Vresult is equal to Vb appended to Va.
2 個の変形~list
( 値A, 値B )
の`累積$は、
互いの対応する【!with regards to matching】変形-関数どうしの補間と同じ手続きに従う
( `CSS-TRANSFORMS-1$r `§ 変形どうしの補間@~TRANSFORM#interpolation-of-transforms$
を見よ)
— 必要yなだけ[
~listに`恒等~変形-関数$を補充する/
`none^v を`恒等~変形-関数$に変換する/
両~引数を行列に変換する
]ことも含めて。
しかしながら,個々の~parameterは、
補間する代わりに,加算を利用して結合される。
ただし、
~parameterの値が[
`恒等~変形-関数$における 1
]である事例(例:
拡縮率~parameterや, 行列の `11^M, `22^M, `33^M, `44^M ~~成分
)においては、
次に与える
`1 に基づく値~用の累積@
を利用して結合する
⇒
%結果値 ~SET 値A ~PLUS 値B ~MINUS 1
◎
Accumulation of two transform lists Va and Vb follows the same steps as interpolation with regards to matching transform functions including padding lists with identity transform functions, converting none to an identity transform function, and converting both arguments to matrices as necessary (see CSS Transforms 1 § 9 Interpolation of Transforms). However, instead of interpolating the individual parameters, they are combined using arithmetic addition—except in the case of parameters whose value is one in the identity transform function (e.g. scale parameters and matrix elements m11, m22, m33, and m44), which combine using accumulation for one-based values as follows:
• Vresult = Va + Vb - 1
注記:
上の定義は、[
値B は 値A からの差分として動作する
]とする`累積$の意図を保全する。
それは、
次のような~animationが:
◎
The above definition preserves the intent of accumulation which is that Vb acts as a delta from Va and allows an animation such as:
◎
Some animations require a neutral element for addition. For transform functions this is a scalar or a list of scalars of 0. Examples of neutral elements for transform functions are translate(0), translate3d(0, 0, 0), translateX(0), translateY(0), translateZ(0), scale(0), scaleX(0), scaleY(0), scaleZ(0), rotate(0), rotate3d(vx, vy, vz, 0) (where v is a context dependent vector), rotateX(0), rotateY(0), rotateZ(0), skew(0, 0), skewX(0), skewY(0), matrix(0, 0, 0, 0, 0, 0), matrix3d(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) and perspective(none).
注記:
[
`matrix$f, `matrix3d$f, `perspective$f
]による単位元[
からの( `from^b ) /への( `to^b )
]~animationは、
離散的な~animationに~fall-backする(`§ 行列の補間$を見よ)。
◎
Note: Animations to or from the neutral element of additions <matrix()>, matrix3d() and perspective() fall back to discrete animations (See § 13 Interpolation of Matrices).
16. 変形-関数の数学的~記述
すべての変形-関数は、
次のような形の~4x4変形n行列として数学的に表現できる:
◎
Mathematically, all transform functions can be represented as 4x4 transformation matrices of the following form:
行列~上の並進の 1 単位は、
要素の`局所~座標系$の 1 画素と等価になる。
◎
One translation unit on a matrix is equivalent to 1 pixel in the local coordinate system of the element.
移動量 [ %tx, %ty, %tz ] による
`~3D並進@
は、
次の行列と等価になる:
◎
A 3D translation with the parameters tx, ty and tz is equivalent to the matrix:
`translate3d^dgm
拡縮率 [ %sx, %sy, %sz ] による
`~3D拡縮ng@
は、
次の行列と等価になる:
◎
A 3D scaling with the parameters sx, sy and sz is equivalent to the matrix:
`scale3d^dgm
軸~vector [ %x, %y, %z ] と回転角 %α による
`~3D回転@
は、
次の行列と等価になる:
◎
A 3D rotation with the vector [x,y,z] and the parameter alpha is equivalent to the matrix:
`rotate3dmatrix^dgm
ここで:
◎
where:
%sc = sin (%α/2) ⋅ cos (%α/2)
◎
\newline sc = \sin (\alpha/2) \cdot \cos (\alpha/2)\
%ss = sin (%α/2) ⋅ sin (%α/2)
◎
\newline sq = \sin^2 (\alpha/2)
%x, %y, %z は、
いずれも正規化-済み
— [
それぞれの 2 乗の総和
]の平方根で除算-済み —
とする。
◎
and where x, y, and z have been normalized (that is, where the x, y, and z values given have been divided by the square root of the sum of their squares).
注記:
各~軸~周りの回転は、
以下のように単純~化される。
◎
↓
X 軸~周りの回転:
◎
Note that this means that a rotation around the X axis simplifies to:
`rotate3dX^dgm
Y 軸~周りの回転:
◎
a rotation around the Y axis simplifies to:
`rotate3dY^dgm
Z 軸~周りの回転:
◎
and a rotation around the Z axis simplifies to:
`rotate3dZ^dgm
~parameter %d による
`透視~投影~行列@
は、
次の行列と等価になる:
◎
A perspective projection matrix with the parameter d is equivalent to the matrix:
`perspective^dgm
【![ x, y, z, 1 ] → [ x, y, z, 1 − z/d ] 〜 [ x/s, y/s, z/s, 1 ]; s = 1 − z/d】
~parameter %d は、
`~none1$v の場合には無限大として扱われる
(結果の行列は、
単位i行列になる)。
◎
If the parameter d is none it is treated as infinity (and the resulting matrix is the identity matrix).
この仕様は、
新たな`呈示~属性$として,次に挙げるものも導入する
⇒#
`transform-origin$p,
`perspective$p,
`perspective-origin$p,
`transform-style$p,
`backface-visibility$p
◎
This specification will also introduce the new presentation attributes transform-origin, perspective, perspective-origin, transform-style and backface-visibility.
新たに導入された`呈示~属性$の値は、
~SVG~data型の構文~規則 `SVG11$r
【`参照@~SVGtypes#syntax$( `SVG2$r )】
に従って構文解析される。
◎
Values on new introduced presentation attributes get parsed following the syntax rules on SVG Data Types [SVG11].
18. ~SVG~animation
18.1. `animate$e, `set$e 要素
この仕様により`呈示~属性$とされる~prop[
`perspective$p,
`perspective-origin$p,
`transform-style$p,
`backface-visibility$p
]は、
~animate可能である。
[
`transform-style$p,
`backface-visibility$p
]は、
加法的でない。
◎
The introduce presentation attributes perspective, perspective-origin, transform-style and backface-visibility are animatable. transform-style and backface-visibility are non-additive.
19. 更なる課題
`https://lists.w3.org/Archives/Public/www-style/2015Mar/0371.html@https://lists.w3.org/Archives/Public/www-style/2015Mar/0371.html$
により,当~WGは、
~SVGの `non-scaling-stroke^v 仕様
【 “`拡縮されない~stroke@~SVGpainting#PaintingVectorEffects$” 】
などから利用するために,
変形を統一された “拡縮率” に分解するための公式を追加するものと解決した
(この仕様は[
`scaleX$f , `scaleY$f, `scaleZ$f
]に分解する方法を すでに定義している)。
`その公式はここに定義される@https://www.w3.org/Graphics/SVG/WG/wiki/Proposals/Specifying_decomposition_of_scale$
。
◎
Per https://lists.w3.org/Archives/Public/www-style/2015Mar/0371.html, the WG resolved to add a formula for decomposing a transform into a unified "scale" (the spec already defines how to decompose it into scaleX/Y/Z), for use by things like SVG’s non-scaling stroke spec. Formula is defined here.
~security/~privacyの考慮点
この仕様が導入する新たな[
~privacy/~security
]の考慮点は,無い。
◎
This specification introduces no new security or privacy considerations.
変更点
`2021年 11月 9日 作業草案@~TR/2021/WD-css-transforms-2-20211109/$
からの主要な変更点
◎
Recent Changes
◎
Substantive changes since 9 November 2021 WD:
まだ無い
◎
None yet
`2020年 3月 3日 作業草案@~TR/2020/WD-css-transforms-2-20200303/$
からの主要な変更点
◎
Substantive changes since 3 March 2020 WD:
この仕様は、もはや,[
個々の変形~propが~2D値, ~3D値どちらをとるか状態を保守する
]よう要求しない
— 代わりに,[
~2Dとして表出し得る値
【例: `translate$p に対する `10px 10px 0^v 】
は、
どれも~2Dとして扱う
]ことを要求するようにした。
( `3305$issue)
◎
The specification no longer requires maintaining state for whether individual transform properties have 2D or 3D values, but instead requires that any value that can be expressed as 2D is treated as 2D (see #3305).
注記:
相似的な変更は、
変形~関数に対しても意図されるが,まだ為されていない。
◎
Note: An analogous change is intended for transform functions, but it has not been made yet.
`scale$p ~prop, [
`scale$f, `scaleX$f, `scaleY$f
]関数は、
今や百分率を~supportする。
(`3399$issue)
◎
The scale property and scale(), scaleX() and scaleY() functions now support percentages (see #3399).
複数の定義を仕様の~3D描画~文脈~用の定義と整合するよう修正した:
◎
Fix multiple definitions to be consistent with the spec’s definition for a 3D Rendering Context:
~3D描画~文脈を確立している要素の[
~border,
背景,
~box装飾
]は、
自身の~3D風景における z=0 平面に描画されるものと定義した
— ~3D風景の背後ではなく。
(`6238$issue)
◎
Define that borders, backgrounds, and box decorations of an element establishing a 3D Rendering Context are rendered at z=0 in its 3D scene, rather than behind its 3D scene (see #6238).
`累積~3D変形n行列$は、[
【~3D描画~文脈を】確立している要素の `transform$p,
その親の `perspective$p
]も含めるよう定義した。
(`6191$issue)
◎
Define accumulated 3D transformation matrix to include the transform of the establishing element and the perspective of its parent (see #6191).
塗り封込めは、
`~group化~prop値$になるものと定義した。
(`6202$issue)
◎
Define that paint containment is a grouping property (see #6202).
`perspective$f に `~none1$v 引数の~supportを追加した。
( `6488$issue)
◎
Add support for a none argument to perspective() (see #6488).
`perspective$f の値の切詰めは、[
解決d値, 補間
]にも適用するものと定義した。
(`6320$issue, `6346$issue)
◎
Define that clamping of values of perspective() also applies to resolved values and interpolation (see #6320 and #6346).
`preserve-3d^v による効果が影響するのは、
`変形-可能$な要素に限られることを明確化した。
(`6430$issue)
◎
Clarify that the effects of preserve-3d only affect transformable elements (see #6430).
`perspective$f 用の`加算における単位元@#neutral-element$を
`perspective(none)^v に修正した。
◎
Fixed the neutral element for addition for perspective() to be perspective(none)
`translate$p の解決d値が百分率を含むことについて,注記を追加した。
(`2124$issue)
◎
Added a note that the resolved value of translate includes percentages (see #2124).
~3D~sort法を より精確に述べた
— どの子孫が含まれるか説明して,
`付録 E$ への参照を段 1 〜 7 に制限しないようにした。
(`926$issue)
◎
Describe 3D sorting more precisely, to explain which descendants are included, and not limit Appendix E reference to steps 1-7 (see #926).