Paquete | flash.geom |
Clase | public class Matrix3D |
Herencia | Matrix3D Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Una sola matriz puede combinar varias transformaciones y aplicarlas de una sola vez a un objeto de visualización 3D. Por ejemplo, se puede aplicar una matriz a coordenadas 3D para realizar una rotación seguida de una traslación.
Cuando se establece de forma explícita la propiedad z
de cualquiera de las propiedades de rotación o de escala de un objeto de visualización, se crea automáticamente un objeto Matrix3D correspondiente.
Puede acceder al objeto Matrix3D de un objeto de visualización 3D mediante la propiedad transform.matrix3d
. Los objetos 2D no tienen ningún objeto Matrix3D.
El valor de la propiedad z
de un objeto 2D es cero y el valor de su propiedad matrix3D
es null
.
Nota: si se asigna el mismo objeto Matrix3D a dos objetos de visualización distintos, se emite un error de tiempo de ejecución.
La clase Matrix3D utiliza una matriz cuadrada 4x4: una tabla de cuatro filas y columnas de números que contienen los datos para la transformación. Las primeras tres filas de la matriz contienen datos para cada eje 3D (x,y,z). La traslación se incluye en la última columna. Los datos de orientación y escala se encuentran en las tres primeras columnas. Los factores de escala son los números diagonales de las tres primeras columnas. A continuación, se muestra una representación de elementos Matrix3D:
Para utilizar la clase Matrix3D no es necesario conocer las matemáticas de matrices. Ofrece métodos específicos que simplifican la tarea de transformación y proyección, como los métodos appendTranslation()
, appendRotation()
o interpolateTo()
. También puede utilizar los métodos decompose()
y recompose()
o la propiedad rawData
para acceder a los elementos subyacentes de la matriz.
Los objetos de visualización almacenan en caché sus propiedades de rotación de eje para disponer de una rotación independiente para cada eje y administrar las diferentes combinaciones de rotaciones. Cuando se llama a un método de un objeto Matrix3D para transformar un objeto de visualización, la caché de rotación del objeto se invalida.
Elementos de API relacionados
flash.geom.Transform
flash.geom.PerspectiveProjection
flash.geom.Vector3D
flash.geom.Orientation3D
flash.geom.Utils3D
flash.geom.Matrix
Propiedad | Definido por | ||
---|---|---|---|
constructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada. | Object | ||
determinant : Number [solo lectura]
Número que determina si una matriz se puede invertir. | Matrix3D | ||
position : Vector3D
Objeto Vector3D que contiene la posición, las coordenadas 3D (x,y,z) de un objeto de visualización dentro del marco de referencia de la transformación. | Matrix3D | ||
rawData : Vector.<Number>
Un vector de 16 números, donde cada cuatro elementos forman una columna de una matriz 4x4. | Matrix3D |
Método | Definido por | ||
---|---|---|---|
Crea un objeto Matrix3D. | Matrix3D | ||
Añade la matriz multiplicando otro objeto Matrix3D por el objeto Matrix3D actual. | Matrix3D | ||
Añade como apéndice una rotación incremental a un objeto Matrix3D. | Matrix3D | ||
Añade como apéndice un cambio de escala incremental a lo largo de los ejes x, y y z, a un objeto Matrix3D. | Matrix3D | ||
Añade como apéndice una traslación incremental, un cambio de posición a lo largo de los ejes x, y y z, a un objeto Matrix3D. | Matrix3D | ||
Devuelve un nuevo objeto Matrix3D que es una copia exacta del objeto Matrix3D actual. | Matrix3D | ||
Copia un objeto Vector3D en columna específica del objeto Matrix3D de llamada. | Matrix3D | ||
Copia la columna específica del objeto Matrix3D de llamada en el objeto Vector3D. | Matrix3D | ||
Copia todos los datos de la matriz desde el objeto Matrix3D de origen en el objeto Matrix3D de llamada. | Matrix3D | ||
Copia todos los datos vectoriales desde el objeto vectorial de origen en el objeto Matrix3D de llamada. | Matrix3D | ||
Copia todos los datos de la matriz del objeto Matrix3D de llamada en el vector. | Matrix3D | ||
Copia un objeto Vector3D en fila concreta del objeto Matrix3D de llamada. | Matrix3D | ||
Copia la fila concreta del objeto Matrix3D de llamada en el objeto Vector3D. | Matrix3D | ||
Matrix3D | |||
Devuelve los valores de configuración de la traslación, rotación y escala de la matriz de transformación como un vector de tres objetos Vector3D. | Matrix3D | ||
Utilice la matriz de transformación sin los elementos de traslación para transformar un objeto Vector3D desde una coordenada de espacio a otra. | Matrix3D | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Convierte la matriz actual en una matriz de identidad o unidad. | Matrix3D | ||
[estática]
Interpola la traslación, rotación y escala de transformación de una matriz con los de la matriz de destino. | Matrix3D | ||
Interpola esta matriz hacia la traslación, rotación y transformaciones de la escala de la matriz de destino. | Matrix3D | ||
Invierte la matriz actual. | Matrix3D | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Rota el objeto de visualización de forma que quede mirando hacia una posición especificada. | Matrix3D | ||
Incluye como prefijo una matriz multiplicando el objeto Matrix3D actual por otro. | Matrix3D | ||
Añade como prefijo una rotación incremental a un objeto Matrix3D. | Matrix3D | ||
Añade como prefijo un cambio de escala incremental a lo largo de los ejes x, y y z, a un objeto Matrix3D. | Matrix3D | ||
Añade como prefijo una traslación incremental, un cambio de posición a lo largo de los ejes x, y y z, a un objeto Matrix3D. | Matrix3D | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Establece los valores de configuración de traslación, rotación y escala de la matriz de transformación. | Matrix3D | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Utilice la matriz de transformación para transformar un objeto Vector3D desde una coordenada de espacio a otra. | Matrix3D | ||
Utiliza la matriz de transformación para transformar un vector de elementos Number de un espacio de coordenadas a otro. | Matrix3D | ||
Convierte el objeto Matrix3D actual en una matriz en la que las filas y columnas se intercambian. | Matrix3D | ||
Devuelve el valor simple del objeto especificado. | Object |
determinant | propiedad |
determinant:Number
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Número que determina si una matriz se puede invertir.
Un objeto Matrix3D debe poder invertirse. Puede utilizar la propiedad determinant
para asegurarse de que un objeto Matrix3D se puede invertir. Si el determinante es cero, no existe una inversa de la matriz. Por ejemplo, si una fila o columna entera de una matriz es cero o si dos filas o columnas son iguales, el determinante es cero. El determinante también se utiliza para solucionar una serie de ecuaciones.
Sólo una matriz cuadrada, como la clase Matrix3D, tiene un determinante.
Implementación
public function get determinant():Number
Elementos de API relacionados
position | propiedad |
position:Vector3D
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Objeto Vector3D que contiene la posición, las coordenadas 3D (x,y,z) de un objeto de visualización dentro del marco de referencia de la transformación. La propiedad position
proporciona acceso inmediato al vector de traslación de la matriz del objeto de visualización sin necesidad de descomponer y recomponer la matriz.
Con la propiedad position
, puede obtener y establecer los elementos de traslación de la matriz de transformación.
Implementación
public function get position():Vector3D
public function set position(value:Vector3D):void
Elementos de API relacionados
rawData | propiedad |
rawData:Vector.<Number>
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Un vector de 16 números, donde cada cuatro elementos forman una columna de una matriz 4x4.
Si la propiedad rawData
se establece en una matriz que no se puede invertir, se arroja una excepción. El objeto Matrix3D debe poder invertirse. Si se requiere una matriz que no se pueda invertir, cree una subclase del objeto Matrix3D.
Implementación
public function get rawData():Vector.<Number>
public function set rawData(value:Vector.<Number>):void
Elementos de API relacionados
Matrix3D | () | Información sobre |
public function Matrix3D(v:Vector.<Number> = null)
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Crea un objeto Matrix3D. Los objetos Matrix3D se pueden inicializar con un vector de 16 números, donde cada grupo de cuatro elementos son una columna. Una vez que se crea el objeto Matrix3D, puede acceder a sus elementos de matriz con la propiedad rawData
.
Si no se define ningún parámetro, el constructor genera un objeto Matrix3D de identidad o unidad. En la notación de matrices, una matriz de identidad tiene un valor de uno para todos los elementos en la posición diagonal principal y un valor de cero para todos los demás elementos. El valor de la propiedad rawData
de una matriz de identidad es: 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1
. El valor de la posición o traslación de la matriz de identidad es Vector3D(0,0,0)
, la configuración de la rotación es Vector3D(0,0,0)
y el valor de la escala es Vector3D(1,1,1)
.
v:Vector.<Number> (default = null ) — Un vector de 16 números, donde cada cuatro elementos forman una columna de una matriz 4x4.
|
Elementos de API relacionados
append | () | método |
public function append(lhs:Matrix3D):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Añade la matriz multiplicando otro objeto Matrix3D por el objeto Matrix3D actual. El resultado combina ambas transformaciones de matriz. Se puede multiplicar un objeto Matrix3D por varias matrices. El objeto Matrix3D final contiene el resultado de todas las transformaciones.
La multiplicación de matrices es diferente a la suma de matrices. La multiplicación de matrices no es conmutativa. En otras palabras, A multiplicado por B no es igual que B multiplicado por A. Con el método append()
, la multiplicación tiene lugar desde el lado izquierdo, lo que significa que el objeto Matrix3D lhs
se encuentra en el lado izquierdo del operador de multiplicación.
thisMatrix = lhs * thisMatrix;
La primera vez que se llama al método append()
, éste realiza una modificación relativa al espacio principal. Las llamadas posteriores son relativas al marco de referencia del objeto Matrix3D añadido.
El método append()
sustituye la matiz actual por la añadida. Si desea añadir dos matrices sin modificar la matriz actual, cópiela mediante el método clone()
y, a continuación, aplique el método append()
a la copia.
Parámetros
lhs:Matrix3D — Matriz de la mano izquierda multiplicada por el objeto Matrix3D actual.
|
Elementos de API relacionados
appendRotation | () | método |
public function appendRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Añade como apéndice una rotación incremental a un objeto Matrix3D. Cuando se aplica el objeto Matrix3D a un objeto de visualización, la matriz realiza la rotación después de otras transformaciones en el objeto Matrix3D.
La rotación del objeto de visualización se define por un eje, un grado incremental de rotación alrededor del eje y un punto de giro opcional para el centro de la rotación del objeto. El eje puede ser cualquier dirección general. Los ejes habituales son X_AXIS
(Vector3D(1,0,0)
), Y_AXIS
(Vector3D(0,1,0)
) y Z_AXIS
(Vector3D(0,0,1)
). En la terminología de aviación, la rotación sobre el eje y se denomina "yaw". La rotación sobre el eje x se conoce como "pitch". La rotación sobre el eje z se denomina "roll".
También se debe tener en cuenta el orden de la transformación. Una rotación seguida de una transformación de traslación produce un efecto diferente al de una traslación seguida de una transformación de rotación.
El efecto de la rotación no es absoluto. Es relativo a la posición y la orientación actuales. Para realizar un cambio absoluto a la matriz de transformación, utilice el método recompose()
. El método appendRotation()
también es diferente de la propiedad de rotación de eje del objeto de visualización como, por ejemplo, la propiedad rotationX
. La propiedad de rotación siempre se lleva a cabo antes de una traslación, mientras que el método appendRotation()
se lleva a cabo en relación con los elementos que ya estén incluidos en la matriz. Para asegurarse de que obtiene un efecto similar al de la propiedad de rotación de eje del objeto de visualización, utilice el método prependRotation()
, que lleva a cabo la rotación antes que otras transformaciones en la matriz.
Cuando se aplica la transformación del método appendRotation()
a un objeto Matrix3D de un objeto de visualización, los valores de la propiedad de rotación en caché del objeto de visualización se invalidan.
Una forma de hacer rotar un objeto de visualización alrededor de un punto específico relativo a su ubicación consiste en establecer la traslación del objeto en el punto especificado, rotar el objeto mediante el método appendRotation()
y trasladar el objeto de nuevo a la posición original. En el siguiente ejemplo, el objeto de visualización 3D myObject
lleva a cabo una rotación del eje y alrededor de la coordenada (10,10,0).
myObject.z = 1; myObject.transform.matrix3D.appendTranslation(10,10,0); myObject.transform.matrix3D.appendRotation(1, Vector3D.Y_AXIS); myObject.transform.matrix3D.appendTranslation(-10,-10,0);
Parámetros
degrees:Number — Grado de la rotación.
| |
axis:Vector3D — Eje o dirección de la rotación. Los ejes habituales son X_AXIS (Vector3D(1,0,0) ), Y_AXIS (Vector3D(0,1,0) ) y Z_AXIS (Vector3D(0,0,1) ). Este vector debe tener una longitud de uno.
| |
pivotPoint:Vector3D (default = null ) — Punto que determina el centro de la rotación de un objeto. El punto de giro predeterminado es un punto de registro.
|
Elementos de API relacionados
appendScale | () | método |
public function appendScale(xScale:Number, yScale:Number, zScale:Number):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Añade como apéndice un cambio de escala incremental a lo largo de los ejes x, y y z, a un objeto Matrix3D. Cuando se aplica el objeto Matrix3D a un objeto de visualización, la matriz realiza los cambios de escala después de otras transformaciones en el objeto Matrix3D. El factor de escala predeterminado es (1.0, 1.0, 1.0).
La escala se define como un conjunto de tres cambios incrementales a lo largo de los tres ejes (x,y,z). Puede multiplicar cada eje con un número diferente. Cuando se aplican los cambios de la escala a un objeto de visualización, el tamaño de éste se reduce. Por ejemplo, si se establecen los ejes x, y y z en dos, se duplica el tamaño del objeto, mientras que si se establecen en 0.5
, el tamaño se reduce a la mitad. Para asegurarse de que la transformación de escala sólo afecta a un eje específico, establezca los otros parámetros en uno. Un parámetro de uno implica que no se producen cambios en la escala a lo largo del eje específico.
Se puede utilizar el método appendScale()
para cambiar el tamaño y para administrar las distorsiones como, por ejemplo, la expansión o contracción de un objeto de visualización, o para aplicar el zoom en una ubicación. Las transformaciones de escala se realizan automáticamente durante la rotación y traslación de un objeto de visualización.
También se debe tener en cuenta el orden de la transformación. Un cambio de tamaño seguido de una transformación de traslación produce un efecto diferente al de una traslación seguida de un cambio de tamaño.
Parámetros
xScale:Number — Multiplicador utilizado para aplicar una escala al objeto a lo largo del eje x.
| |
yScale:Number — Multiplicador utilizado para aplicar una escala al objeto a lo largo del eje y.
| |
zScale:Number — Multiplicador utilizado para aplicar una escala al objeto a lo largo del eje z.
|
Elementos de API relacionados
appendTranslation | () | método |
public function appendTranslation(x:Number, y:Number, z:Number):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Añade como apéndice una traslación incremental, un cambio de posición a lo largo de los ejes x, y y z, a un objeto Matrix3D. Cuando se aplica el objeto Matrix3D a un objeto de visualización, la matriz realiza los cambios de traslación después de otras transformaciones en el objeto Matrix3D.
La traslación se define como un conjunto de tres cambios incrementales a lo largo de los tres ejes (x,y,z). Cuando se aplica la transformación a un objeto de visualización, éste se mueve desde su ubicación actual a lo largo de los ejes x, y y z, tal como se especifica en los parámetros. Para asegurarse de que la traslación sólo afecta a un eje específico, establezca los otros parámetros en cero. Un parámetro cero implica que no se realiza ningún cambio a lo largo del eje específico.
Los cambios de traslación no son absolutos. Son relativos a la posición actual y la orientación de la matriz. Para realizar un cambio absoluto a la matriz de transformación, utilice el método recompose()
. También se debe tener en cuenta el orden de la transformación. Una traslación seguida de una transformación de rotación produce un efecto diferente al de una rotación seguida de una traslación.
Parámetros
x:Number — Traslación incremental a lo largo del eje x.
| |
y:Number — Traslación incremental a lo largo del eje y.
| |
z:Number — Traslación incremental a lo largo del eje z.
|
Elementos de API relacionados
clone | () | método |
public function clone():Matrix3D
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Devuelve un nuevo objeto Matrix3D que es una copia exacta del objeto Matrix3D actual.
Valor devueltoMatrix3D — Nuevo objeto Matrix3D que es una copia exacta del objeto Matrix3D actual.
|
copyColumnFrom | () | método |
public function copyColumnFrom(column:uint, vector3D:Vector3D):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia un objeto Vector3D en columna específica del objeto Matrix3D de llamada.
Parámetros
column:uint — La columna de destino de la copia.
| |
vector3D:Vector3D — El objeto Vector3D desde el que se van a copiar los datos.
|
copyColumnTo | () | método |
public function copyColumnTo(column:uint, vector3D:Vector3D):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia la columna específica del objeto Matrix3D de llamada en el objeto Vector3D.
Parámetros
column:uint — La columna desde la que se van a copiar los datos.
| |
vector3D:Vector3D — El objeto Vector3D de destino de la copia.
|
copyFrom | () | método |
public function copyFrom(sourceMatrix3D:Matrix3D):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia todos los datos de la matriz desde el objeto Matrix3D de origen en el objeto Matrix3D de llamada.
Parámetros
sourceMatrix3D:Matrix3D — El objeto Matrix3D desde el que se van a copiar los datos.
|
copyRawDataFrom | () | método |
public function copyRawDataFrom(vector:Vector.<Number>, index:uint = 0, transpose:Boolean = false):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia todos los datos vectoriales desde el objeto vectorial de origen en el objeto Matrix3D de llamada. El parámetro opcional index permite seleccionar cualquier ranura inicial en el vector.
Parámetros
vector:Vector.<Number> — El objeto vectorial desde el que se van a copiar los datos.
| |
index:uint (default = 0 )
| |
transpose:Boolean (default = false )
|
copyRawDataTo | () | método |
public function copyRawDataTo(vector:Vector.<Number>, index:uint = 0, transpose:Boolean = false):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia todos los datos de la matriz del objeto Matrix3D de llamada en el vector. El parámetro opcional index permite seleccionar cualquier ranura inicial de destino en el vector.
Parámetros
vector:Vector.<Number> — El objeto vectorial en el que se van a copiar los datos.
| |
index:uint (default = 0 )
| |
transpose:Boolean (default = false )
|
copyRowFrom | () | método |
public function copyRowFrom(row:uint, vector3D:Vector3D):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia un objeto Vector3D en fila concreta del objeto Matrix3D de llamada.
Parámetros
row:uint — La fila desde en que se van a copiar los datos.
| |
vector3D:Vector3D — El objeto Vector3D desde el que se van a copiar los datos.
|
copyRowTo | () | método |
public function copyRowTo(row:uint, vector3D:Vector3D):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia la fila concreta del objeto Matrix3D de llamada en el objeto Vector3D.
Parámetros
row:uint — La fila desde la que se van a copiar los datos.
| |
vector3D:Vector3D — El objeto Vector3D en el que se van a copiar los datos.
|
copyToMatrix3D | () | método |
decompose | () | método |
public function decompose(orientationStyle:String = "eulerAngles"):Vector.<Vector3D>
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Devuelve los valores de configuración de la traslación, rotación y escala de la matriz de transformación como un vector de tres objetos Vector3D. El primer objeto Vector3D contiene los elementos de traslación. El segundo objeto Vector3D contiene los elementos de rotación. El tercer objeto Vector3D contiene los elementos de escala.
Algunos métodos Matrix3D, como el método interpolateTo()
, descomponen y recomponen automáticamente la matriz para realizar la transformación.
Para modificar la transformación de la matriz con un marco de referencia principal absoluto, recupere la configuración con el método decompose()
y realice los cambios oportunos. Con el método recompose()
puede establecer el objeto Matrix3D en la transformación modificada.
El parámetro del método decompose()
especifica el estilo de orientación que se utilizará para la transformación. La orientación predeterminada es eulerAngles
, que define la orientación con tres ángulos de rotación independientes para cada eje. Las rotaciones tienen lugar de forma consecutiva y no cambian los ejes de las demás. Las propiedades de rotación del eje del objeto de visualización llevan a cabo una transformación de estilo de orientación de ángulos de Euler. Las otras opciones de estilo de orientación son axisAngle
y cuaternión
. La orientación de ángulo con eje utiliza una combinación de un eje y un ángulo para determinar la orientación. El eje alrededor del cual se rota el objeto es un vector de unidad que representa una dirección. El ángulo representa la magnitud de la rotación sobre el vector. La dirección también determina hacia dónde mira un objeto de visualización, mientras que el ángulo determina cuál es la dirección hacia arriba. Los métodos appendRotation()
y prependRotation()
utilizan la orientación de ángulo con eje. La orientación de cuaternión utiliza números complejos y el cuarto elemento de un vector. Los tres ejes de rotación (x, y, z) y un ángulo de rotación (w) representan la orientación. El método interpolate()
utiliza cuaternión.
Parámetros
orientationStyle:String (default = "eulerAngles ") — Parámetro opcional que determina el estilo de orientación que se utiliza para la transformación de matriz. Los tres tipos de estilo de orientación son eulerAngles (constante EULER_ANGLES ), axisAngle (constante AXIS_ANGLE ) y cuaternión (constante QUATERNION ). Para obtener información adicional sobre los diferentes estilos de orientación, consulte la clase geom.Orientation3D .
|
Vector.<Vector3D> — Vector de tres objetos Vector3D, cada uno de los cuales contiene los valores de configuración de la traslación, rotación y escala, respectivamente.
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
decompose()
y recompose()
para hacer que una elipse se expanda horizontalmente al tiempo que se mueve hacia el punto de fuga. El primer objeto Vector3D devuelto por el método decompose()
contiene las coordenadas de traslación. El tercer objeto Vector3D contiene la configuración de escala. El método incrementBy()
del objeto Vector3D incrementa los valores de configuración absolutos de traslación y escala de la matriz.
package { import flash.display.MovieClip; import flash.display.Shape; import flash.geom.*; import flash.events.Event; public class Matrix3DdecomposeExample extends MovieClip { private var ellipse:Shape = new Shape(); public function Matrix3DdecomposeExample():void { ellipse.x = (this.stage.stageWidth / 2); ellipse.y = (this.stage.stageHeight - 40); ellipse.z = 1; ellipse.graphics.beginFill(0xFF0000); ellipse.graphics.lineStyle(2); ellipse.graphics.drawEllipse(0, 0, 50, 40); ellipse.graphics.endFill(); addChild(ellipse); ellipse.addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function enterFrameHandler(e:Event):void { var v3:Vector.<Vector3D> = new Vector.<Vector3D>(3); v3 = ellipse.transform.matrix3D.decompose(); v3[0].incrementBy(new Vector3D(0,0,1)); v3[2].incrementBy(new Vector3D(0.01,0,0)); ellipse.transform.matrix3D.recompose(v3); } } }
deltaTransformVector | () | método |
public function deltaTransformVector(v:Vector3D):Vector3D
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Utilice la matriz de transformación sin los elementos de traslación para transformar un objeto Vector3D desde una coordenada de espacio a otra. El objeto Vector3D devuelto contiene las nuevas coordenadas después de que se hayan aplicado las transformaciones de rotación y escala. Si el método deltaTransformVector()
aplica una matriz que sólo contiene una transformación de traslación, el objeto Vector3D devuelto es el mismo que el original.
Puede utilizar el método deltaTransformVector()
para que un objeto de visualización de un espacio de coordenada responda a la transformación de rotación de un segundo objeto de visualización. El objeto no copia la rotación sino que sólo cambia su posición para reflejar los cambios en la rotación. Por ejemplo, para utilizar la API display.Graphics
para dibujar un objeto de visualización 3D rotando, debe asignar las coordenadas de rotación del objeto a un punto 2D. En primer lugar, recupere las coordenadas 3D del objeto después de cada rotación mediante el método deltaTransformVector()
. A continuación, aplique el método local2DToGlobal()
del objeto de visualización para trasladar las coordenadas 3D a los puntos 2D. Después, puede utilizar los puntos 2D para dibujar el objeto 3D en rotación.
Nota: este método establece automáticamente en 0.0 el componente w de Vector3D pasado.
Parámetros
v:Vector3D — Objeto Vector3D que contiene las coordenadas que se transformarán.
|
Vector3D — Objeto Vector3D con las coordenadas transformadas.
|
Elementos de API relacionados
identity | () | método |
public function identity():void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Convierte la matriz actual en una matriz de identidad o unidad. Una matriz de identidad tiene un valor de uno para los elementos en la diagonal principal y un valor de cero para todos los demás elementos. El resultado es una matriz donde el valor rawData
es 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1
, la configuración de rotación se ha establecido en Vector3D(0,0,0)
, la configuración de posición o traslación se ha establecido en Vector3D(0,0,0)
y la escala en Vector3D(1,1,1)
. A continuación se muestra una representación de una matriz de identidad.
Un objeto transformado mediante la aplicación de una matriz de identidad no realiza ninguna transformación. Es decir, si una matriz se multiplica por una matriz de identidad, el resultado será una matriz igual que (idéntica a) la original.
interpolate | () | método |
public static function interpolate(thisMat:Matrix3D, toMat:Matrix3D, percent:Number):Matrix3D
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Interpola la traslación, rotación y escala de transformación de una matriz con los de la matriz de destino.
El método interpolate()
evita algunos resultados no deseados que pueden ocurrir cuando se utilizan métodos como las propiedades de rotación de eje del objeto de visualización. El método interpolate()
invalida el valor en caché de la propiedad de rotación del objeto de visualización y convierte los elementos de la orientación de la matriz del objeto de visualización en un cuaternión antes de la interpolación. Este método proporciona el trazado más corto y eficaz para la rotación. Asimismo, produce una rotación suave y sin bloqueo de ejes. Cuando se utilizan ángulos de Euler, en los que cada eje se trata de forma independiente, se puede producir un bloqueo de ejes. Durante la rotación alrededor de dos o más ejes, éstos se alinean, lo que puede producir resultados inesperados. Con la rotación de cuaternión se evita el bloqueo de ejes.
Las llamadas consecutivas al método interpolate()
pueden producir el efecto de un objeto de visualización que comienza rápidamente y, a continuación, se aproxima lentamente a otro objeto de visualización. Por ejemplo, si establece el parámetro thisMat
en el objeto Matrix3D devuelto, el parámetro toMat
en el objeto Matrix3D asociado del objeto de visualización de destino y el parámetro percent
en 0,1
, el objeto de visualización se mueve un diez por ciento hacia el objeto de destino. En llamadas o fotogramas posteriores, el objeto se mueve un diez por ciento del 90 por ciento restante; a continuación, el diez por ciento de la distancia restante y así hasta que alcanza el destino.
Parámetros
thisMat:Matrix3D — Objeto Matrix3D que se interpolará.
| |
toMat:Matrix3D — Objeto Matrix3D de destino.
| |
percent:Number — Valor entre 0 y 1 que determina el porcentaje que el objeto Matrix3D thisMat se interpola hacia el objeto Matrix3D de destino.
|
Matrix3D — Objeto Matrix3D con elementos que sitúan los valores de la matriz entre la matriz original y la de destino. Cuando se aplica la matriz devuelta al objeto de visualización this , éste se aproxima al objeto de destino según el porcentaje especificado.
|
Elementos de API relacionados
interpolateTo | () | método |
public function interpolateTo(toMat:Matrix3D, percent:Number):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Interpola esta matriz hacia la traslación, rotación y transformaciones de la escala de la matriz de destino.
El método interpolateTo()
evita los resultados no deseados que pueden ocurrir cuando se utilizan métodos como las propiedades de rotación de eje del objeto de visualización. El método interpolateTo()
invalida el valor en caché de la propiedad de rotación del objeto de visualización y convierte los elementos de la orientación de la matriz del objeto de visualización en un cuaternión antes de la interpolación. Este método proporciona el trazado más corto y eficaz para la rotación. Asimismo, produce una rotación suave y sin bloqueo de ejes. Cuando se utilizan ángulos de Euler, en los que cada eje se trata de forma independiente, se puede producir un bloqueo de ejes. Durante la rotación alrededor de dos o más ejes, éstos se alinean, lo que puede producir resultados inesperados. Con la rotación de cuaternión se evita el bloqueo de ejes.
Nota: En caso de interpolación, el valor de escalado de la matriz se restablece y esta se normaliza.
Las llamadas consecutivas al método interpolateTo()
pueden producir el efecto de un objeto de visualización que comienza rápidamente y, a continuación, se aproxima lentamente a otro objeto de visualización. Por ejemplo, si el parámetro de porcentaje se establece en 0,1
, el objeto de visualización se mueve un diez por ciento hacia el objeto de destino especificado por el parámetro toMat
. En llamadas o fotogramas posteriores, el objeto se mueve un diez por ciento del 90 por ciento restante; a continuación, el diez por ciento de la distancia restante y así hasta que alcanza el destino.
Parámetros
toMat:Matrix3D — Objeto Matrix3D de destino.
| |
percent:Number — Valor entre 0 y 1 que determina la ubicación del objeto de visualización relativo al destino. Cuánto más cerca de 1,0 esté el valor, más cerca está el objeto de visualización de su posición actual. Cuánto más cerca de 0 esté el valor, más cerca está el objeto de visualización del destino.
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
ellipse2
, un objeto de visualización tridimensional, se mueve hacia ellipse1
, otro objeto de visualización tridimensional. ellipse2
sigue a ellipse1
e intenta alcanzarlo. Si ellipse1
no rota alrededor de su eje y, ellipse2
lo alcanzará y se situará sobre la parte superior de ellipse1
. Las dos elipses se dibujan de la misma forma, pero se sitúan en ubicaciones tridimensionales de espacio del mundo diferentes.
package { import flash.display.MovieClip; import flash.display.Shape; import flash.display.Graphics; import flash.geom.*; import flash.events.Event; public class InterpolateToExample extends MovieClip { private var ellipse1:Shape = new Shape(); private var ellipse2:Shape = new Shape(); public function InterpolateToExample():void { ellipse1 = myEllipses(250, 100, 500, 0xFF0000); addChild(ellipse1); ellipse2 = myEllipses(-30, 120, 1, 0x00FF00); addChild(ellipse2); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function myEllipses(x:Number, y:Number, z:Number, c:Number):Shape { var s:Shape = new Shape(); s.x = x; s.y = y; s.z = z; s.graphics.beginFill(c); s.graphics.lineStyle(2); s.graphics.drawEllipse(100, 50, 100, 80); s.graphics.endFill(); return s; } private function enterFrameHandler(e:Event) { ellipse1.rotationY += 1; ellipse2.transform.matrix3D.interpolateTo(ellipse1.transform.matrix3D, 0.1); } } }
invert | () | método |
public function invert():Boolean
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Invierte la matriz actual. Una matriz invertida tiene el mismo tamaño que la original, pero realiza la transformación opuesta a ésta. Por ejemplo, si la matriz original hace rotar un objeto alrededor del eje x en una dirección, la matriz invertida lo hará rotar alrededor del eje en la dirección opuesta. Mediante la aplicación de una matriz invertida a un objeto, se deshace la transformación realizada por la matriz original. Si se multiplica una matriz por su inversa, el resultado será una matriz de identidad.
La inversa de una matriz se puede utilizar para dividir una matriz por otra. La forma de dividir la matriz A por la matriz B consiste en multiplicar la primera por la inversa de la segunda. La matriz inversa también se puede utilizar con un espacio de cámara. Cuando la cámara se mueve en el espacio del mundo, el objeto del mundo se debe mover en la dirección opuesta para realizar la transformación desde la vista del mundo al espacio de la cámara o la vista. Por ejemplo, si la cámara se aproxima, el objeto aumenta de tamaño. Es decir, si la cámara se mueve hacia abajo en el eje z del mundo, el objeto se mueve hacia arriba en dicho eje.
El método invert()
sustituye la matriz actual por una matriz invertida. Si desea invertir una matriz sin modificar la matriz actual, cópiela primero mediante el método clone()
y, a continuación, aplique el método invert()
a la copia.
El objeto Matrix3D debe poder invertirse.
Valor devueltoBoolean — Devuelve true si la matriz se invirtió correctamente.
|
Elementos de API relacionados
pointAt | () | método |
public function pointAt(pos:Vector3D, at:Vector3D = null, up:Vector3D = null):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Rota el objeto de visualización de forma que quede mirando hacia una posición especificada. Este método permite una modificación en contexto de la orientación. El vector de dirección hacia adelante del objeto de visualización (el objeto Vector3D at
) apunta a la posición relativa al mundo especificada. La dirección hacia arriba del objeto de visualización se especifica con el objeto Vector3D up
.
El método pointAt()
invalida el valor de la propiedad de rotación en caché del objeto de visualización. Este método descompone la matriz del objeto de visualización y modifica los elementos de rotación para que el objeto gire a la posición especificada. A continuación, recompone (actualiza) la matriz del objeto de visualización, que lleva a cabo la transformación. Si el objeto apunta a un destino en movimiento como, por ejemplo, la posición de un objeto en movimiento, con cada llamada posterior el método hace que el objeto rote hacia el destino en movimiento.
Nota: si se utiliza el método Matrix3D.pointAt()
sin establecer los parámetros opcionales, un objeto de destino no se compara con la posición relativa al mundo especificada de forma predeterminada. Es necesario definir los valores de at
en el eje y (0,-1,0) y up
en el eje z (0,0,-1).
Parámetros
pos:Vector3D — La posición relativa al mundo del objeto de destino. "Relativa al mundo" define la transformación del objeto en relación con el espacio y las coordenadas del mundo, donde se sitúan todos los objetos.
| |
at:Vector3D (default = null ) — El vector relativo al objeto que define hacia dónde apunta el objeto de visualización. "Relativa al objeto" define la transformación del objeto en relación al espacio del objeto, el marco de referencia y el sistema de coordenadas propios del objeto. El valor predeterminado es el eje +y (0,1,0).
| |
up:Vector3D (default = null ) — El vector relativo al objeto que define "arriba" para el objeto de visualización. Si el objeto se ha dibujado mirando hacia abajo desde arriba, el eje +z es su vector "hacia arriba". "Relativa al objeto" define la transformación del objeto en relación al espacio del objeto, el marco de referencia y el sistema de coordenadas propios del objeto. El valor predeterminado es el eje +z-(0,0,1).
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
pointAt()
para comprobar el efecto que tienen en el movimiento del triángulo.
package { import flash.display.MovieClip; import flash.display.Shape; import flash.display.Graphics; import flash.geom.*; import flash.events.Event; public class PointAtExample extends MovieClip { private var ellipse:Shape = new Shape(); private var triangle:Shape = new Shape(); public function PointAtExample():void { ellipse.graphics.beginFill(0xFF0000); ellipse.graphics.lineStyle(2); ellipse.graphics.drawEllipse(30, 40, 50, 40); ellipse.graphics.endFill(); ellipse.x = 100; ellipse.y = 150; ellipse.z = 1; triangle.graphics.beginFill(0x0000FF); triangle.graphics.moveTo(0, 0); triangle.graphics.lineTo(40, 40); triangle.graphics.lineTo(80, 0); triangle.graphics.lineTo(0, 0); triangle.graphics.endFill(); triangle.x = 200; triangle.y = 50; triangle.z = 1; addChild(ellipse); addChild(triangle); ellipse.addEventListener(Event.ENTER_FRAME, ellipseEnterFrameHandler); triangle.addEventListener(Event.ENTER_FRAME, triangleEnterFrameHandler); } private function ellipseEnterFrameHandler(e:Event) { if(e.target.y > 0) { e.target.y -= 1; e.target.x -= 1; } } private function triangleEnterFrameHandler(e:Event) { e.target.transform.matrix3D.pointAt(ellipse.transform.matrix3D.position, Vector3D.X_AXIS, Vector3D.Y_AXIS); } } }
prepend | () | método |
public function prepend(rhs:Matrix3D):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Incluye como prefijo una matriz multiplicando el objeto Matrix3D actual por otro. El resultado combina ambas transformaciones de matriz.
La multiplicación de matrices es diferente a la suma de matrices. La multiplicación de matrices no es conmutativa. En otras palabras, A multiplicado por B no es igual que B multiplicado por A. Con el método preppend()
, la multiplicación tiene lugar desde la parte derecha, lo que significa que el objeto Matrix3D rhs
se encuentra en la parte derecha del operador de multiplicación.
thisMatrix = thisMatrix * rhs
Las modificaciones realizadas por el método prepend()
son relativas al espacio del objeto. En otras palabras, siempre son relativas al marco de referencia inicial del objeto.
El método preppend()
sustituye la matiz actual por la añadida como prefijo. Si desea añadir como prefijo dos matrices sin modificar la matriz actual, cópiela primero mediante el método clone()
y, a continuación, aplique el método preppend()
a la copia.
Parámetros
rhs:Matrix3D — Parte derecha de la matriz por la que se multiplica el objeto Matrix3D actual.
|
Elementos de API relacionados
prependRotation | () | método |
public function prependRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Añade como prefijo una rotación incremental a un objeto Matrix3D. Cuando se aplica el objeto Matrix3D a un objeto de visualización, la matriz realiza la rotación antes de otras transformaciones en el objeto Matrix3D.
La rotación del objeto de visualización se define por un eje, un grado incremental de rotación alrededor del eje y un punto de giro opcional para el centro de la rotación del objeto. El eje puede ser cualquier dirección general. Los ejes habituales son X_AXIS
(Vector3D(1,0,0)
), Y_AXIS
(Vector3D(0,1,0)
) y Z_AXIS
(Vector3D(0,0,1)
). En la terminología de aviación, la rotación sobre el eje y se denomina "yaw". La rotación sobre el eje x se conoce como "pitch". La rotación sobre el eje z se denomina "roll".
También se debe tener en cuenta el orden de la transformación. Una rotación seguida de una transformación de traslación produce un efecto diferente al de una traslación seguida de una rotación.
El efecto de la rotación no es absoluto. El efecto es relativo al objeto, relativo al marco de referencia de la posición y orientación originales. Para realizar un cambio absoluto a la transformación, utilice el método recompose()
.
Cuando se aplica la transformación del método prependRotation()
a un objeto Matrix3D de un objeto de visualización, los valores de la propiedad de rotación en caché del objeto de visualización se invalidan.
Una forma de hacer rotar un objeto de visualización alrededor de un punto específico relativo a su ubicación consiste en establecer la traslación del objeto en el punto especificado, rotar el objeto mediante el método prependRotation()
y trasladar el objeto de nuevo a la posición original. En el siguiente ejemplo, el objeto de visualización 3D myObject
lleva a cabo una rotación del eje y alrededor de la coordenada (10,10,0).
myObject.z = 1; myObject.transform.matrix3D.prependTranslation(10,10,0); myObject.transform.matrix3D.prependRotation(1, Vector3D.Y_AXIS); myObject.transform.matrix3D.prependTranslation(-10,-10,0);
Parámetros
degrees:Number — Grado de la rotación.
| |
axis:Vector3D — Eje o dirección de la rotación. Los ejes habituales son X_AXIS (Vector3D(1,0,0) ), Y_AXIS (Vector3D(0,1,0) ) y Z_AXIS (Vector3D(0,0,1) ). Este vector debe tener una longitud de uno.
| |
pivotPoint:Vector3D (default = null ) — Punto que determina el centro de la rotación. El punto de giro predeterminado es un punto de registro.
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
package { import flash.display.MovieClip; import flash.display.Shape; import flash.geom.*; import flash.events.MouseEvent; public class Matrix3DprependRotationExample extends MovieClip { private var ellipse:Shape = new Shape(); public function Matrix3DprependRotationExample():void { ellipse.graphics.beginFill(0xFF0000); ellipse.graphics.lineStyle(2); ellipse.graphics.drawEllipse(-50, -40, 100, 80); ellipse.graphics.endFill(); ellipse.x = (this.stage.stageWidth / 2); ellipse.y = (this.stage.stageHeight / 2); ellipse.z = 1; addChild(ellipse); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); } private function mouseMoveHandler(e:MouseEvent):void { var y:int; var x:int; if(e.localX > ellipse.x) { y = (Math.round(e.localX) / 100); } else { y = -(Math.round(e.localX) / 10); } if(e.localY > ellipse.y) { x = (Math.round(e.localY) / 100); } else { x = -(Math.round(e.localY) / 100); } ellipse.transform.matrix3D.prependRotation(y, Vector3D.Y_AXIS); ellipse.transform.matrix3D.prependRotation(x, Vector3D.X_AXIS); } } }
prependScale | () | método |
public function prependScale(xScale:Number, yScale:Number, zScale:Number):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Añade como prefijo un cambio de escala incremental a lo largo de los ejes x, y y z, a un objeto Matrix3D. Cuando se aplica el objeto Matrix3D a un objeto de visualización, la matriz realiza los cambios de escala antes de otras transformaciones en el objeto Matrix3D. Los cambios son relativos al objeto, relativos al marco de referencia de la posición y orientación originales. El factor de escala predeterminado es (1.0, 1.0, 1.0).
La escala se define como un conjunto de tres cambios incrementales a lo largo de los tres ejes (x,y,z). Puede multiplicar cada eje con un número diferente. Cuando se aplican los cambios de la escala a un objeto de visualización, el tamaño de éste se reduce. Por ejemplo, si se establecen los ejes x, y y z en dos, se duplica el tamaño del objeto, mientras que si se establecen en 0.5
, el tamaño se reduce a la mitad. Para asegurarse de que la transformación de escala sólo afecta a un eje específico, establezca los otros parámetros en uno. Un parámetro de uno implica que no se producen cambios en la escala a lo largo del eje específico.
Se puede utilizar el método prependScale()
para cambiar el tamaño y para administrar las distorsiones como, por ejemplo, la expansión o contracción de un objeto de visualización. También se puede utilizar para aplicar el zoom en una ubicación. Las transformaciones de escala se realizan automáticamente durante la rotación y traslación de un objeto de visualización.
También se debe tener en cuenta el orden de la transformación. Un cambio de tamaño seguido de una transformación de traslación produce un efecto diferente al de una traslación seguida de un cambio de tamaño.
Parámetros
xScale:Number — Multiplicador utilizado para aplicar una escala al objeto a lo largo del eje x.
| |
yScale:Number — Multiplicador utilizado para aplicar una escala al objeto a lo largo del eje y.
| |
zScale:Number — Multiplicador utilizado para aplicar una escala al objeto a lo largo del eje z.
|
Elementos de API relacionados
prependTranslation | () | método |
public function prependTranslation(x:Number, y:Number, z:Number):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Añade como prefijo una traslación incremental, un cambio de posición a lo largo de los ejes x, y y z, a un objeto Matrix3D. Cuando se aplica el objeto Matrix3D a un objeto de visualización, la matriz realiza los cambios de traslación antes de otras transformaciones en el objeto Matrix3D.
La traslación especifica la distancia que recorre el objeto de visualización desde su ubicación actual a lo largo de los ejes x, y y z. El método prependTranslation()
establece la traslación como un conjunto de tres cambios incrementales a lo largo de los tres ejes (x,y,z). Para que una traslación sólo cambie un eje específico, establezca los otros parámetros en cero. Un parámetro cero implica que no se realiza ningún cambio a lo largo del eje específico.
Los cambios de traslación no son absolutos. El efecto es relativo al objeto, relativo al marco de referencia de la posición y orientación originales. Para realizar un cambio absoluto a la matriz de transformación, utilice el método recompose()
. También se debe tener en cuenta el orden de la transformación. Una traslación seguida de una transformación de rotación produce un efecto diferente que una rotación seguida de una transformación de traslación. Cuando se utiliza prependTranslation()
, el objeto de visualización continúa moviéndose en la dirección hacia donde mira, independientemente de las otras transformaciones. Por ejemplo, si un objeto de visualización estuviera mirando hacia un eje x positivo, continuaría moviéndose en la dirección especificada por el método prependTranslation()
, independientemente de cómo se haya rotado el objeto. Para que los cambios de traslación tengan lugar después de otras transformaciones, utilice el método appendTranslation()
.
Parámetros
x:Number — Traslación incremental a lo largo del eje x.
| |
y:Number — Traslación incremental a lo largo del eje y.
| |
z:Number — Traslación incremental a lo largo del eje z.
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
package { import flash.display.MovieClip; import flash.display.Sprite; import flash.geom.*; import flash.events.MouseEvent; public class Matrix3DprependTranslationExample extends MovieClip { private var ellipse:Sprite = new Sprite(); public function Matrix3DprependTranslationExample():void { ellipse.x = this.stage.stageWidth / 2; ellipse.y = this.stage.stageHeight - 100; ellipse.z = 1; ellipse.graphics.beginFill(0xFF0000); ellipse.graphics.lineStyle(2); ellipse.graphics.drawEllipse(0, 0, 60, 50); ellipse.graphics.endFill(); addChild(ellipse); ellipse.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); ellipse.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); } private function mouseOverHandler(e:MouseEvent):void { if(ellipse.y > 0) { ellipse.transform.matrix3D.prependTranslation(0, -10, 0); } } private function mouseOutHandler(e:MouseEvent):void { if(ellipse.y > 0) { ellipse.transform.matrix3D.prependTranslation(0, -10, 0); } else { ellipse.transform.matrix3D.prependTranslation(0, (this.stage.stageHeight - 100), 0); } } } }
recompose | () | método |
public function recompose(components:Vector.<Vector3D>, orientationStyle:String = "eulerAngles"):Boolean
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Establece los valores de configuración de traslación, rotación y escala de la matriz de transformación. A diferencia de los cambios incrementales realizados por las propiedades de rotación del objeto de visualización o los métodos de rotación del objeto Matrix3D, los cambios realizados por el método recompose()
son cambios absolutos. El método recompose()
sobrescribe la transformación de la matriz.
Para modificar la transformación de la matriz con un marco de referencia principal absoluto, recupere la configuración con el método decompose()
y realice los cambios oportunos. Con el método recompose()
puede establecer el objeto Matrix3D en la transformación modificada.
El parámetro del método recompose()
especifica el estilo de orientación que se utilizó para la transformación. La orientación predeterminada es eulerAngles
, que define la orientación con tres ángulos de rotación independientes para cada eje. Las rotaciones tienen lugar de forma consecutiva y no cambian los ejes de las demás. Las propiedades de rotación del eje del objeto de visualización llevan a cabo una transformación de estilo de orientación de ángulos de Euler. Las otras opciones de estilo de orientación son axisAngle
y cuaternión
. La orientación de ángulo con eje utiliza la combinación de un eje y un ángulo para determinar la orientación. El eje alrededor del cual se rota el objeto es un vector de unidad que representa una dirección. El ángulo representa la magnitud de la rotación sobre el vector. La dirección también determina hacia dónde mira un objeto de visualización, mientras que el ángulo determina cuál es la dirección hacia arriba. Los métodos appendRotation()
y prependRotation()
utilizan la orientación de ángulo con eje. La orientación de cuaternión utiliza números complejos y el cuarto elemento de un vector. Una orientación se representa por los tres ejes (x,y,z) y un ángulo de rotación (w). El método interpolate()
utiliza cuaternión.
Parámetros
components:Vector.<Vector3D> — Vector de tres objetos Vector3D que sustituyen los elementos de traslación, rotación y escala del objeto Matrix3D.
| |
orientationStyle:String (default = "eulerAngles ") — Parámetro opcional que determina el estilo de orientación que se utiliza para la transformación de matriz. Los tres tipos de estilo de orientación son eulerAngles (constante EULER_ANGLES ), axisAngle (constante AXIS_ANGLE ) y cuaternión (constante QUATERNION ). Para obtener información adicional sobre los diferentes estilos de orientación, consulte la clase geom.Orientation3D .
|
Boolean — Devuelve false si alguno de los elementos Vector3D del vector components no existe o es null.
|
Elementos de API relacionados
transformVector | () | método |
public function transformVector(v:Vector3D):Vector3D
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Utilice la matriz de transformación para transformar un objeto Vector3D desde una coordenada de espacio a otra. El objeto Vector3D devuelto contiene las nuevas coordenadas después de la transformación. Todas las transformaciones de matriz incluida la traslación se aplican al objeto Vector3D.
Si el resultado del método transformVector()
se aplicó a la posición de un objeto de visualización, sólo cambia la posición de dicho objeto. Los elementos de rotación y escala del objeto de visualización permanecen iguales.
Nota: este método establece automáticamente en 1.0 el componente w de Vector3D pasado.
Parámetros
v:Vector3D — Objeto Vector3D que contiene las coordenadas que se transformarán.
|
Vector3D — Objeto Vector3D con las coordenadas transformadas.
|
Elementos de API relacionados
transformVectors | () | método |
public function transformVectors(vin:Vector.<Number>, vout:Vector.<Number>):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Utiliza la matriz de transformación para transformar un vector de elementos Number de un espacio de coordenadas a otro. El método tranformVectors()
lee los grupos de tres números en el objeto vectorial vin
como una coordenada 3D (x,y,z) y coloca una coordenada 3D transformada en el objeto vectorial vout
. Todas las transformaciones de matriz incluida la traslación se aplican al objeto vectorial vin
. Puede utilizar el método transformVectors()
para representar y transformar un objeto 3D como una malla. Una malla es un conjunto de vértices que define la forma del objeto.
Parámetros
vin:Vector.<Number> — Vector de números, donde cada grupo de tres números forma una coordenada 3D (x,y,z) que se transformará.
| |
vout:Vector.<Number> — Vector de números, donde cada grupo de tres números forma una coordenada 3D transformada (x,y,z).
|
Elementos de API relacionados
transpose | () | método |
public function transpose():void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 10, AIR 1.5 |
Convierte el objeto Matrix3D actual en una matriz en la que las filas y columnas se intercambian. Por ejemplo, si el rawData
del objeto Matrix3D actual contiene los 16 números siguientes: 1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34
, el método transpose()
lee los grupos de cuatro elementos como una fila y convierte las filas en columnas. El resultado es una matriz con el rawData
de: 1,11,21,31,2,12,22,32,3,13,23,33,4,14,24,34
.
El método transpose()
sustituye la matriz actual por una matriz traspuesta. Si desea trasponer una matriz sin modificar la matriz actual, cópiela primero mediante el método clone()
y, a continuación, aplique el método transpose()
a la copia.
Una matriz ortogonal es una matriz cuadrada cuya trasposición es igual a su inversa.
Tue Jun 12 2018, 02:12 PM Z