Pacote | flash.geom |
Classe | public class Matrix3D |
Herança | Matrix3D Object |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Uma única matriz pode combinar várias transformações e aplicá-las de uma só vez em um objeto de exibição 3D. Por exemplo, uma matriz pode ser aplicada às coordenadas tridimensionais para realizar uma rotação seguida de uma translação.
Quando você define explicitamente a propriedade z
ou qualquer uma das propriedades de rotação e dimensionamento de um objeto de exibição, é criada automaticamente um objeto Matrix3D correspondente.
Você pode acessar o objeto Matrix3D de um objeto de exibição 3D através da propriedade transform.matrix3d
. Objetos 2D não têm um objeto Matrix3D.
O valor da propriedade z
de um objeto bidimensional é zero e o valor da propriedade matrix3D
é null
.
Observação: se o mesmo objeto Matrix3D for atribuído a dois objetos de exibição diferentes, será lançado um erro de tempo de execução.
A classe Matrix3D utiliza uma matriz quadrada 4x4: uma tabela de quatro linhas e colunas de números que mantém os dados da transformação. As três primeiras linhas da matriz contêm os dados de cada eixo tridimensional (x,y,z). As informações da translação ficam na última coluna. Os dados da orientação e dimensionamento ficam nas três primeiras colunas. Os fatores de dimensionamento são os números diagonais contidos nas três primeiras colunas. Veja uma representação dos elementos de Matrix3D:
Não é necessário conhecer a matemática da matriz para usar a classe Matrix3D. Ela oferece métodos específicos que simplificam a tarefa de transformação e projeção, por exemplo, os métodos appendTranslation()
, appendRotation()
ou interpolateTo()
. Você pode também usar os métodos decompose()
e recompose()
ou a propriedade rawData
para acessar os elementos subjacentes da matriz.
Os objetos de exibição armazenam em cache as respectivas propriedades de rotação do eixo para ter rotações separadas de cada eixo e para gerenciar as diversas combinações de rotações. Quando um método de um objeto Matrix3D é chamado para transformar um objeto de exibição, o armazenamento em cache de rotações do objeto é invalidado.
Elementos da API relacionados
flash.geom.Transform
flash.geom.PerspectiveProjection
flash.geom.Vector3D
flash.geom.Orientation3D
flash.geom.Utils3D
flash.geom.Matrix
Propriedade | Definido por | ||
---|---|---|---|
constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | ||
determinant : Number [somente leitura]
Um Número que determina se uma matriz pode ser invertida. | Matrix3D | ||
position : Vector3D
Um objeto Vector3D que mantém a posição, a coordenada tridimensional (x,y,z) de um objeto de exibição dentro do quadro de referência da transformação. | Matrix3D | ||
rawData : Vector.<Number>
Um Vetor de 16 Números, em que cada quatro elementos é uma coluna de uma matriz 4x4. | Matrix3D |
Método | Definido por | ||
---|---|---|---|
Cria um objeto Matrix3D. | Matrix3D | ||
Anexa a matriz multiplicando outro objeto Matrix3D pelo objeto Matrix3D atual. | Matrix3D | ||
Acrescenta uma rotação incremental a um objeto Matrix3D. | Matrix3D | ||
Acrescenta uma alteração de dimensionamento incremental nos eixos x, y e z a um objeto Matrix3D. | Matrix3D | ||
Acrescenta uma translação incremental, um reposicionamento ao longo dos eixos x, y e z, a um objeto Matrix3D. | Matrix3D | ||
Retorna um novo objeto Matrix3D que é uma cópia exata do objeto Matrix3D atual. | Matrix3D | ||
Copia um objeto de Vector3D na coluna específica do objeto de chamada Matrix3D. | Matrix3D | ||
Copia a coluna específica do objeto de chamada Matrix3D no objeto de Vector3D. | Matrix3D | ||
Copia todos os dados de matriz do objeto de origem Matrix3D para o objeto Matrix3D da chamada. | Matrix3D | ||
Copia todos dos dados de vetor do objeto vetor de origem para a chamada objeto Matrix3D. | Matrix3D | ||
Copia todos dos dados de matriz do objeto de chamada Matrix3D para o vetor fornecido. | Matrix3D | ||
Copia um objeto de Vector3D na linha específica do objeto de chamada Matrix3D. | Matrix3D | ||
Copia a linha específica do objeto de chamada Matrix3D no objeto de Vector3D. | Matrix3D | ||
Matrix3D | |||
Retorna as configurações de translação, rotação e dimensionamento da matriz de transformação como um Vector de três objetos Vector3D. | Matrix3D | ||
Usa a matriz de transformação sem seus elementos de translação para transformar um objeto Vector3D de uma coordenada de espaço para outra. | Matrix3D | ||
Indica se um objeto tem uma propriedade especificada definida. | Object | ||
Converte a matriz atual em uma matriz de identidade ou unitária. | Matrix3D | ||
[estático]
Interpola a tradução, rotação, e transformação de escala de uma matriz em direção àqueles da matriz de destino. | Matrix3D | ||
Interpola esta matriz em direção à tradução, rotação, e transformações de escala da matriz de destino. | Matrix3D | ||
Inverte a matriz atual. | Matrix3D | ||
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | ||
Gira o objeto de exibição para que ele se volte a uma determinada posição. | Matrix3D | ||
Precede uma matriz multiplicando o objeto Matrix3D atual por outro objeto Matrix3D. | Matrix3D | ||
Acrescenta uma rotação incremental a um objeto Matrix3D. | Matrix3D | ||
Acrescenta uma alteração de dimensionamento incremental nos eixos x, y e z a um objeto Matrix3D. | Matrix3D | ||
Acrescenta uma translação incremental, um reposicionamento ao longo dos eixos x, y e z, a um objeto Matrix3D. | Matrix3D | ||
Indica se a propriedade especificada existe e é enumerável. | Object | ||
Define as configurações de translação, rotação e dimensionamento da matriz de transformação. | Matrix3D | ||
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | ||
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | ||
Retorna a representação de string do objeto especificado. | Object | ||
Usa a matriz de transformação para transformar um objeto Vector3D de uma coordenada de espaço para outra. | Matrix3D | ||
Usa a matriz de transformação para transformar um Vector de números de um espaço de coordenadas para outro. | Matrix3D | ||
Converte o objeto Matrix3D atual em uma matriz em que as linhas e colunas são trocadas. | Matrix3D | ||
Retorna o valor primitivo do objeto especificado. | Object |
determinant | propriedade |
determinant:Number
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Um Número que determina se uma matriz pode ser invertida.
Um objeto Matrix3D deve ser invertível. Você pode usar a propriedade determinant
para verificar se um objeto Matrix3D é invertível. Se o determinando é zero, o inverso da matriz não existe. Por exemplo, se uma linha ou coluna inteira da matriz for zero ou se duas linhas ou colunas forem iguais, o determinante será zero. O determinante é usado também para solucionar uma série de equações.
Somente uma matriz quadrada, como a classe Matrix3D, tem um determinante.
Implementação
public function get determinant():Number
Elementos da API relacionados
position | propriedade |
position:Vector3D
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Um objeto Vector3D que mantém a posição, a coordenada tridimensional (x,y,z) de um objeto de exibição dentro do quadro de referência da transformação. A propriedade position
permite acesso imediato ao vetor de translação da matriz do objeto de exibição sem precisar decompor e recompor a matriz.
Com a propriedade position
, você pode obter e definir os elementos de translação da matriz de transformação.
Implementação
public function get position():Vector3D
public function set position(value:Vector3D):void
Elementos da API relacionados
rawData | propriedade |
rawData:Vector.<Number>
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Um Vetor de 16 Números, em que cada quatro elementos é uma coluna de uma matriz 4x4.
Uma exceção será emitida se a propriedade rawData
for definida como uma matriz não invertível. O objeto Matrix3D deve ser invertível. Se for necessária uma matriz não invertível, crie uma subclasse do objeto Matrix3D.
Implementação
public function get rawData():Vector.<Number>
public function set rawData(value:Vector.<Number>):void
Elementos da API relacionados
Matrix3D | () | Construtor |
public function Matrix3D(v:Vector.<Number> = null)
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Cria um objeto Matrix3D. Os objetos Matrix3D podem ser inicializados com um Vetor de 16 números, em que cada quatro elementos representam uma coluna. Quando o objeto Matrix3D for criado, você poderá acessar os elementos da matriz com a propriedade rawData
.
Se nenhum parâmetro for definido, o construtor produzirá um objeto Matrix3D unitário ou de identidade. Na notação da matriz, uma matriz de identidade tem o valor 1 para todos os elementos na posição diagonal principal e um valor zero para todos os outros elementos. O valor da propriedade rawData
de uma matriz de identidade é: 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1
. O valor da translação ou da posição da matriz de identidade é Vector3D(0,0,0)
, a definição de rotação é Vector3D(0,0,0)
e o valor do dimensionamento é Vector3D(1,1,1)
.
v:Vector.<Number> (default = null ) — Um Vetor de 16 Números, em que cada quatro elementos representam uma coluna de uma matriz 4x4.
|
Elementos da API relacionados
append | () | método |
public function append(lhs:Matrix3D):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Anexa a matriz multiplicando outro objeto Matrix3D pelo objeto Matrix3D atual. O resultado combina as duas transformações de matriz. Você pode multiplicar um objeto Matrix3D por várias matrizes. O objeto Matrix3D final contém o resultado de todas as transformações.
A multiplicação de matriz é diferente da adição de matriz. A multiplicação de matriz não é comutativa. Em outras palavras, A vezes B não é igual a B vezes A. Com o método append()
, a multiplicação ocorre do lado esquerdo, significando que o objeto Matrix3D lhs
está no lado esquerdo do operador de multiplicação.
thisMatrix = lhs * thisMatrix;
Na primeira vez que o método append()
é chamado, ele faz uma modificação relativa ao espaço do pai. As chamadas subsequentes são relativas ao quadro de referência do objeto Matrix3D anexado.
O método append()
substitui a matriz atual pela matriz anexada. Para anexar duas matrizes sem alterar a matriz atual, copie a matriz atual usando o método clone()
e aplique o método append()
à copia.
Parâmetros
lhs:Matrix3D — Uma matriz do lado esquerdo que é multiplicada pelo objeto Matrix3D atual.
|
Elementos da API relacionados
appendRotation | () | método |
public function appendRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Acrescenta uma rotação incremental a um objeto Matrix3D. Quando o objeto Matrix3D é aplicado a um objeto de exibição, a matriz executa a rotação depois de outras transformações no objeto Matrix3D.
A rotação do objeto de exibição é definida por um eixo, um grau incremental de rotação ao redor do eixo e um ponto de pivô opcional do centro da rotação do objeto. O eixo pode ser qualquer direção em geral. Os eixos comuns são X_AXS
(Vector3D (1.0.0)
), Y_AXIS
(Vector3D (0.1.0)
) e Z_AXIS
(Vector3D (0.0.1)
). Na terminologia da aviação, a rotação sobre o eixo y é chamada de guinada. A rotação sobre o eixo x é chamada de arfada. A rotação sobre o eixo z é chamada de rolamento.
A ordem de transformação é importante. Uma rotação seguida de uma transformação de translação produz um efeito diferente de uma translação seguida de uma transformação de rotação.
O efeito da rotação não é absoluto. Ele é relativo à posição e à orientação atuais. Para fazer uma alteração absoluta na matriz de transformação, use o método recompose()
. O método appendRotation()
é diferente também da propriedade de rotação do eixo do objeto de exibição, por exemplo, a propriedade rotationX
. A propriedade de rotação é sempre executada antes de qualquer translação, ao passo que o método appendRotation()
é executado em relação a tudo o que já está na matriz. Para verificar se será obtido um efeito semelhante ao da propriedade de rotação do eixo do objeto de exibição, use o método prependRotation()
, que executa a rotação antes de outras transformações na matriz.
Quando a transformação do método appendRotation()
é aplicada a um objeto Matrix3D de um objeto de exibição, os valores da propriedade de rotação armazenados em cache do objeto de exibição são invalidados.
Uma forma de fazer com que um objeto de exibição gire ao redor de um ponto específico relativo à sua localização é definir a translação do objeto como o ponto especificado, girar o objeto usando o método appendRotation()
e transladar o objeto de volta à posição original. No exemplo a seguir, o objeto de exibição 3D myObject
faz uma rotação do eixo y ao redor da 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 — O grau da rotação.
| |
axis:Vector3D — O eixo ou a direção da rotação. Os eixos comuns são X_AXIS (Vector3D (1.0.0) ), Y_AXIS (Vector3D (0.1.0) ) e Z_AXIS (Vector3D (0.0.1) ). Este vetor deve ter um comprimento de um.
| |
pivotPoint:Vector3D (default = null ) — Um ponto que determina o centro da rotação de um objeto. O ponto de pivô padrão de um objeto é seu ponto de registro.
|
Elementos da API relacionados
appendScale | () | método |
public function appendScale(xScale:Number, yScale:Number, zScale:Number):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Acrescenta uma alteração de dimensionamento incremental nos eixos x, y e z a um objeto Matrix3D. Quando o objeto Matrix3D é aplicado a um objeto de exibição, a matriz executa as alterações de dimensionamento depois de outras transformações no objeto Matrix3D. O fator de dimensionamento padrão é (1.0, 1.0, 1.0).
O dimensionamento é definido como um conjunto de três alterações incrementais ao longo dos três eixos (x,y,z). Você pode multiplicar cada eixo por um número diferente. Quando as alterações de dimensionamento são aplicadas a um objeto de exibição, o tamanho do objeto aumenta ou diminui. Por exemplo, se os eixos x, y e z forem definidos como dois, o tamanho do objeto será duplicado e, se eles forem definidos como 0,5
, o tamanho será dividido por dois. Para que a transformação de dimensionamento afete somente um eixo específico, defina os outros parâmetros como um. Um parâmetro de valor um significa que não há alterações de dimensionamento no eixo específico.
O método appendScale()
pode ser usado para redimensionar e também para gerenciar distorções, como expansão ou contração de um objeto de exibição, ou para aplicar mais zoom ou menos zoom em um local. As transformações de dimensionamento são realizadas automaticamente durante a rotação e a translação do objeto de exibição.
A ordem de transformação é importante. Um redimensionamento seguido de uma transformação de translação produz um efeito diferente de uma translação seguida de uma transformação de redimensionamento.
Parâmetros
xScale:Number — Um multiplicador usado para dimensionar o objeto ao longo do eixo x.
| |
yScale:Number — Um multiplicador usado para dimensionar o objeto ao longo do eixo y.
| |
zScale:Number — Um multiplicador usado para dimensionar o objeto ao longo do eixo z.
|
Elementos da API relacionados
appendTranslation | () | método |
public function appendTranslation(x:Number, y:Number, z:Number):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Acrescenta uma translação incremental, um reposicionamento ao longo dos eixos x, y e z, a um objeto Matrix3D. Quando o objeto Matrix3D é aplicado a um objeto de exibição, a matriz executa as alterações de translação depois de outras transformações no objeto Matrix3D.
A translação é definida como um conjunto de três alterações incrementais ao longo dos três eixos (x,y,z). Quando a transformação é aplicada a um objeto de exibição, esse objeto se movimenta a partir do local atual ao longo dos eixos x, y e z, conforme especificado pelos parâmetros. Para que a translação afete somente um eixo específico, defina os outros parâmetros como zero. Um parâmetro zero significa que não há alterações no eixo específico.
As alterações de translação não são absolutas. Elas são relativas à posição e à orientação atuais da matriz. Para fazer uma alteração absoluta na matriz de transformação, use o método recompose()
. A ordem de transformação também é importante. Uma translação seguida de uma transformação de rotação produz um efeito diferente de uma rotação seguida de uma translação.
Parâmetros
x:Number — Uma translação incremental ao longo do eixo x.
| |
y:Number — Uma translação incremental ao longo do eixo y.
| |
z:Number — Uma translação incremental ao longo do eixo z.
|
Elementos da API relacionados
clone | () | método |
copyColumnFrom | () | método |
public function copyColumnFrom(column:uint, vector3D:Vector3D):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia um objeto de Vector3D na coluna específica do objeto de chamada Matrix3D.
Parâmetros
column:uint — A coluna de destino da cópia.
| |
vector3D:Vector3D — Objeto Vector3D a partir do qual os dados são copiados.
|
copyColumnTo | () | método |
public function copyColumnTo(column:uint, vector3D:Vector3D):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia a coluna específica do objeto de chamada Matrix3D no objeto de Vector3D.
Parâmetros
column:uint — A coluna da qual os dados serão copiados.
| |
vector3D:Vector3D — O objeto Vector3D de destino da cópia.
|
copyFrom | () | método |
public function copyFrom(sourceMatrix3D:Matrix3D):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia todos os dados de matriz do objeto de origem Matrix3D para o objeto Matrix3D da chamada.
Parâmetros
sourceMatrix3D:Matrix3D — Objeto Matrix3D a partir do qual os dados são copiados.
|
copyRawDataFrom | () | método |
public function copyRawDataFrom(vector:Vector.<Number>, index:uint = 0, transpose:Boolean = false):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia todos dos dados de vetor do objeto vetor de origem para a chamada objeto Matrix3D. O parâmetro de índice opcional permite selecionar qualquer slot inicial no vetor.
Parâmetros
vector:Vector.<Number> — Objeto vetor a partir do qual os dados são copiados.
| |
index:uint (default = 0 )
| |
transpose:Boolean (default = false )
|
copyRawDataTo | () | método |
public function copyRawDataTo(vector:Vector.<Number>, index:uint = 0, transpose:Boolean = false):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia todos dos dados de matriz do objeto de chamada Matrix3D para o vetor fornecido. O parâmetro de índice opcional permite selecionar qualquer slot de inicial no vetor.
Parâmetros
vector:Vector.<Number> — Objeto vetor para o qual os dados são copiados.
| |
index:uint (default = 0 )
| |
transpose:Boolean (default = false )
|
copyRowFrom | () | método |
public function copyRowFrom(row:uint, vector3D:Vector3D):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia um objeto de Vector3D na linha específica do objeto de chamada Matrix3D.
Parâmetros
row:uint — A linha da qual os dados são copiados.
| |
vector3D:Vector3D — Objeto Vector3D a partir do qual os dados são copiados.
|
copyRowTo | () | método |
public function copyRowTo(row:uint, vector3D:Vector3D):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Copia a linha específica do objeto de chamada Matrix3D no objeto de Vector3D.
Parâmetros
row:uint — A linha a partir da qual os dados são copiados.
| |
vector3D:Vector3D — O objeto Vector3D para o qual copiar os dados.
|
copyToMatrix3D | () | método |
decompose | () | método |
public function decompose(orientationStyle:String = "eulerAngles"):Vector.<Vector3D>
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Retorna as configurações de translação, rotação e dimensionamento da matriz de transformação como um Vector de três objetos Vector3D. O primeiro objeto Vector3D contém os elementos da translação. O segundo objeto Vector3D contém os elementos da rotação. O terceiro objeto Vector3D contém os elementos do dimensionamento.
Alguns métodos Matrix3D, como o interpolateTo()
, decompõem e recompõem automaticamente a matriz para executar a transformação.
Para modificar a transformação da matriz com um quadro de referência pai absoluto, recupere as configurações com o método decompose()
e faça as alterações apropriadas. Assim, você pode definir o objeto Matrix3D como a transformação modificada usando o método recompose()
.
O parâmetro do método decompose()
especifica o estilo de orientação que deverá ser usado na transformação. A orientação padrão é eulerAngles
, que define a orientação com três ângulos separados de rotação para cada eixo. As rotações ocorrem consecutivamente e não alteram o eixo um do outro. As propriedades do eixo do objeto de exibição executam a transformação do estilo de orientação Ângulos de Euler. As outras opções de estilo de orientação são axisAngle
e quaternion
. A orientação de tipo Ângulo do eixo usa uma combinação de um eixo e um ângulo para determinar a orientação. O eixo ao redor do qual o objeto gira é um vetor unitário que representa uma direção. O ângulo representa a magnitude da rotação sobre o vetor. A direção também determina o lado para o qual um objeto de exibição está voltado e o ângulo determina o trajeto de movimentação. Os métodos appendRotation()
e prependRotation()
utilizam a orientação Ângulo do eixo. A orientação de quatérnion utiliza números complexos e o quarto elemento de um vetor. Os três eixos de rotação (x,y,z) e um ângulo de rotação (w) representam a orientação. O método interpolate()
utiliza o quatérnion.
Parâmetros
orientationStyle:String (default = "eulerAngles ") — Um parâmetro opcional que determina o estilo de orientação usado na transformação da matriz. Os três tipos de estilo de orientação são eulerAngles (constante EULER_ANGLES ), axisAngle (constante AXIS_ANGLE ) e quaternion (constante QUATERNION ). Para obter informações adicionais sobre outro estilo de orientação, consulte a classe geom.Orientation3D .
|
Vector.<Vector3D> — Um Vector de três objetos Vector3D, cada um mantendo as respectivas configurações de translação, rotação e dimensionamento.
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
decompose()
e recompose()
para que a elipse seja alongada horizontalmente durante a movimentação em direção ao ponto de fuga. O primeiro objeto Vector3D retornado pelo método decompose()
mantém as coordenadas da translação. O terceiro objeto Vector3D mantém as configurações de dimensionamento. O método incrementBy()
do objeto Vector3D incrementa as configurações de translação e dimensionamento absolutas da 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
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Usa a matriz de transformação sem seus elementos de translação para transformar um objeto Vector3D de uma coordenada de espaço para outra. O objeto Vector3D retornado conterá as novas coordenadas depois de aplicadas as transformações de rotação e dimensionamento. Se o método deltaTransformVector()
aplicar uma matriz que contiver apenas uma transformação de translação, o Vector3D retornado será igual ao objeto Vector3D original.
Você pode usar o método deltaTransformVector()
para que um objeto de exibição de um espaço de coordenadas responda à transformação de rotação de um segundo objeto de exibição. O objeto não copia a rotação; ele apenas altera sua posição para refletir as alterações na rotação. Por exemplo, para usar a API display.Graphics
para desenhar objeto de exibição 3D em rotação, mapeie as coordenadas de rotação do objeto para um ponto bidimensional. Primeiramente, recupere as coordenadas 3D do objeto após cada rotação, usando o método deltaTransformVector()
. Em seguida, aplique o método local3DToGlobal()
do objeto de exibição para transladar as coordenadas tridimensionais aos pontos bidimensionais. Em seguida, você pode usar os pontos bidimensionais para desenhar o objeto 3D em rotação.
Observação: este método define automaticamente o componente w do Vector3D transmitido como 0.0.
Parâmetros
v:Vector3D — Um objeto Vector3D que tem as coordenadas que serão transformadas.
|
Vector3D — Um objeto Vector3D com as coordenadas transformadas.
|
Elementos da API relacionados
identity | () | método |
public function identity():void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Converte a matriz atual em uma matriz de identidade ou unitária. Uma matriz de identidade tem o valor 1 para os elementos na diagonal principal e um valor zero para todos os outros elementos. O resultado é uma matriz em que o valor de rawData
é 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1
, a rotação está definida como Vector3D(0,0,0)
, a posição ou a translação está definida como Vector3D(0,0,0)
e o dimensionamento está definido como Vector3D(1,1,1)
. Veja uma representação de matriz de identidade:
Um objeto transformado pela aplicação de uma matriz de identidade não realiza transformações. Em outras palavras, se uma matriz for multiplicada por uma matriz de identidade, o resultado será uma matriz idêntica à matriz original.
interpolate | () | método |
public static function interpolate(thisMat:Matrix3D, toMat:Matrix3D, percent:Number):Matrix3D
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Interpola a tradução, rotação, e transformação de escala de uma matriz em direção àqueles da matriz de destino.
O método interpolate()
evita que alguns resultados indesejáveis ocorram quando são usados métodos como as propriedades de rotação do eixo do objeto de exibição. O método interpolate()
invalida o valor da propriedade de rotação armazenado em cache do objeto de exibição e converte os elementos de orientação da matriz do objeto de exibição em quatérnion antes da interpolação. Esse método garante o caminho mais curto e eficiente para a rotação. Além disso, ele produz uma rotação suave e livre de gimbal lock (travamento das rotações). O problema de gimbal lock pode ocorrer ao usar Ângulos de Euler, em que cada eixo é manipulado de forma independente. Durante a rotação ao redor de dois ou mais eixos, os eixos podem ficar alinhados, levando a resultados inesperados. A rotação de quatérnion evita esse problema.
As chamadas consecutivas ao método interpolate()
podem produzir o efeito de um objeto de exibição iniciando rapidamente e, depois, se aproximando lentamente de outro objeto de exibição. Por exemplo, se você definir o parâmetro thisMat
como o objeto Matrix3D retornado, o parâmetro toMat
como o objeto Matrix3D associado do objeto de exibição de destino e o parâmetro percent
como 0,1
, o objeto de exibição se movimentará 10% em direção ao objeto de destino. Nas chamadas ou nos quadros subsequentes, o objeto se movimentará 10% dos 90% restantes, em seguida, 10% da distância restante, e continua até chegar ao destino.
Parâmetros
thisMat:Matrix3D — O objeto Matrix3D que será interpolado.
| |
toMat:Matrix3D — O objeto Matrix3D de destino.
| |
percent:Number — Um valor entre 0 e 1 que determina a porcentagem de interpolação do objeto Matrix3D thisMat em direção ao objeto Matrix3D de destino.
|
Matrix3D — Um objeto Matrix3D com elementos que colocam os valores da matriz entre a matriz original e a de destino. Quando a matriz retornada é aplicada ao objeto de exibição this , o objeto se aproxima do objeto de destino na porcentagem especificada.
|
Elementos da API relacionados
interpolateTo | () | método |
public function interpolateTo(toMat:Matrix3D, percent:Number):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Interpola esta matriz em direção à tradução, rotação, e transformações de escala da matriz de destino.
O método interpolateTo()
evita que resultados indesejáveis ocorram quando são usados métodos como as propriedades de rotação do eixo do objeto de exibição. O método interpolateTo()
invalida o valor da propriedade de rotação armazenado em cache do objeto de exibição e converte os elementos de orientação da matriz do objeto de exibição em quatérnion antes da interpolação. Esse método garante o caminho mais curto e eficiente para a rotação. Além disso, ele produz uma rotação suave e livre de gimbal lock (travamento das rotações). O problema de gimbal lock pode ocorrer ao usar Ângulos de Euler, em que cada eixo é manipulado de forma independente. Durante a rotação ao redor de dois ou mais eixos, os eixos podem ficar alinhados, levando a resultados inesperados. A rotação de quatérnion evita esse problema.
Observação: no caso de uma interpolação, o valor de dimensionamento da matriz será redefinido e a matriz normalizada.
As chamadas consecutivas ao método interpolateTo()
podem produzir o efeito de um objeto de exibição iniciando rapidamente e, depois, se aproximando lentamente de outro objeto de exibição. Por exemplo, se o parâmetro de percentual for definido como 0,1
, o objeto de exibição se movimentará 10% em direção ao objeto de destino especificado pelo parâmetro toMat
. Nas chamadas ou nos quadros subsequentes, o objeto se movimentará 10% dos 90% restantes, em seguida, 10% da distância restante, e continua até chegar ao destino.
Parâmetros
toMat:Matrix3D — O objeto Matrix3D de destino.
| |
percent:Number — Um valor entre 0 e 1 que determina a localização do objeto de exibição em relação ao destino. Quanto mais próximo o valor estiver de 1,0 , mais próximo o objeto de exibição estará da sua posição atual. Quanto mais próximo o valor estiver de 0 , mais próximo o objeto de exibição estará do destino.
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
elipse2
, um objeto de exibição tridimensional, vai em direção à elipse1
, um outro objeto de exibição tridimensional. A elipse2
segue a elipse1
tentando alcançá-la. Se a elipse1
não girar ao redor do eixo y, a elipse2
alcançará e ficará no topo da elipse1
. As duas elipses foram desenhadas da mesma forma, mas estão colocadas em locais diferentes no espaço global tridimensional.
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
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Inverte a matriz atual. Uma matriz invertida tem o mesmo tamanho da original, mas realiza a transformação oposta à da original. Por exemplo, se a matriz original tiver uma rotação de objeto ao redor do eixo x em uma direção, o inverso da matriz terá a rotação do objeto ao redor do eixo na direção oposta. A aplicação de matriz invertida a um objeto desfaz a transformação realizada pela matriz original. Se uma matriz for multiplicada pela matriz inversa, o resultado será uma matriz de identidade.
O inverso de uma matriz pode ser usado para dividir uma matriz pela outra. A forma de dividir a matriz A pela B é multiplicar a matriz A pelo inverso da matriz B. A matriz inversa pode ser usada também com um espaço de câmera. Quando a câmera se move no espaço global, o objeto no espaço global precisa se movimentar na direção oposta para transformar da visão global para o espaço da câmera ou da visão. Por exemplo, quando a câmera se aproxima, os objetos ficam maiores. Em outras palavras, se a câmera mover-se para baixo do eixo z global, o objeto se movimentará para cima do eixo z.
O método invert()
substitui a matriz atual pela matriz invertida. Para inverter uma matriz sem alterar a matriz atual, primeiramente copie a matriz atual usando o método clone()
e depois aplique o método invert()
à copia.
O objeto Matrix3D deve ser invertível.
RetornaBoolean — Retornará true se a matriz for invertida com êxito.
|
Elementos da API relacionados
pointAt | () | método |
public function pointAt(pos:Vector3D, at:Vector3D = null, up:Vector3D = null):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Gira o objeto de exibição para que ele se volte a uma determinada posição. Esse método permite uma modificação no local para a orientação. O vetor de direção para frente dos pontos do objeto de exibição (o objeto Vector3D em
) na posição relativa global especificada. A direção para cima do objeto de exibição é especificada com o objeto Vector3D up
.
O método pointAt()
invalida o valor da propriedade de rotação armazenado em cache do objeto de exibição. O método decompõe a matriz do objeto de exibição e modifica os elementos de rotação para que o objeto vire para a posição especificada. Ele recompõe (atualiza) a matriz do objeto de exibição que executa a transformação. Se o objeto estiver apontando para um destino em movimento, por exemplo, a posição de um objeto em movimento, a cada chamada subsequente o método terá a rotação do objeto em direção ao destino em movimento.
Nota: se você usar o método Matrix3D.pointAt()
sem definir os parâmetros opcionais, um objeto de destino não ficará em frente da posição relativa mundial especificada por padrão. Você deve estabelecer os valores de at
para o eixo -y (0,-1,0) e up
para o eixo -z (0,0,-1).
Parâmetros
pos:Vector3D — A posição relativa global do objeto de destino. A relação global define a transformação do objeto em relação ao espaço e às coordenadas globais onde todos os objetos estão posicionados.
| |
at:Vector3D (default = null ) — O vetor relativo ao objeto que define o ponto para o qual o objeto de exibição está apontando. A relação de objeto define a transformação do objeto em relação ao espaço do objeto, ao sistema de coordenadas e ao quadro de referência próprios do objeto. O valor padrão é o eixo +y (0,1,0).
| |
up:Vector3D (default = null ) — O vetor relativo ao objeto que define o vetor "up" do objeto de exibição. Se o objeto for desenhado visto de cima, o eixo +z será seu vetor "up". A relação de objeto define a transformação do objeto em relação ao espaço do objeto, ao sistema de coordenadas e ao quadro de referência próprios do objeto. O valor padrão é o eixo +z (0,0,1).
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
pointAt()
para ver o impacto no movimento do 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
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Precede uma matriz multiplicando o objeto Matrix3D atual por outro objeto Matrix3D. O resultado combina as duas transformações de matriz.
A multiplicação de matriz é diferente da adição de matriz. A multiplicação de matriz não é comutativa. Em outras palavras, A vezes B não é igual a B vezes A. Com o método prepend()
, a multiplicação ocorre do lado direito, significando que o objeto Matrix3D rhs
está no lado direito do operador de multiplicação.
thisMatrix = thisMatrix * rhs
As modificações feitas pelo método prepend()
são relativas ao espaço do objeto. Em outras palavras, elas são sempre relativas ao quadro inicial de referência do objeto.
O método prepend()
substitui a matriz atual pela matriz precedente. Para adicionar duas matrizes precedentes sem alterar a matriz atual, copie a matriz atual usando o método clone()
e aplique o método prepend()
à copia.
Parâmetros
rhs:Matrix3D — Uma matriz do lado direito pela qual o objeto Matrix3D atual é multiplicado.
|
Elementos da API relacionados
prependRotation | () | método |
public function prependRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Acrescenta uma rotação incremental a um objeto Matrix3D. Quando o objeto Matrix3D é aplicado a um objeto de exibição, a matriz executa a rotação antes de outras transformações no objeto Matrix3D.
A rotação do objeto de exibição é definida por um eixo, um grau incremental de rotação ao redor do eixo e um ponto de pivô opcional do centro da rotação do objeto. O eixo pode ser qualquer direção em geral. Os eixos comuns são X_AXS
(Vector3D (1.0.0)
), Y_AXIS
(Vector3D (0.1.0)
) e Z_AXIS
(Vector3D (0.0.1)
). Na terminologia da aviação, a rotação sobre o eixo y é chamada de guinada. A rotação sobre o eixo x é chamada de arfada. A rotação sobre o eixo z é chamada de rolamento.
A ordem de transformação é importante. Uma rotação seguida de uma transformação de translação produz um efeito diferente de uma translação seguida de uma rotação.
O efeito da rotação não é absoluto. O efeito é relativo ao objeto, relativo ao quadro de referência da posição e orientação originais. Para fazer uma alteração absoluta na transformação, use o método recompose()
.
Quando a transformação do método prependRotation()
é aplicada a um objeto Matrix3D de um objeto de exibição, os valores da propriedade de rotação armazenados em cache do objeto de exibição são invalidados.
Uma forma de fazer com que um objeto de exibição gire ao redor de um ponto específico relativo à sua localização é definir a translação do objeto como o ponto especificado, girar o objeto usando o método prependRotation()
e transladar o objeto de volta à posição original. No exemplo a seguir, o objeto de exibição 3D myObject
faz uma rotação do eixo y ao redor da 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 — O grau da rotação.
| |
axis:Vector3D — O eixo ou a direção da rotação. Os eixos comuns são X_AXIS (Vector3D (1.0.0) ), Y_AXIS (Vector3D (0.1.0) ) e Z_AXIS (Vector3D (0.0.1) ). Este vetor deve ter um comprimento de um.
| |
pivotPoint:Vector3D (default = null ) — Um ponto que determina o centro da rotação. O ponto de pivô padrão de um objeto é seu ponto de registro.
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
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
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Acrescenta uma alteração de dimensionamento incremental nos eixos x, y e z a um objeto Matrix3D. Quando o objeto Matrix3D é aplicado a um objeto de exibição, a matriz executa as alterações de dimensionamento antes de outras transformações no objeto Matrix3D. As alterações são relativas ao objeto, relativas ao quadro de referência da posição e orientação originais. O fator de dimensionamento padrão é (1.0, 1.0, 1.0).
O dimensionamento é definido como um conjunto de três alterações incrementais ao longo dos três eixos (x,y,z). Você pode multiplicar cada eixo por um número diferente. Quando as alterações de dimensionamento são aplicadas a um objeto de exibição, o tamanho do objeto aumenta ou diminui. Por exemplo, se os eixos x, y e z forem definidos como dois, o tamanho do objeto será duplicado e, se eles forem definidos como 0,5
, o tamanho será dividido por dois. Para que a transformação de dimensionamento afete somente um eixo específico, defina os outros parâmetros como um. Um parâmetro de valor um significa que não há alterações de dimensionamento no eixo específico.
O método prependScale()
pode ser usado para redimensionar e também para gerenciar distorções, por exemplo, expansão ou contração de um objeto de exibição. Ele pode ser usado também para aplicar mais zoom ou menos zoom a um local. As transformações de dimensionamento são realizadas automaticamente durante a rotação e a translação do objeto de exibição.
A ordem de transformação é importante. Um redimensionamento seguido de uma transformação de translação produz um efeito diferente de uma translação seguida de uma transformação de redimensionamento.
Parâmetros
xScale:Number — Um multiplicador usado para dimensionar o objeto ao longo do eixo x.
| |
yScale:Number — Um multiplicador usado para dimensionar o objeto ao longo do eixo y.
| |
zScale:Number — Um multiplicador usado para dimensionar o objeto ao longo do eixo z.
|
Elementos da API relacionados
prependTranslation | () | método |
public function prependTranslation(x:Number, y:Number, z:Number):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Acrescenta uma translação incremental, um reposicionamento ao longo dos eixos x, y e z, a um objeto Matrix3D. Quando o objeto Matrix3D é aplicado a um objeto de exibição, a matriz executa as alterações de translação antes de outras transformações no objeto Matrix3D.
A translação especifica a distância que o objeto de exibição percorre, a partir de sua localização atual, nos eixos x, y e z. O método prependTranslation()
define a translação como um conjunto de três alterações incrementais ao longo dos três eixos (x,y,z). Para que haja alteração de translação somente em um eixo específico, defina os outros parâmetros como zero. Um parâmetro zero significa que não há alterações no eixo específico.
As alterações de translação não são absolutas. O efeito é relativo ao objeto, relativo ao quadro de referência da posição e orientação originais. Para fazer uma alteração absoluta na matriz de transformação, use o método recompose()
. A ordem de transformação também é importante. Uma translação seguida de uma transformação de rotação produz um efeito diferente de uma rotação seguida de uma transformação de translação. Quando o método prependTranslation()
é usado, o objeto de exibição continua se movimentando na direção para a qual está voltada, independentemente das outras transformações. Por exemplo, se um objeto de exibição estiver voltado para um eixo x positivo, ele continuará se movimentando na direção especificada pelo método prependTranslation()
, independentemente de como o objeto seja girado. Para que as alterações de translação ocorram depois de outras transformações, use o método appendTranslation()
.
Parâmetros
x:Number — Uma translação incremental ao longo do eixo x.
| |
y:Number — Uma translação incremental ao longo do eixo y.
| |
z:Number — Uma translação incremental ao longo do eixo z.
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
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
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Define as configurações de translação, rotação e dimensionamento da matriz de transformação. Ao contrário das alterações incrementais feitas pelas propriedades de rotação do objeto de exibição ou pelos métodos de rotação do objeto Matrix3D, as alterações feitas pelo método recompose()
são alterações absolutas. O método recompose()
substitui a transformação da matriz.
Para modificar a transformação da matriz com um quadro de referência pai absoluto, recupere as configurações com o método decompose()
e faça as alterações apropriadas. Assim, você pode definir o objeto Matrix3D como a transformação modificada usando o método recompose()
.
O parâmetro do método recompose()
especifica o estilo de orientação usado na transformação. A orientação padrão é eulerAngles
, que define a orientação com três ângulos separados de rotação para cada eixo. As rotações ocorrem consecutivamente e não alteram o eixo um do outro. As propriedades do eixo do objeto de exibição executam a transformação do estilo de orientação Ângulos de Euler. As outras opções de estilo de orientação são axisAngle
e quaternion
. A orientação de tipo Ângulo do eixo usa uma combinação de um eixo e um ângulo para determinar a orientação. O eixo ao redor do qual o objeto gira é um vetor unitário que representa uma direção. O ângulo representa a magnitude da rotação sobre o vetor. A direção também determina o lado para o qual um objeto de exibição está voltado e o ângulo determina o trajeto de movimentação. Os métodos appendRotation()
e prependRotation()
utilizam a orientação Ângulo do eixo. A orientação de quatérnion utiliza números complexos e o quarto elemento de um vetor. Uma orientação é representada pelos três eixos de rotação (x,y,z) e um ângulo de rotação (w). O método interpolate()
utiliza o quatérnion.
Parâmetros
components:Vector.<Vector3D> — Um Vector de três objetos Vector3D que substitui os elementos da translação, rotação e dimensionamento do objeto Matrix3D.
| |
orientationStyle:String (default = "eulerAngles ") — Um parâmetro opcional que determina o estilo de orientação usado na transformação da matriz. Os três tipos de estilo de orientação são eulerAngles (constante EULER_ANGLES ), axisAngle (constante AXIS_ANGLE ) e quaternion (constante QUATERNION ). Para obter informações adicionais sobre outro estilo de orientação, consulte a classe geom.Orientation3D .
|
Boolean — Retorna falso se qualquer elemento do Vector3D do Vetor de componentes não existir ou for nulo.
|
Elementos da API relacionados
transformVector | () | método |
public function transformVector(v:Vector3D):Vector3D
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Usa a matriz de transformação para transformar um objeto Vector3D de uma coordenada de espaço para outra. O objeto Vector3D retornado contém as novas coordenadas após a transformação. Todas as transformações de matriz, incluindo a translação, são aplicadas ao objeto Vector3D.
Se o resultado do método transformVector()
tiver sido aplicado à posição de um objeto de exibição, somente a posição desse objeto será alterada. Os elementos de rotação e de dimensionamento do objeto de exibição permanecerão inalterados.
Observação: este método define automaticamente o componente w do Vector3D transmitido como 1.0.
Parâmetros
v:Vector3D — Um objeto Vector3D que tem as coordenadas que serão transformadas.
|
Vector3D — Um objeto Vector3D com as coordenadas transformadas.
|
Elementos da API relacionados
transformVectors | () | método |
public function transformVectors(vin:Vector.<Number>, vout:Vector.<Number>):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Usa a matriz de transformação para transformar um Vector de números de um espaço de coordenadas para outro. O método tranformVectors()
interpreta cada grupo de três números do objeto Vector vEntrada
como uma coordenada tridimensional (x,y,z) e coloca uma coordenada tridimensional transformada no objeto Vector vSaída
. Todas as transformações de matriz, incluindo a translação, são aplicadas ao objeto Vector vEntrada
. Você pode usar o método transformVectors()
para renderizar e transformar um objeto 3D como uma malha. Uma malha é um conjunto de vértices que define a forma do objeto.
Parâmetros
vin:Vector.<Number> — Um Vector de números, em que cada grupo de três números é uma coordenada tridimensional (x,y,z) que será transformada.
| |
vout:Vector.<Number> — Um Vector de números, em que cada grupo de três números é uma coordenada tridimensional transformada (x,y,z).
|
Elementos da API relacionados
transpose | () | método |
public function transpose():void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | Flash Player 10, AIR 1.5 |
Converte o objeto Matrix3D atual em uma matriz em que as linhas e colunas são trocadas. Por exemplo, se a propriedade rawData
do objeto Matrix3D atual contiver os seguintes 16 números, 1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34
, o método transpose()
interpretará cada grupo de quatro números como uma linha e transformará as linhas em colunas. O resultado será uma matriz com a propriedade rawData
de: 1,11,21,31,2,12,22,32,3,13,23,33,4,14,24,34
.
O método transpose()
substitui a matriz atual por uma matriz transposta. Para transpor uma matriz sem alterar a matriz atual, primeiramente copie a matriz atual usando o método clone()
e depois aplique o método transpose()
à copia.
Uma matriz ortogonal é uma matriz quadrada cuja transposição é igual ao seu inverso.
Wed Jun 13 2018, 11:10 AM Z