// Macro para calcular a direção do sol // Last edited on 2023-12-06 17:47:28 by stolfi #macro direcao_do_sol(lat, lon, mes, hora) // {lat} = latitude em graus (positiva=norte). // {lon} = longitude em graus (positiva=oeste). // {mes} = mes do ano (1 a 12). // {hora} = hora local do dia, 0 a 24. // A direcao norte geográfica é +Y, leste +X. // Direção do polo norte celeste: #local dir_polo = < 0.0, cos(radians(lat)), sin(radians(lat)) >; // Direção do meridiano local no equador celeste: #local dir_mer_loc = < 0.0, -dir_polo.z, +dir_polo.y >; // Direcao do leste geográfico: #local dir_nasc = x; // Ângulo do meridiano do sol relativo ao meridiano local (-90 a +90): #local ang_sol = 180*(hora - 12)/12; // Direção do meridiano do sol no equador celeste: #local dir_mer_sol = cos(radians(ang_sol))*dir_mer_loc - sin(radians(ang_sol))*dir_nasc; // Inclinação do sol sobre o equador em graus ( -23 a +23, positivo = verao no norte ) #local incl_sol = 23.44*cos(radians(mes*30 - 5)); // Drireção do sol: #local dir_sol = cos(radians(incl_sol))*dir_mer_sol + sin(radians(incl_sol))*dir_polo; dir_sol #end