Você está aqui: Python ::: Topografia e Geoprocessamento ::: Passos Iniciais

Como converter Rumo em Azimute em Python - Python para Topografia e Engenharia Civil

Quantidade de visualizações: 606 vezes
É muito comum, nos códigos que estamos escrevendo para cálculos de Topografia e Engenharia Civil, termos que lidar com conversões de Rumo para Azimute e vice-versa.

A palavra azimute, de origem árabe, significa "as direções", e é sempre determinado no sentido horário. Muito utilizado na Topografia, em levantamentos topográficos, o azimute é o ângulo entre o norte magnético, e um ponto levantado, ou entre o norte e um lado de um determinado polígono. Seu valor varia de 0º a 360º. Não esqueça, sempre partindo do norte.

O Rumo, por sua vez, é o menor ângulo formado pelo alinhamento norte sul e a direção considerada. Seu valor varia de 0º a 90º e é obtido a partir do norte ou do sul por leste e oeste.

Como o rumo expressa o ângulo sempre em função do quadrante em que ele se encontra, temos que acrescentar as siglas NE, SE, SW, NW. A primeira letra indica a origem a partir da qual a contagem é realizada e a segunda letra indica a direção do giro ou quadrante. Dessa forma, valores em rumo quase sempre vêm descritos como graus, minutos e segundos, variando de 0º a 90º e precedidos ou antecedidos pelas siglas discutidas acima.

Veja na figura a seguir uma exemplicação de azimute e rumo:



Veja agora o código Python completo que pede para o usuário informar a direção em rumo e mostra a direção correspondente em azimute:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# função principal do programa
def main():
  # vamos pedir para o usuário informar o valor do rumo
  rumo = float(input("Informe o valor do rumo: "))
  
  # agora vamos pedir a sigla
  sigla = input("Informe a sigla [NE, SE, SW, NW]: ")
    
  # agora vamos converter rumo em azimute
  azimute = 0;
  if sigla == "NE":
    # estamos no primeiro quadrante: 0º a 90º
    azimute = rumo
  elif sigla == "SE":
    # estamos no segundo quadrante: 90º1' a 180º
    azimute = 180 - rumo
  elif sigla == "SW":
    # estamos no terceiro quadrante: 180º1' a 270º
    azimute = 180 + rumo
  elif sigla == "NW":
    # estamos no quarto quadrante: 270º1' a 360º
    azimute = 360 - rumo;
    
  # mostramos o resultado
  print("O azimute para o rumo informado é: {0}".format(azimute))
  
if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

Informe o valor do rumo: 35
Informe a sigla [NE, SE, SW, NW]: SE
O azimute para o rumo informado é: 145.0

Note que o nosso código Python está considerando apenas os graus, ou seja, não incluímos os minutos e segundos. Em outras dicas do site eu mostro como converter graus, minutos e segundos em graus decimais antes de efetuar os cálculos.

Link para compartilhar na Internet ou com seus amigos:

Python ::: NumPy Python Library (Biblioteca Python NumPy) ::: Arrays e Matrix (Vetores e Matrizes)

Como gerar vetores e matrizes com números inteiros aleatórios usando a função random.randint() da biblioteca NumPy para - Machine Learning com Python

Quantidade de visualizações: 822 vezes
Veremos nessa dica como podemos usar o método random.randint() da biblioteca NumPy para gerar vetores e matrizes já preenchidos com números inteiros aleatórios.

Note que a criação de vetores e matrizes preenchidos com números randômicos é uma parte importante para o desenvolvimento de modelos de teste (test models) em Inteligência Artificial (IA), Machine Learning e outras áreas de estudo que envolvem Data Science.

Vamos começar com a forma mais simples do uso da função random.randint() para gerar um vetor de 10 elementos contendo números aleatórios de 0 até 10 (não incluído):

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# importamos o módulo random da bibliteca NumPy
from numpy import random

def main():
  # vamos gerar um vetor de números inteiros aleatórios
  #  de 0 (incluído) à 10 (não incluído) 
  valores = random.randint(10, size=10)
  print("O vetor gerado foi: ", valores)  

if __name__== "__main__":
  main()


Ao executar este código teremos um resultado parecido com:

O vetor gerado foi: [0 3 2 3 8 9 3 9 6 4]

Aqui nós informamos o limite alto do valor aleatório a ser gerado (mas ele não é incluído). Se quisermos limitar a faixa inferior, podemos tirar proveito dos parâmetros low e high da função randint(). Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# importamos o módulo random da bibliteca NumPy
from numpy import random

def main():
  # vamos gerar um vetor de números inteiros aleatórios
  #  de 50 (incluído) à 101 (não incluído) 
  valores = random.randint(50, 101, 10)
  print("O vetor gerado foi: ", valores)  

if __name__== "__main__":
  main()

Agora o resultado será parecido com:

O vetor gerado foi: [92 89 66 52 61 77 55 58 72 55]

Para gerarmos uma matriz, por exemplo, de 2 linhas e 4 colunas, só precisamos gerar o vetor de números aleatórios e em seguida usar o método reshape(), também da biblioteca NumPy para converter a matriz de uma dimensão (vetor) em uma matriz de duas dimensões. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

from numpy import random

def main():
  # vamos gerar um vetor de números inteiros aleatórios
  #  de 1 (incluído) à 21 (não incluído) 
  valores = random.randint(1, 21, 8)
  
  # agora vamos converter o vetor para uma matriz
  # de 2 linhas e 4 colunas 
  valores = valores.reshape(2, 4)

  print("A matriz gerada foi: ", valores)  

if __name__== "__main__":
  main()

Quando executamos este código nós temos um resultado parecido com:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

A matriz gerada foi:  [[17  5  2  9]
 [14 10 10 19]]

A partir da versão 1.19 da NumPy, os desenvolvedores da biblioteca recomendam o uso do método integers() do módulo default_rng().


Python ::: Python para Engenharia ::: Engenharia Civil - Cálculo Estrutural

Como calcular os esforços solicitantes majorados em pilares usando Python - Python para Engenharia Civil

Quantidade de visualizações: 242 vezes


Quando estamos dimensionando pilares em concreto armado em geral, a primeira coisa que devemos fazer é calcular os esforços solicitantes, ou seja, as cargas que estão chegando ao pilar.

No caso dos pilares intermediários, ou seja, pilares que residem fora dos cantos e extremidades da estrutura e que, por isso, recebem a carga em seu centro geométrico, considera-se a compressão centrada. Dessa forma, chamamos de Nk o somatório de todas as cargas verticais atuantes na estrutura e podemos desprezar as excentricidades de 1ª ordem.

De acordo com a NBR 6118 (ABNT, 2014), para a situação de projeto, essa força normal Nk deve ser majorada pelos coeficientes γn e γf, resultando em uma força normal de projeto chamada Nd.

O coeficiente γn deve majorar os esforços solicitantes finais de cálculo de acordo com a menor dimensão do pilar. A norma diz que a menor dimensão que um pilar pode ter é 19cm, mas, em alguns casos, podemos ter a menor dimensão de até 14cm, precisando, para isso, majorar os esforços solicitantes. Nos comentários do código Python eu mostro como esse cálculo é feito, de acordo com a NBR 6118 (ABNT, 2014), é claro.

O coeficiente γf, na maioria dos casos, possui o valor 1,4 e entra no cálculo para converter a força normal Nk em força normal de projeto Nd.

A fórmula para o cálculo dos esforços solicitantes majorados em pilares intermediários é:

\[ Nd = \gamma n \cdot \gamma f \cdot Nk \]

Onde:

γn majora os esforços de acordo com a menor dimensão do pilar de acordo com a NBR 6118 (ABNT, 2014).

γf em geral possui o valor 1.4 para majorar os esforços em estruturas de concreto armado.

Nk é a força normal característica aplicada ao pilar, em kN.

Nd é a força normal de projeto, em kN.

Vamos então ao código Python, que solicitará ao usuário os valores de suas dimensões hx e hy (em centímetros) e a carga, ou seja, a força normal característica chegando no pilar em kN e vamos mostrar a força normal de projeto Nd:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# método principal
def main():
  # vamos pedir as dimensões do pilar
  hx = float(input("Informe a dimensão do pilar na direção x (em cm): "))
  hy = float(input("Informe a dimensão do pilar na direção y (em cm): "))

  # vamos pedir a carga total no pilar em kN
  Nk = float(input("Informe a carga total no pilar (em kN): "))

  # vamos obter o menor lado do pilar (menor dimensão da seção transversal)
  if (hx < hy):
    b = hx
  else:
    b = hy
  
  # agora vamos calcular a área do pilar em centímetros quadrados
  area = hx * hy

  # a área está de acordo com a norma NBR 6118 (ABNT, 2014)
  if (area < 360):
    print("A área do pilar não pode ser inferior a 360cm2")
    return

  # vamos calcular a força normal de projeto Nd
  yn = 1.95 - (0.05 * b) # de acordo com a norma NBR 6118 (ABNT, 2014) Tabela 13.1
  yf = 1.4 # regra geral para concreto armado
  Nd = yn * yf * Nk

  # e mostramos os resultados
  print("\nA área do pilar é: {0} cm2".format(round(area, 2)))
  print("A menor dimensão do pilar é: {0} cm".format(round(b, 2)))
  print("O valor do coeficiente yn é: {0}".format(round(yn, 2)))
  print("A força normal de projeto Nd é: {0} kN".format(round(Nd, 2)))

if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

Informe a dimensão do pilar na direção x (em cm): 40
Informe a dimensão do pilar na direção y (em cm): 19
Informe a carga total no pilar (em kN): 841.35

A área do pilar é: 760.0 cm2
A menor dimensão do pilar é: 19.0 cm
O valor do coeficiente yn é: 1.0
A força normal de projeto Nd é: 1177.89 kN


Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico

Exercícios Resolvidos de Python - Como calcular o peso de uma pessoa na Lua usando Python

Quantidade de visualizações: 629 vezes
Pergunta/Tarefa:

Escreva um programa Python que leia o peso de uma pessoa na Terra e retorne o seu peso na Lua. Lembre-se da seguinte fórmula:

\[\text{Peso na Lua} = \frac{\text{Peso na Terra}}{9,81} \times 1,622 \]

Aqui nós estamos definindo a força da gravidade na Terra como 9,81 m/s2 e a força da gravidade na Lua como 1,622 m/s2. Se você quiser calcular o peso de uma pessoa em Marte, por exemplo, basta trocar a força da gravidade na Lua pela força da gravidade em Marte.

Sua saída deverá ser parecida com:

Peso na terra (kg): 70
O peso da pessoa na Lua é: 11.57 kg
Resposta/Solução:

Veja a resolução comentada deste exercício usando Python:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# função principal do programa
def main():
  # vamos ler o peso da pessoa na Terra
  peso_terra = float(input("Peso na terra (kg): "))
  
  # vamos calcular o peso da pessoa na Lua
  peso_lua = (peso_terra / 9.81) * 1.622 
  # arredonda para duas casas decimais
  peso_lua = round(peso_lua, 2)

  # vamos mostrar o resultado
  print("O peso da pessoa na Lua é: {0} kg".format(peso_lua))

if __name__== "__main__":
  main()



Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Python

Veja mais Dicas e truques de Python

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 67 usuários muito felizes estudando em nosso site.