Vértices de um retângulo manipulado com image_angl

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Vértices de um retângulo manipulado com image_angl

Mensagem por Gabreel em Sab 21 Fev 2015, 07:21

Tenho um retângulo:

(note os pontos no 'pé' dele, são os vértices inferiores que procuro, esses estão desenhados por draw, logo, tenho a coordenada deles)

Quando desço/subo a rampa, o meu bloco inclina:

(mudei a cor e aumentei os vértices pra melhorar a visualização)

Se vocês repararem, tá meio deficiente o ângulo do bloco, e para aperfeiçoá-lo, preciso desses vértices inferiores.

Dicas de como posso fazer isso?

Código atual:
Código:
xx1 = x-sprite_get_xoffset(sprite_index);
yy1 = y-sprite_get_yoffset(sprite_index)+sprite_height;

if(image_xscale==1){
xx2 = x-sprite_get_xoffset(sprite_index)+sprite_width;
}else{
xx2 = x+sprite_get_xoffset(sprite_index);
}
yy2 = y-sprite_get_yoffset(sprite_index)+sprite_height;

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Vértices de um retângulo manipulado com image_angl

Mensagem por Kabeção em Sab 21 Fev 2015, 10:58

http://en.wikipedia.org/wiki/Rotation_matrix#In_two_dimensions

Código:
c = dcos(image_angle);
s = -dsin(image_angle);

// Matriz
m00 = c;
m01 = -s;
m10 = s;
m11 = c;

// Transformação
final_x = x * m00 + y * m01;
final_y = x * m10 + y * m11;

Com uma única matriz você pode transformar milhares de vértices.
Multiplicar uma matriz de rotação por outra é o mesmo que adicionar suas rotações.

Note que esse (x, y) deve ser relativo.
O eixo de rotação é (0, 0), ou seja, rotacionar um ponto nas coordenadas da room faz ele girar em torno da posição (0, 0) na room.

Kabeção

Ranking : Sem avaliações
Número de Mensagens : 2314
Data de inscrição : 08/06/2008
Reputação : 100
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 0
   : 1

http://blackcapapps.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Vértices de um retângulo manipulado com image_angl

Mensagem por Gabreel em Sab 21 Fev 2015, 13:03

Ok, entendi, mas como faria essa 'relativização'?

Edit: Já consegui, pra quem passar por aqui no futuro:

Como o Kabeção disse:

final_x = x * m00 + y * m01;
final_y = x * m10 + y * m11;

Para mudarmos o centro:
xc = x - x_novocentro;
yc = y - y_novocentro;

final_x = (xc * m00 + yc * m01)+x_novocentro;
final_y = (xc * m10 + yc * m11)+y_novocentro;

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Vértices de um retângulo manipulado com image_angl

Mensagem por Conteúdo patrocinado Hoje à(s) 20:02


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum