quinta-feira, 7 de novembro de 2019

Criando o seu MathWords: o aplicativo-dicionário para a Matemática.

Resolver problemas matemáticos é sempre desafiador e um dos pontos mais críticos é quando precisamos "retirar os dados do problema", que no fundo trata-se de uma "tradução" das palavras em língua materna (português) para os símbolos da linguagem matemática. E uma possibilidade para auxiliar nesse processo de tradução é criar um dicionário português-matemático na forma de um aplicativo: o MathWords!


Nesse link (ai2.appinventor.mit.edu/?galleryId=5335630650933248) você tem disponível o projeto do MathWords desenvolvido no appinventor2 e cuja customização e inserção dos novos termos é você quem fará. Em primeiro lugar, estamos criando um aplicativo que usa o TinyDB, um recurso que armazena dados e que vai nos ajudar a economizar a criação de telas (ao invés de ter uma tela por letra, teremos apenas uma única tela para todas as letras do alfabeto). Ele já foi explorado anteriormente no post de criação de criação de histórias (https://vemfazermatematicaegames.blogspot.com/2018/09/appinventor2-criando-seu-aplicativo-de.html), mas ele voltou a ser usado de uma forma bem simplificada. O TinyDB é um componente invisível que está listado no menu de Armazenamento e que deve ser inserido nas duas telas, a inicial (Screen1) e a dos significados (TelaA). Após isso, cada botão (de cada letra do alfabeto) criado na tela inicial (Screen1) irá dar um valor numérico diferente (A é 1, B é 2, C é 3, e assim por diante conforme destacado em vermelho abaixo) para a variável global "Letras" que irá armazenar esse valor no TinyDB dessa tela. Na tela dos significados (TelaA) tem-se um inicializador da tela onde o TinyDB ali presente possui o valor armazenado anteriormente sendo chamado e torna-se o valor da variável global "Letra". Conforme o valor adquirido, os SE abaixo na programação irão dizer qual os significados (conforme a relação letra e número, por exemplo, se vier o valor 4 é a letra D e seus significados) que deverão ser apresentados na tela:


O MathWords foi construído para ser personalizado, isto é, você quem irá colocar os termos matemáticos que mais necessita consultar. Para inserir os termos você deve ir na TelaA e substituir os textos exemplos já construídos com a sua definição (cada linha de programação é um conceito) e respeitando a ordem de classificação das palavras de acordo com cada opção dos botões:


Fácil não é mesmo!? Mas e se você quiser inserir mais do que dez termos (o modelo vem com essa quantidade)? Nesse caso você deve inserir uma nova caixa de texto (arraste ela para cima do celular) e use as opções destacadas em vermelho: Ativado desabilitado (para não ser possível fazer edição), Largura 90 porcento (para padronizar o tamanho da exibição) e Multilinha (para ter a quebra de linhas caso a frase seja grande demais). Em seguida,  na parte de programação basta apertar com o botão direito em cima da programação "ajustarCaixaDeTexto" e a duplique, encaixando-a abaixo dessa programação (dentro do SE) e alterando a numeração conforme a caixa de texto criada anteriormente (segue ordem numérica). Atente-se apenas que você deve fazer isso para todos os SE da programação (cada SE é um número que corresponde a uma letra do dicionário), pois senão irá aparecer texto apenas nos que você fazer a edição:


E assim finalizamos o MathWords. Agora é hora de por a mão na massa e trazer para dentro desse aplicativo os seus verbetes matemáticos que você utiliza no dia-a-dia. Deixe nos comentários abaixo o seu MathWords personalizado e até a próxima!

terça-feira, 5 de novembro de 2019

Rotações de objetos no OpenSCAD.

Ao modelar objetos no OpenSCAD nem sempre sua construção é linda e maravilhosa a ponto de estar lá no ponto zero dos eixos cartesianos e não necessitar de nenhuma movimentação. No post anterior vimos o uso do translate (https://vemfazermatematicaegames.blogspot.com/2019/03/movendo-solidos-no-openscad.html) para transladar objetos pelo plano. Hoje iremos ver formas de rotacionar esse sólido construído pelo plano.
A forma mais simples de rotacionar um objeto é usando o comando "rotate ([x,y,z])", onde as entradas são valores numéricos dos ângulos nos eixos x, y e z respectivamente, conforme a figura abaixo:


Tome cuidado ao fazer rotações parciais para ter uma soma final de uma rotação única, pois elas não são comutativas. No exemplo abaixo, o comando "rotate ([45,45,45])" não tem a mesma posição que as demais rotações usando valores x,y,z iguais a 45 e que a soma desses rotações não dá o original, ou seja, a rotação linear não é comutativa:


Se você quiser saber mais do porque a decomposição da rotação não funciona, leia a página 04 do texto a seguir: https://webserver2.tecgraf.puc-rio.br/~mgattass/Quaternios.pdf.
Outra possibilidade de usar rotação é usando como eixo um vetor posição (ao invés dos eixos cartesianos). Usando o comando "rotate (a=ângulo, v=[x,y,z])" é possível ter um eixo personalizado a partir de um vetor posição e por meio dele fazer a rotação:


Existem outras possibilidade de rotações como o multimatrix, mas esse será abordado futuramente. Por hoje é isso! Agora suas construções já podem ser rotacionadas pelo plano 3D e trazer novos desafios. Não esqueça de deixar suas impressões nos comentários e até a próxima!

quarta-feira, 23 de outubro de 2019

O uso de variáveis no Modelamento Geométrico

Na Matemática, o conceito de variável é atrelado ao estudo de funções, onde podemos ter um conjunto finito ou não de valores desconhecidos, mas que podem ser atrelados a uma regra de construção. Essa definição é muito importante no modelamento de objetos, pois permite fazer construções de objetos escalonados (que podem ter diversos tamanhos) e que podem sofrer modificações sem alterar as regras básicas de construção.


Como podemos ver acima, logo no início da programação são definidos duas variáveis, "valor1" e "valor2" que são igualadas a valores numéricos, estes inclusive podem ser alterados e a peça irá ter um novo redimensionamento (teste a vontade). Estes dois valores estão presentes dentro da programação de construção (união entre cilindro e cubo rotacionado) e temos que: o "valor1" é referente aos valores X e Y do plano, no qual o cilindro tem o raio e o cubo tem as coordenadas cartesianas X e Y (destacados em verde). Já o "valor2" é referente ao eixo Z, no qual o cilindro tem a altura (h) e o cubo tem a terceira coordenada cartesiana (Z) (destacados em laranja). Desse modo, independente do valor que for colocado nas duas variáveis, a construção irá manter suas regras de proporcionalidade de construção.
É possível ainda fazer operações com as variáveis criadas de modo a manter uma mesma escala na construção total do objeto, como podemos ver no código abaixo:



Observe que o comando "valor2 = valor1*0.9" irá construir todos os valores da variável "valor2" com o tamanho escalonado em 0,9 da variável "valor1". Esse tipo de construção irá garantir sempre a proporcionalidade da sua construção como um todo, caso essa seja sua intenção.
Existem outras formas de ajustar suas construções usando os comandos "scale([x,y,z])" e "resize(newsize=[x,y,z])" que são responsáveis por escalonar e redefinir os tamanhos dos sólidos, mas o ponto negativo é que são feitos por sólidos e não de maneira geral como usando as codificações com variáveis:


Finalizando, a importância algébrica na construção de modelos geométricos permite você abstrair melhor outras situações e não ficar na dependência de valores numéricos. A partir de agora é com você. Passe a fazer suas construções em função de variáveis e com o tempo você verá que é muito mais prático. Deixe nos comentários abaixo suas impressões e até a próxima!

segunda-feira, 21 de outubro de 2019

OpenSCAD: Como colorir e escrever em objetos

Prototipar objetos também exige um grau de criatividade que perpassa pelo uso de escritas e de cores. Embora no modelamento geométrico a cor utilizada não irá ser necessariamente a utilizada na impressão final (já que depende do filamento usado), ter o objeto colorido na área de construção do OpenSCAD já dá uma boa noção de como ele ficará (uso apenas no virtual). Assim como, a possibilidade de escrita ajuda a estilizar o objeto e deixar ele com a aparência de algo único.
Em primeiro lugar para para colorir um objeto, podemos usar três possibilidades diferentes, todas elas usando a nomenclatura de cores (link SVG Color List: https://www.w3.org/TR/css-color-3/#svg-color):



  • Nome por extenso em inglês: usando o comando "color ("nome da cor")" (destacado em vermelho);
  • Nomenclatura Hex RGB: usando o comando "color ("nomenclatura HEX RGB")" (destacado em laranja);
  • Valor decimal: usando o comando "color ([ R/255, G/255, B/255 ]), onde o R, G, B devem ser substituídos pelos valores decimais de coloração (destacado em azul).

Para escrever textos no OpenSCAD é bem simples. Basta apenas escrever o seguinte código "text ("digite seu texto")". Agora, se você quiser incrementar o seu texto com cores diferentes ou até mover ele de posição, o código abaixo é um exemplo perfeito de como é possível fazer isso:


Todos os códigos aqui utilizados podem ser baixados deste link: https://drive.google.com/drive/folders/1m0nQDvmQA8tD8c1OdPT4Md-YtH7C75t3?usp=sharing. Assim finalizamos esse post e agora é com você. Deixe nos comentários abaixo suas dúvidas e construções usando o OpenSCAD. Até a próxima! 

quinta-feira, 17 de outubro de 2019

Projeção de sólidos no OpenSCAD

Podemos entender como uma projeção, a sombra que o sólido geométrico sobre um plano. No OpenSCAD isso é possível usando o comando "projection ()". Veja abaixo duas possibilidades de uso de projeção em um sólido formado pela diferença entre um cubo e uma esfera:


Como podemos ver acima, a sombra formada nas projeções assume duas formas diferentes:
  • Projeção de todos os pontos em Z: nesse caso a projeção leva em conta a visão de todos os pontos no eixo Z e funciona como se uma luz projetasse sua sombra do alto do eixo positivo em Z. A programação é dada por:      

  • Projeção somente dos pontos em Z igual a zero: nesse caso é levado em consideração somente o formato do sólido em Z=0 e é realizada a projeção com base nisso. Sua programação é dada por:   


Nem sempre o sólido está na posição que você quer para obter a projeção, por isso a possibilidade de rotacionar o sólido precisa ser cogitada. Usando o comando "rotate([x,y,z])" onde os valores x,y,z são os ângulos de rotação para o seu sólido, teremos um novo formato de projeção (no caso abaixo foi rotacionado 45 graus no eixo X):


Com isso temos o básico para trabalhar com projeções que são muito importantes na Geometria Descritiva. Agora é a sua vez, comece a construir seus objetos e faça as projeções necessárias, depois deixe nos comentários abaixo as suas impressões. Até a próxima!

quarta-feira, 16 de outubro de 2019

Operações boleanas no OpenSCAD: a união, a diferença e a intersecção em sólidos.

Na modelagem 3D existem três tipos principais de operações com sólidos (que no OpenSCAD são denominadas de operações booleanas, se você quiser saber mais pesquise por esse termo na rede): a união, a diferença e a interseção que são totalmente necessárias para você fazer a construção de objetos que se derivem dos sólidos geométricos primitivos. Abaixo, você pode ver as três operações em questão com o uso de dois cilindros (o segundo cilindro sempre está rotacionado em noventa graus):


Para chegar nessas três construções usou-se as seguintes definições e códigos:
  • União: operação definida como a soma dos volume dos dois cilindros formando uma figura única e que pode ser obtida pelo seguinte código:

  • Diferença: operação definida como a subtração dos volumes do cilindros, lembrando que nessa operação a ordem de qual objeto é subtraído de outro faz diferença. Recomenda-se testar o código abaixo com a ordem trocada dos códigos dos cilindros para compreender melhor:

  • Interseção: operação definida com o volume em comum entre os dois cilindros e se desprezando os volumes que não estão em comum:


Como podemos ver acima a estrutura dos códigos é semelhante mudando apenas o nome da operação. Mas e se caso precisássemos combinar mais do que uma dessas operações? Nesse caso precisamos escrever o código na ordem de construção, respeitando a ideia de construção de conjuntos, ou seja, a ordem das chaves é muito importante, veja o exemplo abaixo:


Observando a imagem acima, temos primeiramente a união do cilindro e do paralelepípedo (cube) para criar uma peça única todos dentro de uma unica chave (destacado em vermelho) e, em seguida, é realizada a diferença entre essa peça criada com o cilindro responsável pelo furo (destacado em verde):


Por hoje foi isso. Agora você tem as bases mínimas para produzir objetos em 3D que consiste em saber a programação dos sólidos e suas dimensões, como movimentar eles e como fazer operações boleanas. Deixe nos comentários abaixo suas criações e até a próxima!

terça-feira, 15 de outubro de 2019

Extrusão Linear: transformando figuras 2D pro 3D.

Extrusão linear é uma operação de modelagem na qual pega-se um polígono 2D como entrada (eixos X e Y) e o estende na terceira dimensão (eixo Z) obtendo-se uma forma 3D. Na industria tem-se uma aplicação muito grande, podendo dar-se o exemplo a barra de suporte abaixo:


Vamos começar fazendo uma extrusão linear a partir de uma construção 2D, mais precisamente um círculo unido a um paralelogramo e realizado a diferença em relação a um hexágono em seu interior (destacado o código em vermelho). Veja abaixo a diferença entre a construção 2D e a construção 3D após a extrusão linear (lembrando que o código destacado em verde é o responsável por isso): 



Para o exemplo acima foi usado o seguinte código:



Além de estender em Z, a extrusão linear pode criar torções em torno desse eixo para produzir molas, barras roscadas, dentre outras possibilidades. Veja no exemplo abaixo, o que a alteração do valor na opção "twist=250" produz (note que foi retirado a união do exemplo acima para ficar mais simples de ver a torção hexagonal):



Outro exemplo possível, é usando a diferença em dois círculos e a opção de valor "twist=3000" criando uma mola em torno do eixo Z. Note que foi realizado uma translação, pois é exatamente esse distanciamento do eixo que promove esse efeito radial: 


Todos os códigos aqui utilizados podem ser encontrados no seguinte link: https://drive.google.com/drive/folders/1JFNPK373YLqBkcLyCeNMIds4Nvvb-IgP?usp=sharing. Outra dica também é que colocando o sinal de negativo no twist, temos como resultado a inversão do sentido da extrusão linear. Por hoje é isso, agora é com você, quais inovações utilizando a extrusão linear você pode incrementar em seus projetos de modelamento? Deixe nos comentários abaixo e até a próxima!

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çõ...