- 论坛徽章:
- 0
|
今天,我把我写的一个推算四柱,俗称八字的一个小工具开源了。写得不好,但对初学者学习C++可能略有帮助。
其实谈不上推算了,只是简单根据给出的阳历年月日时算出四柱而已,本打算加入更多功能,无奈发现
该程序有一个重大bug,就是精度欠佳,在临近交节时间,总是相差一个甲子序次,本人又无力解决之,故
开源出来,希望对此有研究者能继续完善,谢谢。
其推算算法比较简单,我略为说一下:
我们知道年、月、日、时都是一个甲子(60)不断循回往复,如果知道某一时间点的四柱,以此作参照基准点,就能根据时间跨距推算你想查询日期的四柱了。
这里面关键点是区分年,月,日,时变更的分界点,这四者不大相同。
年和月的分界点有一定的共同性,都是根据节令来分界的,比如年是以立春点为分界的,12个节气点相应就是12个月份的分界点。你可以把一年的时长
365.242199174天等同一个360度的圆,每30度就是一个月的分界点了。如果不能理解,诸位可以查阅一下关于黄道,节气方面的知识。
日的分界并不是我们平常所说的24点也就是零点为界,因为古人把一天划为十二个时辰,每个时辰管两个小时,所以子时是以23点开始,止于1点。这样下来
时辰的分界点就是每天当中的奇数时间点,比如,1点,3点,5点...等。
我是以2000年立春(2000-02-04 20:40:24)作为基准点的,这个时间要非常准确,否则就会影响最后结果的精度。
本程序在ubuntu12.04下能正确编译(make即可),windows下没有测试,算法在calendar.cpp文件中。
地址:github.com/lotuslwt/wnl
欢迎各位大牛,小牛不吝赐教。谢谢!
|
|