Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução ao Scratch.
Esse é um programa baseado na linguagem de programação Scratch, que
funciona no modelo de fluxograma, como exemplificado na Figura 1. Este bloco de
funcionamento dita uma ação em que quando o programa for iniciado (quando a
bandeira verde, botão de inicialização, for clicada), se a variável “a” for igual a 10,
então o ator dirá “Hello!”
Figura 1.
Atores são personagens diferentes que obedecem aos blocos que são colocados
dentro deles. Por exemplo, se eu tiver 2 bolas, uma amarela e outra azul, com códigos
que digam “mova 10 passos para cima” e “mova 10 passos para baixo” respectivamente,
quando eu começar a simulação a bola amarela vai subir, enquanto a azul vai descer. Na
Figura 2 apresenta se o layout do Scratch. Existem outras funcionalidades, porém elas
não são relevantes. No campo de atores estão todos os atores do programa, como se
pode ver, o ator “Ball” está selecionado, então tudo que aparecer no Espaço de Código
será referente ao ator “Ball”. Para se escrever um comando, se tira um bloco do campo
“Blocos de código” e coloca o no Campo de Código. A Tela de Visualização mostra o
que o código está fazendo, enquanto as informações de cada ator (dependendo de qual
foi escolhido) estão disponíveis abaixo da tela. Os botões “run” e “stop” começam e
param o programa.
Propriedades básicas do programa.
Ao iniciar o programa, você notará que existem 4 atores. O “Sprite 1” é um
corpo dinâmico ao qual foram aplicadas as propriedades necessárias para o movimento.
O “Sprite 2” é um corpo fixo, ao qual não foram aplicadas forças. “G” é uma
demonstração fora de escala do vetor da aceleração da gravidade no Sprite 1, ele mostra
a direção e o sentido da aceleração imposta sobre esse corpo. “V” é uma demonstração
fora de escala do vetor da velocidade do Sprite 1.
O programa tem 13 variáveis no total. Falarei de cada uma delas conforme
avanço sobre o funcionamento do programa.
1.Gravidade
A força da gravidade só é aplicada sobre o Sprite 1 em prol de simplicidade.
Sendo que o único objeto presente no universo além do Sprite 1 é o Sprite 2, a direção e
o sentido dessa força apontam para o Sprite 2. O módulo dessa aceleração é expresso
pela fórmula:
A direção e o sentido desse módulo são um pouco mais complicados de calcular devido
a um problema que o Scratch tem com ângulos: o seu sistema. O sistema de ângulos do
Scratch funciona de acordo com o diagrama da Figura 3.
Figura 3
O problema com esse sistema é que todas as fórmulas que trabalham com
trigonometria dão valores incompatíveis quando entram no 3º ou 4º quadrante: as
tangentes no 3º e 4º quadrantes são positivas e negativas, respectivamente, porém, no
modelo do Scratch, os números nesses quadrantes são negativos e positivos, então, a
linguagem pega o módulo da tangente, passa para graus, e negativa o valor, exemplo: a
tangente de 135° é igual a -1, então o computador passa para módulo, que nos dá +1, a
tangente de 45°, depois disso ele negativa o valor, dando -45°, quando na verdade o
valor deveria ser 135°. Entendido esse problema, a solução que eu encontrei foi na
Teoria dos Conjuntos. A fórmula básica para encontrar o ângulo que indica a direção e o
sentido do vetor é essa:
Se:
Então:
Se:
Então:
2. Velocidade
O cálculo da velocidade é o mais complexo do programa (em especial o cálculo
do sentido e direção). Primeiro, usa se a lei dos cossenos para calcular o módulo da
velocidade:
Sendo que cada uma delas é uma adaptação da original, em que se gira o plano
convenientemente para não se atingir os valores em que a tangente tente ao infinite e,
simultaneamente, não atingir os quadrantes 3 e 4, matando 2 pássaros com uma só
pedra. Os diagramas a seguir mostram uma visualização dos ângulos em que a tangente
é um valor correto (em azul), ângulos em que a tangente é um valor incorreto (em
vermelho), e os valores limites em que a tangente é infinita (em amarelo):
Para conseguir um círculo completo em que todos os ângulos dão valores
corretos, utiliza-se uma fórmula por vez de acordo com a necessidade. O diagrama a
seguir mostra a utilização das diferentes fórmulas de acordo com o valor de AnguloV,
sendo que amarelo é a fórmula 1, cinza é a fórmula 2, azul é a fórmula 3 e vermelho é a
fórmula 4.
3.Movimento
Por fim, o movimento do Sprite 1 é baseado na decomposição do vetor
AnguloV, de acordo com as fórmulas:
4.Outras variáveis
As outras variáveis que você encontrará são meramente estéticas ou úteis para a
visualização do programa, como a variável “dis”, que calcula a distância entre os dois
objetos.
5.O problema
Como eu já te disse, por algum motivo a cada órbita que o Sprite 1 completa em
torno do Sprite 2, a energia do Sprite 1 é maior do que a inicial (a velocidade inicial
pode ser mudada em um dos primeiros blocos do ator v). Essa mudança de energia pode
ser observada pelo tamanho da órbita, que fica cada vez maior. Eu não tenho nenhuma
hipótese ainda, mas andei observando que o acréscimo da energia é maior quando o
Sprite 1 está mais perto do Sprite 2, ou quando a gravidade é maior. Outra observação é
que quando a velocidade inicial é colocada em 0, o Sprite 1 permanece imóvel, como se
a velocidade estivesse anulando a aceleração da gravidade, e o vetor velocidade aponta
para o exato inverso do vetor gravidade, a não ser que a direção e o sentido do vetor
estejam apontados na direção geral do Sprite 2 quando se inicie a simulação: nesse caso,
a simulação fará como deveria ser, e o objeto irá lentamente ser atraído pelo Sprite 2.
Se você achar a resposta, por favor me mande um e-mail o mais rápido possível,
e claro, obrigado por dar um pouco de atenção a esse projeto.
P.S. Eu sei que você é secretamente o Doutor House, então use a sua famigerada
inteligência para resolver o problema ao invés de cumprir suas horas de clínica.