Conectar-se
Quem está conectado
28 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 28 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Vértices de um retângulo manipulado com image_angl

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;
avatar
Ranking : Sem avaliações
Data de inscrição : 08/06/2008
Número de Mensagens : 2314
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 100

Prêmios
   : 3
   : 0
   : 1
Ver perfil do usuáriohttp://blackcapapps.blogspot.com.br/

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

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.
avatar
Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

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

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;
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum