Dado um conjunto de cartas de baralho (imagens retangulares com largura e altura), como posso girar e posicionar cada uma para que elas apareçam em um padrão de 'leque', como se você segurasse uma mão de cartas na vida real. Que matemática é necessária para fazer isso?
ATUALIZAR
Aqui está a implementação final do navegador em JavaScript: https://cosmicrealms.com/blog/2013/03/16/hand-of-cards/ e http://jsfiddle.net/tyyvk/108/
mathematics
Semelhança
fonte
fonte
Respostas:
Teoria
Como você não especificou em qual plataforma está implementando isso, darei uma descrição do algoritmo de maneira independente da linguagem:
Que a rotação esteja centrada em torno de um dos cantos inferiores do cartão (ou próximo ao canto), deve ser evidente olhando para ele:
Implementação
Quanto à forma de implementar isso, isso depende da sua plataforma. No XNA, você pode simplesmente usar o parâmetro Origin
SpriteBatch.Draw
para alterar o centro de sua rotação.Aqui está o que obtive com o código a seguir (com alguns ajustes na origem para torná-la melhor - basicamente a origem começa no canto direito e termina no canto esquerdo):
E o resultado:
fonte