quarta-feira, 20 de março de 2019

Meu cartaz Fractalizado!

Que tal construir um cartaz que tenha o formato de um Fractal? Acredito que em primeiro lugar você deve estar se perguntando o que é um Fractal?! Um Fractal pode ser entendido como uma construção geométrica que possui repetições em sua construção (se quiser saber mais acesse: https://teoriadacomplexidade.com.br/geometria-fractal/). Alguns exemplos de Fractais:


Como podemos observar acima, cada uma das figuras é obtida a partir de repetições e essas repetições podem ser construídas por meio de algoritmos matemáticos e também por programações. Hoje como nosso foco é construir um cartaz (que é 2D) com o formato de um Fractal, iremos utilizar o Inkscape (você pode obter ele gratuitamente em: https://inkscape.org/pt-br/) e usar a opção L-System em Extensões/Renderizar (L-Sistema em português e que você pode saber mais acessando esse link: http://www.cin.ufpe.br/~if114/Monografias/L-systems/Gramaticas/node13.html):


Como podemos  ver nas opções acima, temos os campos de preenchimento Axioma e Régua que funcionam como as leis de formação desse Fractal. Os demais campos se referem a quantidade de repetições, tamanho de lado e valor de ângulo direito/esquerdo.Se você clicar em ajuda (aba ao lado) irá entender o que cada simbologia significa.
Para entender melhor, vamos fazer passo-a passo a construção desse Fractal. Em primeiro lugar, observando a regra de construção básica que é a Régua, o código "F=F-F++F-F" pode ser entendido abaixo:


Observe que com esse processo você definiu a construção básica do seu Fractal e agora vai precisar de uma lei de construção para dar o formato da poligonal fechada, que é utilizando a opção Axioma com o seguinte código: "F++F++F". Basicamente esse código pede para repetir a construção da Régua (que é definida como F) três vezes com um ângulo no sentido horário de 120 graus (++) entre cada um deles. Apesar de em um primeiro momento toda essa construção parecer ser complicada, tudo é muito lógico e simples de ser entendido. Que tal aprimorar essa construção? Construir outros Fractais? Ou ainda fazer construções bem malucas? Tudo é válido para dar uma estilizada no seu cartaz! Deixe nos comentários abaixo suas descobertas e invenções. Até a próxima.

segunda-feira, 11 de março de 2019

Movendo sólidos no OpenScad

Que tal construir uma mesa no OpenScad para posterior impressão? Essa será nossa motivação inicial para aprender a como movimentar sólidos no plano geométrico do OpenScad e para entendermos um nível inicial de programação com o uso do for (é um loop de programação que podemos traduzir como "enquanto").
Para começo de conversa, vamos modelar a mesa de cabeça para baixo de modo a facilitar a sua impressão 3D (então não se assuste com o surgimento de mesas ao contrário, afinal na impressão 3D ter uma boa base de aderência é fundamental).


Para construir o tablado usaremos um paralelepípedo fino que será definido pela linha de comando "cube" com valores de dimensão (40,40,5) e os pés da mesa serão construídos com quatro cilindros definidos pela linha de comando "cylinder" com valores de dimensão (30,2,2) e um número de faces igual a 100 (lembrando que quanto maior o valor, mais o cilindro será arredondado). Porém, temos um problema: como posicionar cada um desses sólidos no plano geométrico? A solução mais simples é o uso do "translate" (podemos entender como translação, ou posicionamento em valores de X,Y e Z):



Como podemos observar no código acima, o "translate" é usado antes do sólido construído e o posiciona pegando o ponto central do mesmo, por isso, ao invés de utilizar o ponto em X=20, usou-se o X=18, pois o cilindro possui raio 2, que é exatamente o seu centro. No caso do "cube" foi usado um "center=true" que nada mais é do que um "translate" no ponto zero de todos os eixos (0,0,0).
Existe uma segunda possibilidade de uso do "translate", mas ao invés de repetir o comando quatro vezes, é possível fazer o uso do loop (repetição) "for" e economizar na programação, como podemos ver abaixo:



Basicamente, temos um "enquanto" (for) que tem valores de i variando de 0 a 3 e que serão multiplicados dentro de um "rotate" no eixo x com base no valor 90, ou seja, teremos as posições, 0, 90, 180 e 270, que são os quatro cantos da mesa. Confira abaixo uma figura exemplificando isso:


Com essas duas propostas de movimentos baseadas no "translate" você poderá construir objetos mais complexos. Agora é com você. Que outras construções são possíveis de serem realizadas no OpenScad? Deixe nos comentários os códigos e fotos das suas construções e até a próxima.

sexta-feira, 8 de março de 2019

A Geometria Analítica no OpenScad

Modelar no OpenScad é diferente de modelar usando o TinkerCad. Além de precisar usar comandos ao invés de manipulação de objetos, existe a necessidade de saber alguns conceitos da Geometria Analítica (ao invés de trabalhar com o comprimentos das formas usando o sistema de medidas, teremos o uso de coordenadas cartesianas). E esse é nosso objetivo hoje: dar os primeiros passos no mundo do OpenScad que, para produção de peças com muito detalhamento, é superior a diversos outros CADs disponíveis.
A primeira coisa é entender o que é um plano em R³ (plano com três dimensões: X, Y  e Z), cuja representação abaixo, mostra cada um dos eixos com seus respectivos pontos positivos e negativos, todos saindo da origem com valor zero (para saber mais, consulte: https://mundoeducacao.bol.uol.com.br/matematica/dimensoes-espaco.htm).


Para construir um cubo de lado 20 no OpenScad temos algumas formas de escrever o código. A primeira delas é apontando os valores dos lados do cubo em X, Y e Z (copie o código abaixo, cole ele no OpenScad e aperte F5 para gerar a forma geométrica):



Note que, por ser um cubo, obrigatoriamente todos os lados tem de ser idênticos (caso tenha valores diferenciados nos eixos teremos um paralelepípedo, experimente isso!), por isso podemos resumir esse código como:



Para gerar um esfera de raio 3 podemos usar o código abaixo, onde o valor de r é o valor de raio e o valor $fn é o valor do número de faces de modo que valores mais altos deixam a esfera com uma aparência mais circular e valores menores fica mais poligonal:




É possível construir um cilindro de altura 40 e raio 20 (note que no cilindro temos dois raios, que são os dois valores 20 iguais. O que aconteceria caso os valores fosse diferentes?) com o seguinte comando:





Quando observamos as construções acima, notamos como o entendimento dos pontos no plano tridimensional faz toda a diferença para o correto uso dos valores nos comandos do OpenScad. E isso é a base para aprendizagem da Geometria Analítica. Se você quiser ver outros exemplos  prontos no OpenScad, clique em File/Examples e poderá usar diversas construções prontas e fazer alterações nelas para ir entendendo as especificidades desse software. Curtiu? Deixe nos comentários suas descobertas e produções. Até a próxima!

sexta-feira, 1 de março de 2019

RPG Battle: como construir sua própria batalha de RPG.

Conforme o post anterior (https://vemfazermatematicaegames.blogspot.com/2018/11/a-matematica-em-uma-batalha-de-rpg.html) entendemos um pouco sobre como funciona a Matemática de uma batalha num RPG (lembrando que  é um exemplo construído, não regra geral). E você deve ter sentido vontade de alterar os tipos de personagens, os valores e tipos dos poderes ou até mesmo a fórmula que faz o cálculo da batalha. Vamos juntos entender a programação para poder fazer novas versões dele?
Para alterar os nomes ou quantidade de personagens aliados e oponentes temos que modificar os botões da tela inicial, seja alterando o nome ou acrescentando novos botões. No caso de acréscimo de personagens aliados é necessário alterar a quantidade de armazenamento de valores na Screen1, seguindo o padrão já existente (destacado em verde):


Em seguida, na screen de trabalho, deve ser alterado as estruturas listadas abaixo, cuja função é basicamente selecionar e ocultar quais botões de oponentes ficarão disponíveis onde pode ser necessário incluir novas variáveis globais que remetam as listas de poderes (iremos ver isso em seguida). Não esqueça de modificar também a entrada de programação responsável pelo fim de jogo (o procedimento Morto), pois ele desabilita todos os botões que não são necessários ao final da batalha:


Para alterar valores de poderes ou adicionar novos é necessário modificar diretamente na lista de valores aonde cada variável global está ligada a uma lista específica (em vermelho). Portanto, para alterar valores basta digitar novos valores e se quiser aumentar a quantidade de poderes, apenas clique na engrenagem azul e acrescente a quantidade desejada. Lembrando que se for aumentado a lista, deve ser colocado o novo número de itens na programação do contador (em verde). Também tenha atenção que essa programação foi construída para comparar listas com iguais quantidades, por isso se resolver fazer personagens com quantidade de poderes diferenciados, essa programação não serve e será necessário fazer uma grande alteração estrutural: 


Agora se você quer mudar a fórmula do calculo de batalha ou até mesmo os valores obtidos via dado D20, vai ser necessário modificar as estrutura de procedimento Dado Rolado e Calcular Batalha, como podemos ver na imagem abaixo:


Resumidamente, no procedimento Dado Rolado é calculado um valor aleatório entre 1 e 20 (dado D20) e são dadas duas situações: uma em que o dado é maior ou igual a 10 que beneficia o jogador (mais 0,5 para o player e -0,5 para o adversário) com um fator no calculo de batalha e a outra situação menor do que 10 que ocorre exatamente o contrário. Já no procedimento Calcular Batalha é feito o cálculo entre os valores tabelados de poderes do personagem contra o adversário em função do valor do dado tirado (com o fator acima descrito incluso) e resulta em duas situações: a primeira aonde o personagem vence (valor acima de zero) e a outra onde ele perde (valor abaixo de zero) em uma subtração direta. No caso da programação aqui apresentada, para cada uma das situações, é descontado o valor da vida apenas do perdedor e exite um operador lógico que aciona caso o valor da vida seja menor do que zero, trocando para o valor morto.
E por fim, temos o cálculo de Experiência usa a estrutura operacional que é mostrada abaixo e que preza por quanto mais batalhas, mais experiência adquirida:


É isso! Perceba que podem ser feitas muitas alterações na estrutura proposta: desde aumento da quantidade de valores de poderes ou quantidade de inimigos até a mudança efetiva do cálculo de batalha. Agora é sua vez. Faça a sua versão de um RPB Battle e deixe nos comentários suas descobertas e produções. Até mais!

Como não perder nenhum compromisso: Meu App Agenda

No nosso dia a dia a agenda é um instrumento de grande importância que as pessoas utilizam para fazer anotações de compromissos ou informaçõ...