Never mind that astrology, numerology, and Tarot are considered pseudoscientific belief systems with little or no scientific basis. Hopefully, I won't get banned from Hackaday just for suggesting that someone should write an astrology bot that generates a new personalized horoscope exactly once a second. For whatever it is worth, in any case, what if we wanted to create a virtual city, with at least a million so-called NPCs, and where each NPC has a random birthday, and a "real" virtual personality determined, of course, by its so-called "natal chart". This, of course, would be quite ambitious, since creating a project on the scale of something like the "Metaverse" or the virtual city in "The Matrix Awakens" is no small feat. Unless that work has already been done for you, let's say - if you are an experienced developer working with an already existing and freely available for experimental use platform like Unreal Engine.
I am nowhere near doing any of that quite yet. Yet I am fairly close, it seems, at times, to being able to do nearly all of that. Project integration across multiple domains is a lot of work and would, in many organizations, have an entire team dedicated to that and only that.
Yet asking a simple question, like "Where is the sun right now?" and give me a lighting model in terms of something at least familiar to most people, like right ascension and declination, or azimuth and elevation, is a very reasonable and therefore seemingly obvious undertaking. Or is it?
First, let's look at some code:
#include "stdafx.h"
#include <ATLComTime.h>
#include <math.h>
#include "../rubidium/defines.h"
#include "../rubidium/drawstuff.h"
#define INCLINATION_OF_EARTH_ORBIT 23.439281
using namespace TENSORS;
class celestial_coordinates
{
public:
MATH_TYPE right_ascension;
MATH_TYPE declination;
};
solar_elements::solar_elements ()
{
COleDateTime _dt = COleDateTime::GetCurrentTime();
m_year = _dt.GetYear ();
m_month = _dt.GetMonth ();
m_day = _dt.GetDay ();
m_hour = _dt.GetHour ();
m_minute = _dt.GetMinute ();
m_second = _dt.GetSecond ();
m_longitude = 119.81;
m_latitude = 39.53;
m_time_zone = -8;
m_daylight_savings = 0;
R = 3958.8*5280.0*FEET_TO_CM*1.0e-5;
m_ROTX = tensor::rotate_x (TO_RADIANS(INCLINATION_OF_EARTH_ORBIT));
}
void solar_elements::debug_test ()
{
ASSERT (julian_day (1,1,2000)==2451545);
ASSERT (julian_day (6,19,1987)==2446966);
ASSERT (julian_day (12,8,2009)==2455174);
int H,M;
for (H=0;H<24;H++)
for (M=0;M<60;M+=10)
{
m_hour = H;
m_minute = M;
compute_local_aspect();
// TRACE ("SOLAR time = %02d:%02d AZIMUTH = %f, EL = %f\n",H,M,m_az,m_el);
}
}
double solar_elements::julian_day (int M, MATH_TYPE D, int Y)
{
int mm = (M-14)/12;
int yy = (Y+4800+mm);
int JDN1 = (1461*yy)/4;
int JDN2 = (367*(M-2-12*mm))/12;
int JDN3 = (3*((yy+100)/100))/4;
MATH_TYPE JDN = JDN1+JDN2-JDN3+D-32075;
return JDN;
}
void solar_elements::compute_local_aspect()
{
MATH_TYPE solar_time, ra_base, ecliptic_aspect;
// estimate ecliptic aspect
m_gmt_seconds = 3600.0*(m_hour-m_daylight_savings-m_time_zone)+60.0*m_minute+m_second;
solar_time = m_gmt_seconds/...
Read more »
glgorman













It is an actual project. I just haven't decided yet what sort of actual hardware it will run on, and what "else" it will do, besides calculate the position of the sun in the sky, based on the given longitude and latitude, once every second - which is all that is required for the One Hertz contest, i.e., do "something", once a second.
Maybe I will also generate a new "horoscope" once a second, if you ask it nicely. But then, what if I needed to have an actual "teapot" with voice recognition, instead of a "virtual teapot" graphic, where the lighting model is being generated based on real astronomical calculations? A good use case for a Raspberry Pi?
Maybe. Not sure how far I will go with that, but if I do anything in that direction, the LLM will need to be trained on lots of text, so even if this seems like it is going nowhere, maybe that is the whole point. Hopefully, it will make more sense if you look at some of the other "pointless" projects in the One Hertz challenge.