Hello to All: I'm trying to write a sun positioning system with the help of python. The idea is that you give the program a location, date and hour and it returns the position of the sun.
I found a webpage that details the math behind this (http://www.usc.edu/dept/architecture/mbs/tools/vrsolar/Help/solar_concepts.html) , it was fairly trivial to translate this to python until I got to the azimuth equation. It looks like this: x_azm = sin(hour_R) * cos(decl_R) y_azm = (-(cos(hour_R))*cos(decl_R)*sin(lat_R))+(cos(lat_R)* sin(decl_R)) azimuth = atan(x_azm/y_azm)*TODEGREE where: Alt = Altitude Azm = Azimuth Decl = Declination HAngle = Hour angle alt_R = Altitude in radians azm_R = Azimuth in radians lat_R = Latitude in radians hour_R = Hour angle in radians x_azm = x component of azimuth y_azm = y component of azimuth TODEGREE = Constant equal to 180/p My python code for this particular equation: from math import * def Az(Lat, Dec, H_Ang): lat_r = radians(Lat) decl_r = radians(Dec) hour_r = radians(H_Ang) x_azm = sin(hour_r) * cos(decl_r) y_azm = (-(cos(hour_r)) * cos(decl_r) * sin(lat_r)) + (cos(lat_r) * sin(decl_r)) Azimuth = degrees(atan(x_azm/y_azm)) Azimuth = Azimuth *(-1) return Azimuth I was never very good at trigonometry, but looks like my translation of the equation is ok and the problem is some kind of python behavior, because whenever the results exceed 100° (deg) Python returns the complementary angle, it is possible to avoid this? Or I'm overlooking somethig? You can check this by yourself: If you use Az(34, -21.67, -150) you will get 72.79, the result in the webpage tool will be 107.21. And 72.79 + 107.21 = 180 but if you use Az(34, -21.67, -150) you will get 54.88 in both, my script and the webpage tool. If you want to take a look at the webpage tool this is the link: http://www.usc.edu/dept/architecture/mbs/tools/vrsolar/frameset.html Thanks in advance for your help, Carlos _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor