DestinyNet 命理網



✨AI算命大師



議題選項
議題評分
#16871 - 2001-05-03 12:42:34 想自己寫占星軟體
Little Boy 離線
亢龍有悔
註冊: 1999-12-21
文章數: 903
來自: 臺灣
各位先進大家好:
小弟最近對西洋占星術很有興趣,而小弟自己也會寫點小程式,所以小弟想
寫個符合自己習慣的占星軟體,但是小弟遇到一個問題,就是小弟不知道那
裡可以取得任何時間的行星位置,不知各位先進是否有這種資料可以提供給
小弟;市面上雖有天文星歷但是若要全部Key in 到電腦中,還真的得耗費一
點(很大一點!!)時間,望各位先進能不吝指教!!謝謝!

↑回到頂端↑
廣告
#16872 - 2001-05-04 04:38:09 Re: 想自己寫占星軟體
何鼓 離線

一元復始
註冊: 2001-03-21
文章數: 1273
來自: 洛杉磯
推薦一本英文書
Manual of computer programming for astrologer
by
Michael Erlewine
American Federation of Astrologers(AFA網佔有售)
裡面有BASIC code

另外 http://www.astrolog.org
可下載astrolog source code (C 語言)


_________________________
http://www.hegu-astrology.com
請下載新版2013免費占星術軟體
↑回到頂端↑
#16873 - 2001-05-05 06:59:55 Re: 想自己寫占星軟體
Little Boy 離線
亢龍有悔
註冊: 1999-12-21
文章數: 903
來自: 臺灣
您好:
謝謝您提供的資料;不知您那兒是否有Basic Code因為小弟是學Basic,對C實在不懂
,或者您是否知道有其它地方有可提供下載星曆表(除站上的PDF Files外),這樣小弟
或許可以將之匯成資料庫,麻煩您了謝謝!!

↑回到頂端↑
#16874 - 2001-05-05 17:37:35 Re: 想自己寫占星軟體
何鼓 離線

一元復始
註冊: 2001-03-21
文章數: 1273
來自: 洛杉磯
BASIC code 在這裡
您若改成 Visual Basic 後可要免費提供給網友ㄡ

10 For I = 1 To 23: Print: Next I: ' clear screen
20 Print " ==========================================================================="
30 Print
40 Print " ASTROL7, The Public Domain Astrology Program"
50 Print
60 Print " Now includes aspects -"
70 Print " Natal aspects, transiting aspects and chart synastry for relationships."
80 Print
90 Print " Created by John A. Halloran, 10/16/85"
100 Print " Top-down structure by David C. Oshel, 12/27/85"
110 Print " Revision 7 by John A. Halloran, 01/12/86"
120 Print
130 Print " (C) Copyright 1986 John A. Halloran"
140 Print " May not be used for commercial purposes without written permission"
150 Print " from the author."
160 Print
170 Rem CP/M Version for Microsoft BASIC-80 ver. 5.21 (MBASIC)
180 Rem PC Version for IBM BASIC
190 Rem
200 Print " =========================================================================="
210 Print: Print: Print
220 Rem
230 '-------------------------------------
240 ' Static block (DIM, DEF, etc.)
250 '-------------------------------------
260 DefInt I
270 Dim H(12), H$(12), C$(12), F$(10), T(3), CH(12), CL(12), C(12), M(12), K(10), U(12), A$(9), ASPECT$(85), ASPDEG(85), ASPMIN(85), DDEG(85), DMIN(85), CHART1(12), XK(12), Dir$(85)
280 DEF FNR(X!) = PI# / 180 * X!: ' CONVERTS DEGREES TO RADIANS
290 DEF FND(X!) = 180 / PI# * X!: ' CONVERTS RADIANS TO DEGREES
300 DEF FNQ(X!) = Sgn(X!) * (Int(Abs(X!)) (Abs(X!) - Int(Abs(X!))) * 100 / 60): ' CONVERTS DEGREES/MINUTES TO DEGREES DECIMAL
310 DEF FNU(X!) = X! - (Int(X! / MO) * MO): MO = 360: ' MODULUS FUNCTION, RETURNS RESULT WITHIN CIRCLE
320 DEF FNW(X!) = (CInt(X! * 100)) / 100: ' ROUNDS OFF TO TWO DECIMAL PLACES
330 DEF FNX(X!) = Atn(X! / Sqr(1 - X! * X!)): ' ARCSINE FUNCTION
340 DEF FNY(X!) = Atn(Sqr(1 - X! * X!) / X!): ' ARCCOSINE FUNCTION
350 DEF FNS(X!) = Sin(PI# / 180 * X!): ' SINE FUNCTION WHEN WORKING WITH DEGREES
360 DEF FNC(X!) = Cos(PI# / 180 * X!): ' COSINE FUNCTION WHEN WORKING WITH DEGREES
370 DEF FNT(X!) = Tan(PI# / 180 * X!): ' TANGENT FUNCTION WHEN WORKING WITH DEGREES
380 DEF FNP(X!) = Sgn(X!) * ((Abs(X!) / M!) / 360 - Int((Abs(X!) / M!) / 360)) * 360
390 PI# = 3.14159265: ' DEFINE "PI"
400 ZA$ = "AriTauGemCanLeoVirLibScoSagCapAquPis": ' Aries, Taurus, Gemini, etc.
410 '-------------------------------------
420 ' Main Program Control Loop
430 '-------------------------------------
440 'FOR I=1 TO 23:PRINT:NEXT I 'clear screen
450 LOOPCOUNT% = 0: LOOPING% = 1
460 While LOOPING% = 1
470 RESTORE 'rewind data statement pointer
480 GoSub 610 'print title
490 GoSub 670 'assistance?
500 GoSub 920 'get inputs
510 GoSub 1200 'crunch numbers
520 GoSub 4600 'display results
530 GoSub 3180 'aspects
540 GoSub 3530 'transits/synastry
550 GoSub 740: LOOPING% = YES% 'shall we continue?
560 Wend
570 End ' the only program exit
580 '-------------------------------------
590 ' Title
600 '-------------------------------------
610 If LOOPCOUNT% = 0 Then GoTo 630 Else GoTo 620
620 Print: Print: Print: Print "ASTROL7, The Public Domain Astrology Program"
630 Return
640 '--------------------------------
650 ' Assistance?
660 '--------------------------------
670 Print: Print "Do you want assistance? Y/N ";: GoSub 860
680 If YES% = 1 Then Print: GoSub 4960
690 Print: Print
700 Return
710 '--------------------------------
720 ' Do another?
730 '--------------------------------
740 Print: Print "Calculate another birthdate? Y/N ";
750 GoSub 860
760 Return
770 '------------------------------
780 ' Get a key (uppercase)
790 '------------------------------
800 A$ = INKEY$: If Len(A$) = 0 Then GoTo 800
810 If A$ >= "a" And A$ <= "z" Then A$ = Chr$(Asc(A$) - 32): ' Uppercase
820 Return
830 '------------------------------
840 ' Get YES/NO answer
850 '------------------------------
860 GoSub 800: Print A$
870 If A$ = "Y" Then YES% = 1 Else YES% = 0
880 Return
890 '------------------------------
900 ' Get inputs
910 '------------------------------
920 OK% = 0
930 While OK% = 0
940 INPUT"DATE: MM.DDYYYY ";DA$
950 A$ = DA$
960 M = Val(Mid$(A$, 1, 2))
970 D = Val(Mid$(A$, 4, 2))
980 Y = Val(Mid$(A$, 6, 5))
990 INPUT"AM*PM ";TI$
1000 For I = 1 To Len(TI$) 'ensure AM/PM string is uppercase
1010 F$ = Mid$(TI$, I, 1): If F$ >= "a" And F$ <= "z" Then F$ = Chr$(Asc(F$) - 32)
1020 Mid$(TI$, I, 1) = F$
1030 Next I
1040 F$ = TI$
1050 INPUT"TIME: HH.MM ";TI
1060 F! = TI
1070 INPUT"TIME ZONE IN HOURS: HH.MM "; X!
1080 INPUT"LONGITUDE: DDD.MM ";LN!
1090 L5! = LN!: L5! = FNQ(L5!)
1100 F! = FNQ(F!) FNQ(X!)
1110 INPUT"LATITUDE: DD.MM ";LT#
1120 LA! = LT#: LA! = FNR(FNQ(LA!))
1130 Print: Print "All OK? Y/N ";: GoSub 860: OK% = YES%
1140 If YES% = 0 Then Print
1150 Wend
1160 Return
1170 '--------------------------------
1180 ' Crunch numbers
1190 '--------------------------------
1200 Print: Print "Calculating..."
1210 For I = 1 To 12: READ C$(I): Next I: '<--- FILL PLANET NAME ARRAY
1220 For I = 1 To 9: READ A$(I): Next I: '<--- FILL ASPECT NAME ARRAY
1230 If F$ = "PM" Then F! = F! 12
1240 '-------------------------------------------------------------
1250 ' Julian Day Number; Y,M,D in/out, JD# out
1260 '-------------------------------------------------------------
1270 Y1# = Y: M1# = M: D1# = D: If M1# = 1 Or M1# = 2 Then Y1# = Y1# - 1: M1# = M1# 12
1280 If Y1# < 1582 Then B1# = 0 Else If Y1# = 1582 And M1# < 10 Then B1# = 0 Else If Y1# = 1582 And M1# = 10 And D1# < 15 Then B1# = 0 Else A1# = Int(Y1# / 100): B1# = 2 - A1# Int(A1# / 4)
1290 C1# = Int(365.25 * Y1#): D2# = Int(30.6001 * (M1# 1)): JD# = B1# C1# D2# D1# 1720994.5
1300 T# = ((JD# - 2415020!) F! / 24) / 36525!
1310 OB! = FNR(23.4523 - 0.0130125 * T#): GoTo 1330
1330 RA! = FNR(FNU((6.64607 2400.05 * T# 0.0000258 * T# * T# F!) * 15 - L5!)): '<--- RAMC IN RADIANS
1340 '<------------------
1350 For I = 1 To 10: '<--- LOOP FOR PLANETS
1360 If I = 2 Then GoTo 1370 Else GoTo 1390
1370 GoSub 2440: '<--- calculate moon
1380 GoTo 1750
1390 MO = 2 * PI#: '<--- MOD FUNCTION IN RADIANS
1400 GoSub 1900: M! = FNU(S!): '<--- CALCULATE MEAN ANOMALY
1410 GoSub 1900: E! = FND(S!): '<--- CALCULATE ECCENTRICITY
1420 EA! = M!: For A = 1 To 5: EA! = M! E! * Sin(EA!): Next A: '<--- SOLVE KEPLER'S EQUATION
1430 READ AU!: '<--- SEMI-MAJOR AXIS
1440 E1! = 0.0172021 / (AU! ^ 1.5 * (1 - E! * Cos(EA!))): '<--- BEGIN VELOCITY COORDINATES
1450 XW! = -(AU! * E1!) * Sin(EA!): YW! = (AU! * E1!) * (1 - E! * E!) ^ 0.5 * Cos(EA!): '<--- PERIFOCAL COORD'S
1460 '<---- CALCULATE ARGUMENT OF PERIHELION AND ASCENDING NODE
1470 GoSub 1900: AP! = S!: GoSub 1900: AN! = S!
1480 GOSUB 1900:IN!=S!:'<--- CALCULATE INCLINATION
1490 X! = XW!: Y! = YW!: GoSub 2220: '<--- ROTATE VELOCITY COORDINATES
1500 XH! = X!: YH! = Y!: ZH! = G!: '<--- HELIO ECLIPTIC RECTANGULAR VELOCITY COORDINATES
1510 '<---- STORE SUN VELOCITY COORDINATES
1520 MO = 360: If I = 1 Then XA! = -XH!: YA! = -YH!: ZA! = -ZH!: AB = 0: GoTo 1560
1530 '<---- GEO COMPONENTS OF SOLAR VELOCITY
1540 XW! = XH! XA!: YW! = YH! YA!: ZW! = ZH! ZA!
1550 '<---- PERIFOCAL COORDINATES FOR RECTANGULAR POSITION COORDINATES
1560 X! = AU! * (Cos(EA!) - E!): Y! = AU! * Sin(EA!) * (1 - E! * E!) ^ 0.5
1570 GoSub 2220: XX! = X!: YY! = Y!: ZZ! = G!: '<--- ROTATE FOR RECTANGULAR POSITION COORD'S
1580 '<---- HARMONIC TERMS FOR OUTER PLANETS
1590 '<---- CORRECT RECTANGULAR COORDINATES
1600 If I > 5 Then GoSub 2060: XX! = XX! T(2): YY! = YY! T(1): ZZ! = ZZ! T(3)
1610 XK! = (XX! * YH! - YY! * XH!) / (XX! * XX! YY! * YY!): XK(I) = XK!: '<--- COMPUTE HELIO DAILY MOTION
1620 HDM! = FND(XK!): '<--- HELIO DAILY MOTION
1630 R$ = " ": '<--- SET RETROGRADE STRING TO BLANK
1640 '<---- CONVERT HELIO RECTANGULAR TO SPHERICAL COORDINATES
1650 AB = 0: BR! = 0: GoSub 1820: AB = 1
1660 CH(I) = SS!: CL(I) = C!: '<--- STORE HELIO LONGITUDE & LATITUDE
1670 '<---- STORE EARTH/SUN COORDINATES
1680 If I = 1 Then C$(1) = "SUN": X1! = XX!: Y1! = YY!: Z1! = ZZ!: GoTo 1710
1690 XX! = XX! - X1!: YY! = YY! - Y1!: ZZ! = ZZ! - Z1!: '<--- HELIO TO GEO RECTANGULAR
1700 XK! = (XX! * YW! - YY! * XW!) / (XX! * XX! YY! * YY!): XK(I) = XK!: '<--- GEO DAILY MOTION
1710 BR! = 0.0057683 * Sqr(XX! * XX! YY! * YY! ZZ! * ZZ!) * FND(XK!): '<--- ABERRATION
1720 If XK! < 0 Then R$ = " R": '<--- RETROGRADE CHECK
1730 '<---- CONVERT RECTANGULAR TO SPHERICAL
1740 GoSub 1820: C(I) = SS!: M(I) = P!: If XK! < 0 Then C(I) = -SS!
1750 Next I
1760 GoSub 2860 ' calculate cusps
1770 Return
1780 '--------------------------------------
1790 ' Various important subroutines
1800 '--------------------------------------
1810 '<--- RECTANGULAR TO SPHERICAL COORDINATES
1820 X! = XX!: Y! = YY!: GoSub 1990: K! = A!: C! = FND(A!) NU! BR!: If I = 1 And AB = 1 Then C! = FNU(C! 180)
1830 C! = FNU(C! SD!): SS! = C!: Y! = ZZ!: X! = R!: GoSub 1990: If A! > 0.35 Then A! = A! - 2 * PI#
1840 P! = FND(A!)
1850 ELC% = 0: '<--- COUNTER TO RESTRICT U(1-10) TO PLANETARY LONGITUDE
1860 GoSub 2270: P$ = Z$ R$: C! = P!: GoSub 2270: If AB = 1 Then F$(I) = P$ Else GoTo 1870
1870 Return
1880 '<---------------
1890 '<--- ASSEMBLE ORBITAL ELEMENTS
1900 READ S!, S1#, S2!: S! = S! S1# * T# S2! * T# ^ 2: S! = FNR(S!)
1910 Return
1920 '<------------------------------------------------------
1930 '<--- POLAR TO RECTANGULAR COORDINATES
1940 If A! = 0 Then A! = 0.0000000017
1950 X! = R! * Cos(A!): Y! = R! * Sin(A!)
1960 Return
1970 '<---------------------------------
1980 '<--- RECTANGULAR TO POLAR COORDINATES
1990 If Y! = 0 Then Y! = 0.0000000017
2000 R! = (X! * X! Y! * Y!) ^ 0.5
2010 A! = Atn(Y! / X!): If A! < 0 Then A! = A! PI#
2020 If Y! < 0 Then A! = A! PI#
2030 Return
2040 '<-----------------
2050 '<--- CALCULATE HARMONIC TERMS FOR OUTER PLANETS
2060 K(6) = 11: K(7) = 5: K(8) = 4: K(10) = 4: K(9) = 4: '<--- NUMBER OF HARMONIC TERMS FOR PLANET
2070 For IK = 1 To 3
2080 If I = 6 And IK = 3 Then T(3) = 0: GoTo 2190 'Return
2090 '.............................................
2100 If IK = 3 Then K(I) = K(I) - 1
2110 '<--- ASSEMBLE TERMS
2120 GoSub 1900: A! = 0
2130 For IJ = 1 To K(I)
2140 READ U!, V!, W!
2150 A! = A! FNR(U!) * Cos((V! * T# W!) * PI# / 180)
2160 Next IJ
2170 T(IK) = FND(S! A!)
2180 Next IK
2190 Return
2200 '<----------------------------------------------------------------
2210 '<--- ROTATE ROUTINE USED FOR POSITION AND VELOCITY COORDINATES
2220 GOSUB 1990:A!=A! AP!:GOSUB 1940:D!=X!:X!=Y!:Y!=0:GOSUB 1990:A!=A! IN!:GOSUB 1940:G!=Y!:Y!=X!:X!=D!
2230 GoSub 1990: A! = A! AN!: If A! < O Then A! = A! 2 * PI#
2240 GoSub 1940
2250 Return
2260 '<----------------
2270 U! = Abs(C!): '<--- REMOVE NEGATION IF PRESENT
2280 If ELC% < 1 Then U(I) = U!: '<--- STORE ECLIPTIC LONGITUDE FOR ASPECT CALCULATION
2290 If LOOPCOUNT% < 1 And ELC% < 1 Then CHART1(I) = U!: '<--- STORE LONGITUDE FOR TRANSIT/SYNASTRY CALCULATION
2300 ELC% = ELC% 1
2310 Z3 = Int(U!): Q = Int(Z3 / 30) 1: '<--- 'Q' IS ZODIAC SIGN NUMBER
2320 Z7 = Int(FNW((Z3 / 30 - Int(Z3 / 30)) * 30)): '<--- NUMBER OF DEGREES
2330 X$ = Right$(Str$(Z7), 2): If Z7 < 10 Then X$ = "0" Right$(X$, 1)
2340 ZZ$ = Str$(Int(((U! - Z3) * 60 0.5))): If Val(ZZ$) < 10 Then ZZ$ = "0" Right$(ZZ$, 1): '<--- STRING FOR MINUTES
2350 If Val(ZZ$) = 60 Then ZZ$ = "59"
2360 B$ = Mid$(ZA$, Q * 3 - 2, 3): '<--- SELECTS ZODIAC STRING FROM ZA$
2370 A$ = " ": If C! < 0 Then A$ = "-": '<--- SETS SIGN STRING FOR LATITUDE/DECLINATION
2380 D$ = A$ X$ " " Right$(ZZ$, 2): '<--- LATITUDE/DECLINATION STRING
2390 If EQ = 1 Then B$ = " ": X$ = Right$(" " Str$(Z3), 3): '<--- FLAG FOR 360-DEGREE NOTATION
2400 Z$ = Left$(C$(I), 2) " " X$ B$ Right$(ZZ$, 2): '<--- PLANET AND POSITION STRING
2410 A$ = Right$(Z$, 7): '<--- ZODIAC NOTATION STRING
2420 Return
2430 '<----------------------
2440 '<--- MOON & MOON'S NODE ROUTINE
2450 '<--- COMPUTE MEAN LUNAR LONGITUDE
2460 LL# = 973563! 1732564379# * T# - 4 * T# * T#
2470 '<--- COMPUTE SUN'S MEAN LONGITUDE OF PERIGEE
2480 G# = 1012400! 6189 * T#
2490 '<--- COMPUTE MEAN LUNAR NODE
2500 N# = 933060! - 6962910! * T# 7.5 * T# * T#
2510 MLN# = FNP(N#): '<--- MEAN LUNAR NODE
2520 '<--- COMPUTE MEAN LONGITUDE OF LUNAR PERIGEE
2530 G1# = 1203590! 14648523# * T# - 37 * T# * T#
2540 '<--- COMPUTE MEAN ELONGATION OF MOON FROM SUN
2550 D# = 1262660! 1602961611# * T# - 5 * T# * T#: M# = 3600
2560 '<--- COMPUTE AUXILIARY ANGLES
2570 L# = (LL# - G1#) / M#: L1# = ((LL# - D#) - G#) / M#: F# = (LL# - N#) / M#: D# = D# / M#: Y# = 2 * D#
2580 '<--- COMPUTE MOON'S PERTURBATIONS
2590 ML# = 22639.6 * FNS(L#) - 4586.4 * FNS(L# - Y#)
2600 ML# = ML# 2369.9 * FNS(Y#) 769 * FNS(2 * L#) - 669 * FNS(L1#)
2610 ML# = ML# - 411.6 * FNS(2 * F#) - 212 * FNS(2 * L# - Y#)
2620 ML# = ML# - 206 * FNS(L# L1# - Y#) 192 * FNS(L# Y#)
2630 ML# = ML# - 165 * FNS(L1# - Y#) 148 * FNS(L# - L1#) - 125 * FNS(D#)
2640 ML# = ML# - 110 * FNS(L# L1#) - 55 * FNS(2 * F# - Y#)
2650 ML# = ML# - 45 * FNS(L# 2 * F#) 40 * FNS(L# - 2 * F#)
2660 G# = FNU((LL# ML#) / M#): XK(I) = 13 * XK!: '<--- LUNAR LONGITUDE
2670 ELC% = 0: '<--- COUNTER TO CAUSE U(2) TO BE STORED
2680 C! = G#: GoSub 2270
2690 F$(I) = Z$
2700 '<--- COMPUTE LUNAR LATITUDE
2710 MB! = 18461.5 * FNS(F!) 1010 * FNS(L! F!) - 999 * FNS(F! - L!)
2720 MB! = MB! - 624 * FNS(F! - Y!) 199 * FNS(F! Y! - L!)
2730 MB! = MB! - 167 * FNS(L! F! - Y!) 117 * FNS(F! Y!)
2740 MB! = MB! 62 * FNS(2 * L! F!) - 33 * FNS(F! - Y! - L!)
2750 MB! = MB! - 32 * FNS(F! - 2 * L!) - 30 * FNS(L1! F! - Y!)
2760 MB! = FNP(MB!): '<--- LUNAR LATITUDE
2770 '<--- COMPUTE TRUE LUNAR NODE
2780 TN! = N! 5392 * FNS(2 * F! - Y!) - 541 * FNS(L1!) - 442 * FNS(Y!)
2790 TN! = TN! 423 * FNS(2 * F!) - 291 * FNS(2 * L! - 2 * F!)
2800 TN! = FNU(TN! / M!): '<--- TRUE LUNAR NODE
2810 Return
2820 '---------------------------------
2830 ' Compute Placidus Cusps
2840 '---------------------------------
2850 '<--- MIDHEAVEN
2860 X! = Atn(Tan(RA!) / Cos(OB!)): If X! < 0 Then X! = X! PI#
2870 If RA! > PI# Then X! = X! PI#
2880 MC! = FNU(FND(X!) SD!)
2890 U(12) = MC!: XK(12) = 360 * XK(1)
2900 If LOOPCOUNT% = 0 Then CHART1(12) = MC!
2910 '<--- ASCENDANT
2920 A1! = Atn(Cos(RA!) / (-Sin(RA!) * Cos(OB!) - Tan(LA!) * Sin(OB!))): If A1! < 0 Then A1! = A1! PI#
2930 If Cos(RA!) < 0 Then A1! = A1! PI#
2940 A1! = FNU(FND(A1!) SD!)
2950 U(11) = A1!: XK(11) = 360 * XK(1)
2960 If LOOPCOUNT% = 0 Then CHART1(11) = A1!
2970 '<--- PLACIDUS HOUSES
2980 Y! = 0: MO = 360: H(4) = FNU(MC! 180 - SD!): H(1) = FNU(A1! - SD!)
2990 R1! = RA! FNR(30): FF! = 3: GoSub 3090: H(5) = FNU(LO! 180)
3000 R1! = RA! FNR(60): FF! = 1.5: GoSub 3090: H(6) = FNU(LO! 180): R1! = RA! FNR(120): Y! = 1
3010 GoSub 3090: H(2) = LO!: R1! = RA! FNR(150): FF! = 3: GoSub 3090: H(3) = LO!
3020 ELC% = ELC% 1: '<--- COUNTER TO RESTRICT U(1-10) TO PLANETARY LONGITUDES
3030 For I = 1 To 12: H(I) = FNU(H(I) SD!): If I > 6 Then H(I) = FNU(H(I - 6) 180)
3040 C! = H(I): GoSub 2270: H$(I) = A$: Next I
3050 Return
3060 '----------------------------------
3070 ' A Placidus subroutine
3080 '----------------------------------
3090 X! = -1: If Y! = 1 Then X! = 1
3100 For I = 1 To 10: XX! = FNY(X! * Sin(R1!) * Tan(OB!) * Tan(LA!)): If XX! < 0 Then XX! = XX! PI#
3110 R2! = RA! (XX! / FF!): If Y! = 1 Then R2! = RA! PI# - (XX! / FF!)
3120 R1! = R2!: Next I: LO! = Atn(Tan(R1!) / Cos(OB!)): If LO! < 0 Then LO! = LO! PI#
3130 If Sin(R1!) < 0 Then LO! = LO! PI#
3140 LO! = FND(LO!)
3150 Return
3160 '----------------------------------
3170 ' Compute aspects
3180 '----------------------------------
3190 Print: Print "Display aspects? Y/N ";: GoSub 860: Print
3200 If YES% = 0 Then GoTo 3490
3210 CLS: LNE = 0: BRK = 18
3220 Print: Print " ASPECTS ANGLES ORBS"
3230 Print "------------- -------- ------"
3235 COMM2 = 0
3240 For I = 1 To 12: '<--- ASPECT LOOP
3250 For J = 1 To 12: '<--- PLANET LOOP #2
3260 If J <= I Then GoTo 3360
3270 ASP = Abs(U(I) - U(J)): If ASP > 180 Then ASP = 360 - ASP
3280 ASP$ = Str$(CInt(ASP * 100)): ASPDEG$ = Left$(ASP$, Len(ASP$) - 2): ASPDEG = Val(ASPDEG$): ASPMIN = CInt(60 * (ASP - ASPDEG)): If ASPMIN = 60 Then GoTo 3290 Else GoTo 3300
3290 ASPDEG = ASPDEG 1: ASPMIN = 0
3300 For K = 1 To 9: D = Abs(ASP - Val(Right$(A$(K), 3))): '<--- CHECK ANGLE AGAINST ASPECTS
3310 D$ = Str$(CInt(D * 100)): DDEG$ = Left$(D$, Len(D$) - 2): DDEG = Val(DDEG$): DMIN = CInt(60 * (D - DDEG)): If DMIN = 60 Then GoTo 3320 Else GoTo 3330
3320 DDEG = DDEG 1: DMIN = 0
3330 '<--- IF WITHIN ORB, PRINT ASPECT
3340 If D < Val(Mid$(A$(K), 4, 1)) Then Print C$(I); " "; Left$(A$(K), 3); " "; C$(J); " ";: Print USING; "###"; ASPDEG;: Print "d ";: Print USING; "##"; ASPMIN;: Print "m ";: Print USING; "#"; DDEG;: Print "d ";: Print USING; "##"; DMIN;: Print "m": LNE = LNE 1: GoSub 3380
3350 Next K
3360 Next J: Next I
3365 JCI$ = "Internal Communication Index: ": Print: Print JCI$; CInt(COMM2)
3370 GoTo 3430
3380 ASPECT$(LNE) = C$(I) " " Left$(A$(K), 3) " " C$(J) " ": '<--- STORE ASPECT FOR LINE PRINTER
3390 ASPDEG(LNE) = ASPDEG: ASPMIN(LNE) = ASPMIN: DDEG(LNE) = DDEG: DMIN(LNE) = DMIN
3395 STEP2 = (Val(Mid$(A$(K), 4, 1)) - D): COMM2 = COMM2 STEP2: K = 9
3400 If Int(LNE / BRK) = 1 Then GoTo 3410 Else GoTo 3420
3410 BRK = BRK 18: Print Tab(43); "For more, press Return...": GoSub 800
3420 Return
3430 Print: Print "Print hardcopy? Y/N ";: GoSub 860: Print
3440 If YES% = 0 Then GoTo 3490: ' No print request, so exit from subroutine
3450 GoSub 4880
3460 LPRINT " ASPECTS ANGLES ORBS"
3470 LPRINT "------------- -------- ------"
3480 FOR I=1 TO LNE:LPRINT ASPECT$(I);:LPRINT USING "###";ASPDEG(I);:LPRINT "d ";:LPRINT USING "##";ASPMIN(I);:LPRINT "m ";:LPRINT USING "#";DDEG(I);:LPRINT "d ";:LPRINT USING "##";DMIN(I);:LPRINT "m":NEXT I
3485 LPRINT:LPRINT JCI$;CINT(COMM2)
3490 Return
3500 '------------------------------
3510 ' Compute transits/synastry
3520 '------------------------------
3530 If LOOPCOUNT% = 0 Then GoTo 4560
3540 Print: Print "Display aspects between the first chart and this chart? Y/N ";: GoSub 860: Print
3550 If YES% = 0 Then GoTo 4560
3560 DIREC$ = "": DIRECT$ = "": Dir$ = ""
3570 TCS$="":TCS=0:INPUT "For which: Transits (T) or Chart Synastry (C) ";TCS$
3580 If TCS$ = "C" Or TCS$ = "c" Then TCS = 2: GoTo 3610
3590 If TCS$ = "T" Or TCS$ = "t" Then TCS = 1
3600 DIREC$ = " DIRECTION": DIRECT$ = " ---------"
3610 CLS: LNE = 0: BRK = 18: CI = 0: NCI = 0
3620 Print: Print USING; "_##_ "; LOOPCOUNT% 1;: Print "ASPECTS #1 ANGLES ORBS"; DIREC$
3630 Print "------------- -------- ------"; DIRECT$
3640 For I = 1 To 12: '<--- ASPECT LOOP
3650 For J = 1 To 12: '<--- PLANET LOOP #2
3652 If TI$ = "PM" And TI = 0 And I > 10 Then GoTo 3970
3660 ASP = Abs(U(I) - CHART1(J)): If ASP > 180 Then ASP = 360 - ASP: '<--- CHECK NEW PLANETARY LONGITUDES AGAINST VALUES STORED FOR 1ST CHART
3670 ASP$ = Str$(CInt(ASP * 100)): ASPDEG$ = Left$(ASP$, Len(ASP$) - 2): ASPDEG = Val(ASPDEG$): ASPMIN = CInt(60 * (ASP - ASPDEG)): If ASPMIN = 60 Then GoTo 3680 Else GoTo 3690
3680 ASPDEG = ASPDEG 1: ASPMIN = 0
3690 For K = 1 To 9: ANG = Val(Right$(A$(K), 3)): D = Abs(ASP - ANG): '<--- CHECK ANGLE AGAINST ASPECTS
3700 '<--- IF WITHIN ORB, PRINT ASPECT
3710 ORB = Val(Mid$(A$(K), 4, 1)): If D > ORB Then GoTo 3960
3720 D$ = Str$(CInt(D * 100)): DDEG$ = Left$(D$, Len(D$) - 2): DDEG = Val(DDEG$): DMIN = CInt(60 * (D - DDEG)): If DMIN = 60 Then GoTo 3730 Else GoTo 3740
3730 DDEG = DDEG 1: DMIN = 0
3740 If TCS = 1 Then GoTo 3750 Else GoTo 3950
3750 U = U(I): CH = CHART1(J): '<--- ROUTINE TO TEST WHETHER TRANSIT IS APPLYING OR SEPARATING
3760 If ANG <= 90 Then GoTo 3770 Else GoTo 3800
3770 If U < 90 And CH > 270 Then U = U 360: GoTo 3860
3780 If CH < 90 And U > 270 Then CH = CH 360: GoTo 3860
3790 GoTo 3860
3800 If ANG > 90 And ANG < 180 Then GoTo 3810 Else GoTo 3840
3810 If U > 180 And U - CH > 180 Then CH = CH 360: GoTo 3860
3820 If CH > 180 And CH - U > 180 Then U = U 360: GoTo 3860
3830 GoTo 3860
3840 If ANG = 180 And CH - U > 180 Then U = U 360: GoTo 3860
3850 If ANG = 180 And U - CH > 180 Then CH = CH 360
3860 If U < CH And ASP > ANG And XK(I) > 0 Then Dir$ = " Applying": GoTo 3940
3870 If U < CH And ASP < ANG And XK(I) > 0 Then Dir$ = " Separating": GoTo 3940
3880 If U < CH And ASP > ANG And XK(I) < 0 Then Dir$ = " Separating": GoTo 3940
3890 If U < CH And ASP < ANG And XK(I) < 0 Then Dir$ = " Applying": GoTo 3940
3900 If U > CH And ASP > ANG And XK(I) > 0 Then Dir$ = " Separating": GoTo 3940
3910 If U > CH And ASP < ANG And XK(I) > 0 Then Dir$ = " Applying": GoTo 3940
3920 If U > CH And ASP > ANG And XK(I) < 0 Then Dir$ = " Applying": GoTo 3940
3930 If U > CH And ASP < ANG And XK(I) < 0 Then Dir$ = " Separating"
3940 If DDEG = 0 And DMIN = 0 Then Dir$ = " Partile"
3950 Print C$(I); " "; Left$(A$(K), 3); " "; C$(J); " ";: Print USING; "###"; ASPDEG;: Print "d ";: Print USING; "##"; ASPMIN;: Print "m ";: Print USING; "#"; DDEG;: Print "d ";: Print USING; "##"; DMIN;: Print "m"; Dir$: LNE = LNE 1: GoSub 4010
3960 Next K
3970 Next J: Next I
3980 If TCS = 1 Then GoTo 4000
3990 Print: Print "Communication Index (Harmonious): ", CInt(CI): Print "Communication Index (Inharmonious): ", CInt(Abs(NCI)): Print "Total Communication Index: ", CInt(CI Abs(NCI)): Print
4000 GoTo 4450
4010 If TCS = 1 Then GoTo 4400
4020 CN = 1: OP = 1: If I = J Then OP = -1: '<--- ASSIGN COMMUNICATION INDEX FACTORS FOR ASPECTS AND PLANETS
4030 If I = J Then CN = 0.3
4040 If I = 3 Or I = 7 Or I = 8 Or J = 3 Or J = 7 Or J = 8 Then OP = -1: '<--- THE PLANETS AND ASPECTS REFERRED TO HERE CAN BE DETERMINED BY LOOKING AT THE FIRST TWO LINES OF THE DATA BLOCK
4050 If K = 1 Then FA1 = ((CN) * 7): GoTo 4130
4060 If K = 2 Then FA1 = ((OP) * 6): GoTo 4130
4070 If K = 3 Then FA1 = 3: GoTo 4130
4080 If K = 4 Then FA1 = -4: GoTo 4130
4090 If K = 5 Then FA1 = 2: GoTo 4130
4100 If K = 6 Or K = 7 Then FA1 = -1: GoTo 4130
4110 If K = 8 Then FA1 = -0.8: GoTo 4130
4120 If K = 9 Then FA1 = 1
4130 If I = 1 Then FA2 = 5: GoTo 4250
4140 If I = 2 Then FA2 = 5: GoTo 4250
4150 If I = 3 Then FA2 = 1: GoTo 4250
4160 If I = 4 Then FA2 = 4: GoTo 4250
4170 If I = 5 Then FA2 = 3: GoTo 4250
4180 If I = 6 Then FA2 = 2: GoTo 4250
4190 If I = 7 Then FA2 = 1.5: GoTo 4250
4200 If I = 8 Then FA2 = 1: GoTo 4250
4210 If I = 9 Then FA2 = 1.5: GoTo 4250
4220 If I = 10 Then FA2 = 1: GoTo 4250
4230 If I = 11 Then FA2 = 3: GoTo 4250
4240 If I = 12 Then FA2 = 1
4250 If J = 1 Then FA3 = 5: GoTo 4370
4260 If J = 2 Then FA3 = 5: GoTo 4370
4270 If J = 3 Then FA3 = 1: GoTo 4370
4280 If J = 4 Then FA3 = 4: GoTo 4370
4290 If J = 5 Then FA3 = 3: GoTo 4370
4300 If J = 6 Then FA3 = 2: GoTo 4370
4310 If J = 7 Then FA3 = 1.5: GoTo 4370
4320 If J = 8 Then FA3 = 1: GoTo 4370
4330 If J = 9 Then FA3 = 1.5: GoTo 4370
4340 If J = 10 Then FA3 = 1: GoTo 4370
4350 If J = 11 Then FA3 = 3: GoTo 4370
4360 If J = 12 Then FA3 = 1
4370 STEP1 = ((((ORB - D) * FA1) * FA2) * FA3): If STEP1 >= 0 Then GoTo 4380 Else GoTo 4390: '<--- INHARMONIOUS ASPECTS HAVE NEGATIVE VALUES
4380 CI = CI STEP1: GoTo 4400
4390 NCI = NCI STEP1
4400 ASPECT$(LNE) = C$(I) " " Left$(A$(K), 3) " " C$(J) " ": Dir$(LNE) = Dir$
4410 ASPDEG(LNE) = ASPDEG: ASPMIN(LNE) = ASPMIN: DDEG(LNE) = DDEG: DMIN(LNE) = DMIN: K = 9
4420 If Int(LNE / BRK) = 1 Then GoTo 4430 Else GoTo 4440
4430 BRK = BRK 18: Print Tab(43); "For more, press Return...": GoSub 800
4440 Return
4450 Print: Print "Print hardcopy? Y/N ";: GoSub 860: Print
4460 If YES% = 0 Then GoTo 4560: ' no print request, so exit from subroutine
4470 GoSub 4880
4480 LPRINT USING "_##_ ";LOOPCOUNT% 1;:LPRINT "ASPECTS #1 ANGLES ORBS";DIREC$
4490 LPRINT "------------- -------- ------";DIRECT$
4500 FOR I=1 TO LNE:LPRINT ASPECT$(I);:LPRINT USING "###";ASPDEG(I);:LPRINT "d ";:LPRINT USING "##";ASPMIN(I);:LPRINT "m ";:LPRINT USING "#";DDEG(I);:LPRINT "d ";:LPRINT USING "##";DMIN(I);:LPRINT "m";DIR$(I)
4510 If I = 40 Then GoTo 4520 Else GoTo 4530
4520 GoSub 4870
4530 Next I
4540 If TCS = 1 Then GoTo 4560
4550 LPRINT: LPRINT "Communication Index (Harmonious): ", CInt(CI): LPRINT "Communication Index (Inharmonious): ", CInt(Abs(NCI)): LPRINT "Total Communication Index: ", CInt(CI Abs(NCI)): LPRINT
4560 LOOPCOUNT% = LOOPCOUNT% 1: Return
4570 '------------------------------
4580 ' Display results
4590 '------------------------------
4600 GoSub 4760 ' print planets on console
4610 GoSub 4820 ' print houses on console
4620 Print: Print "Print hardcopy? Y/N ";: GoSub 860: Print
4630 If YES% = 0 Then GoTo 4720 'No print request, so exit from subroutine
4640 GoSub 4880
4650 LPRINT "DATE: "DA$;" ";"TIME: "TI;TI$;" ";"LONGITUDE: "LN!;" ";"LATITUDE: "LT#
4660 LPRINT
4670 LPRINT "POSITIONS OF SUN, MOON, AND PLANETS"
4680 LPRINT F$(1),F$(5),F$(8),CHR$(13);CHR$(10);F$(2),F$(6),F$(9),CHR$(13);CHR$(10);F$(3),F$(7),F$(10),CHR$(13);CHR$(10);F$(4)
4690 LPRINT: LPRINT "PLACIDUS HOUSE CUSPS"
4700 LPRINT "1 " H$(1),"2 " H$(2),"3 " H$(3),CHR$(13);CHR$(10);"4 " H$(4),"5 " H$(5),"6 " H$(6),CHR$(13);CHR$(10);"7 " H$(7),"8 " H$(8),"9 " H$(9),CHR$(13);CHR$(10);"10 " H$(10),"11 " H$(11),"12 " H$(12)
4710 LPRINT: LPRINT
4720 Return
4730 '--------------------------------
4740 ' Print planets subroutine
4750 '--------------------------------
4760 Print: Print "POSITIONS OF SUN, MOON, AND PLANETS"
4770 Print F$(1), F$(5), F$(8), Chr$(13); Chr$(10); F$(2), F$(6), F$(9), Chr$(13); Chr$(10); F$(3), F$(7), F$(10), Chr$(13); Chr$(10); F$(4)
4780 Return
4790 '--------------------------------
4800 ' Print houses subroutine
4810 '--------------------------------
4820 Print
4830 Print "PLACIDUS HOUSE CUSPS"
4840 Print "1 " H$(1), "2 " H$(2), "3 " H$(3), Chr$(13); Chr$(10); "4 " H$(4), "5 " H$(5), "6 " H$(6), Chr$(13); Chr$(10); "7 " H$(7), "8 " H$(8), "9 " H$(9), Chr$(13); Chr$(10); "10 " H$(10), "11 " H$(11), "12 " H$(12)
4850 Return
4860 '--------------------------------
4870 Print: Print "If you wish to change paper, do so when this batch (40 lines) finishes printing.": Print
4880 ' Print results to printer
4890 Print "IF PRINTER IS READY, PRESS THE SPACE BAR..."
4900 GoSub 800: If Asc(A$) <> 32 Then GoTo 4900
4910 WIDTH LPRINT 75
4920 Return
4930 '--------------------------------
4940 ' Explanatory Text
4950 '--------------------------------
4960 Print "This program calculates the zodiac sign positions of the ten"
4970 Print "planets, including the sun and moon, and the twelve house cusps."
4980 Print "These are the essential elements needed to draw up a"
4990 Print "horoscope. I chose the Placidus house system because I am"
5000 Print "familiar with it from Raphael's Table of Houses. With Revision"
5010 Print "7, the program can also calculate and display the aspects between"
5020 Print "the planets. Following this routine is one that enables"
5030 Print "comparison between two charts for analysis of transits or chart"
5040 Print "synastry. The accuracy of the planetary positions is generally"
5050 Print "exact, with deviations being no more than about 5 minutes of arc;"
5060 Print "deviations are likely to be due more to inaccuracy in"
5070 Print "entering the time of birth than to problems with the program."
5080 Print ""
5090 Print "Enter the date of birth as the prompt (MM.DDYYYY) shows, e.g.,"
5100 Print "you would enter October 16, 1985 as 10.161985. Leading zeroes"
5110 Print "are significant: you would enter June 9, 1961 as 06.091961."
5120 Print ""
5130 Print "Respond to the AM*PM birth time prompt by typing in either AM or"
5140 Print "PM."
5150 Print ""
5160 GoSub 800
5170 Print "The TIME prompt asks for the time as recorded on the birth"
5180 Print "certificate, which should be Standard Time. Astrologers who"
5190 Print Chr$(34) "know too much" Chr$(34) " should not enter Mean Local Time as the program"
5200 Print "automatically makes this adjustment. However, if Daylight"
5210 Print "Savings Time was in effect when the time was recorded it is"
5220 Print "important that an hour be subtracted from the birth time before"
5230 Print "entering the time. Also, if the birth occurred between either"
5240 Print "midnight or noon and 1 o'clock, do NOT enter the time as 12.xx,"
5250 Print "but as 00.xx, e.g., 12:42 at night would be AM and 00.42."
5260 Print ""
5270 Print "TIME ZONE IN HOURS refers to the distance in hours between"
5280 Print "Greenwich Time and the time zone in which the birth time was"
5290 Print "recorded. Hours for the U.S. Standard Time zones are as follows:"
5300 Print ""
5310 Print "Atlantic 4"
5320 Print "Eastern 5"
5330 Print "Central 6"
5340 Print "Mountain 7"
5350 Print "Pacific 8"
5360 Print "Yukon 9"
5370 Print "Alaska- Hawaii 10"
5380 Print "Bering 11"
5390 GoSub 800
5400 Print ""
5410 Print "Although zones sometimes have irregular boundaries, the general"
5420 Print "rule is that time changes by 1 hour every 15 degrees of"
5430 Print "geographical longitude. Zones east of Greenwich Time are entered"
5440 Print "as negative hours, e.g., the zone in Paris, France is -1."
5450 Print ""
5460 Print "Geographical LONGITUDE can be taken from any atlas. Longitudes"
5470 Print "west of Greenwich are positive. Longitudes east of Greenwich are"
5480 Print "negative. The longitude of Los Angeles, which is 118 degrees 15"
5490 Print "minutes West, is entered as 118.15. The longitude of Paris,"
5500 Print "France is -2.20"
5510 Print ""
5520 Print "Geographical LATITUDE is positive north of the equator, negative"
5530 Print "south of the equator. The latitude of Los Angeles is 34.03. The"
5540 Print "latitude of Rio de Janeiro, Brazil is -23.00."
5550 Print ""
5560 GoSub 800
5570 Print "That's it. Be patient while it says "; Chr$(34); "Calculating..."; Chr$(34); " On a 4"
5580 Print "MHz, 64K RAM machine the CP/M version takes about 1 minute to"
5590 Print "calculate and print both the planetary positions and house cusps"
5600 Print "to the screen. On a 640K RAM XT the compiled IBM compatible"
5610 Print "version takes less than 10 seconds. If you want to save a hard"
5620 Print "copy of your results, the program provides prompts for printing"
5630 Print "to your printer."
5640 Print ""
5650 GoSub 800
5660 Print "With Release 7, the program will calculate and print the aspects"
5670 Print "between the planets. The aspects, angles, and orbs which the"
5680 Print "program uses are as follows:"
5690 Print ""
5700 Print "Aspects Angles Orbs"
5710 Print "------- ------ ----"
5720 Print "CJN Conjunction 0 degrees 7 degrees"
5730 Print "OPP Opposition 180 degrees 7 degrees"
5740 Print "TRI Trine 120 degrees 7 degrees"
5750 Print "SQR Square 90 degrees 7 degrees"
5760 Print "SXT Sextile 60 degrees 5 degrees"
5770 Print "SSQ Semi-square 45 degrees 2 degrees"
5780 Print "SES Sesquiquadrate 135 degrees 2 degrees"
5790 Print "INC Inconjunct 150 degrees 2 degrees"
5800 Print "QTL Quintile 72 degrees 2 degrees"
5810 Print ""
5820 Print "Following the aspect routine, the program then permits an"
5830 Print "unlimited number of additional charts to be calculated, at the"
5840 Print "end of each of which the program will ask you if you want to"
5850 Print "compare that chart's positions to those of the first chart. This"
5860 Print "can be useful for two purposes: planetary transits and synastry."
5870 Print ""
5880 GoSub 800
5890 Print "To determine the transiting aspects influencing an individual on"
5900 Print "a particular date, you would enter the person's birth information"
5910 Print "for the first chart and then enter the transiting time"
5920 Print "information for the second chart."
5930 Print ""
5940 Print "This same routine permits a comparison between the birth charts"
5950 Print "of two people for relationship purposes. This procedure is known"
5960 Print "as synastry when it involves looking at the aspects between two"
5970 Print "persons' respective planets. Any of the major aspects will"
5980 Print "establish communication at a deeper than superficial level, but"
5990 Print "the primary aspects for relationships are the Conjunction and"
6000 Print "Opposition. Generally, one is looking for aspects between"
6010 Print "different planets, not between the same planets, in the two"
6020 Print "charts. For friendship, understanding, and help, the significant"
6030 Print "points are the sun, moon, ascendant, and Jupiter. For close"
6040 Print "friendship or romance, the significant points are Venus and Mars."
6050 Print ""
6060 Print "As a practical application of synastry, should any single women"
6070 Print "out there discover their own charts to be compatible with a chart"
6080 Print "for 01.111954; AM; 07.02; 8; 118; and 34, I would love to receive"
6090 Print "a letter from you."
6100 Print ""
6110 GoSub 800
6120 Print "The majority of this program was assembled and adapted from the"
6130 Print "numerous subprograms contained in the Manual of Computer"
6140 Print "Programming for Astrologers by Michael Erlewine with acknowledge-"
6150 Print "ment to James Neely for the planetary routines. This book was"
6160 Print "published without copyright in 1980 by The American Federation of"
6170 Print "Astrologers, Inc. The routines of this book are in Commodore PET"
6180 Print "and Apple II BASIC."
6190 Print ""
6200 Print "If you have printed out the horoscope positions of yourself or a"
6210 Print "friend and then want to know " Chr$(34) "But what does it mean?" Chr$(34) ", I think"
6220 Print "the best book for interpreting horoscopes and aspects is Heaven"
6230 Print "Knows What by Grant Lewi; its companion volume for transits and"
6240 Print "planetary sign positions is called Astrology for the Millions."
6250 Print ""
6260 Print ""
6270 Print " John Halloran"
6280 Print " P.O. Box 75713"
6290 Print " Los Angeles, CA 90075"
6300 Print ""
6310 Print ""
6320 Return
6330 '------------------------------
6340 ' Data block
6350 '------------------------------
6360 Data SUN, MOO, MER, VEN, MAR, JUP, SAT, URA, NEP, PLU, Asc, Mid
6370 Data CJN7000, OPP7180, TRI7120, SQR7090, SXT5060, SSQ2045, SES2135, INC2150, QTL2072
6380 ' Sun elements
6390 Data 358.4758, 35999#, -0.0002, 0.01675, -0.00004, 0, 1, 101.2208, 1.7192, 0.00045, 0, 0
6400 Data 0, 0, 0, 0
6410 ' Mercury elements
6420 Data 102.2794, 149472.515, 0, 0.205614, 0.00002, 0, 0.3871, 28.7538, 0.3703, 0.0001
6430 Data 47.1459, 1.1852, 0.0002, 7.009, 0.00186, 0
6440 ' Venus elements
6450 Data 212.6032, 58517.8039, 0.0013, 0.00682
6460 Data -0.00005, 0, 0.7233, 54.3842, 0.5082, -0.0014, 75.7796, 0.8999, 0.0004
6470 Data 3.3936, 0.001, 0
6480 ' Mars elements
6490 Data 319.5294, 19139.8585, 0.0002, 0.09331, 0.00009, 0, 1.5237, 285.4318
6500 Data 1.0698, 0.0001, 48.7864, 0.77099, 0, 1.8503, -0.0007, 0
6510 ' Jupiter elements
6520 Data 225.4928, 3033.6879, 0
6530 Data 0.04838, -0.00002, 0, 5.2029, 273.393, 1.3383, 0, 99.4198, 1.0583, 0, 1.3097
6540 Data -0.0052, 0
6550 ' Jupiter harmonic terms
6560 Data -0.001, -0.0005, 0.0045, 0.0051, 581.7, -9.7, -0.0005, 2510.7, -12.5
6570 Data -0.0026, 1313.7, -61.4, 0.0013, 2370.79, -24.6, -0.0013, 3599.3, 37.7, -0.001, 2574.7
6580 Data 31.4, -0.00096, 6708.2, -114.5, -0.0006, 5499.4, -74.97, -0.0013, 1419, 54.2, 0.0006
6590 Data 6339.3, -109, 0.0007, 4824.5, -50.9, 0.002, -0.0134, 0.0127, -0.0023, 676.2, 0.9, 0.00045
6600 Data 2361.4, 174.9, 0.0015, 1427.5, -188.8, 0.0006, 2110.1, 153.6, 0.0014, 3606.8, -57.7
6610 Data -0.0017, 2540.2, 121.7, -0.00099, 6704.8, -22.3, -0.0006, 5480.2, 24.5, 0.00096
6620 Data 1651.3, -118.3, 0.0006, 6310.8, -4.8, 0.0007, 4826.6, 36.2
6630 ' Saturn elements
6640 Data 174.2153, 1223.50796
6650 Data 0, 0.05423, -0.0002, 0, 9.5525, 338.9117, -0.3167, 0, 112.8261, 0.8259, 0, 2.4908
6660 Data -0.0047, 0
6670 ' Saturn harmonic terms
6680 Data -0.0009, 0.0037, 0, 0.0134, 1238.9, -16.4, -0.00426, 3040.9, -25.2, 0.0064
6690 Data 1835.3, 36.1, -0.0153, 610.8, -44.2, -0.0015, 2480.5, -69.4, -0.0014, 0.0026, 0, 0.0111
6700 Data 1242.2, 78.3, -0.0045, 3034.96, 62.8, -0.0066, 1829.2, -51.5, -0.0078, 640.6, 24.2
6710 Data -0.0016, 2363.4, -141.4, 0.0006, -0.0002, 0, -0.0005, 1251.1, 43.7, 0.0005, 622.8
6720 Data 13.7, 0.0003, 1824.7, -71.1, 0.0001, 2997.1, 78.2
6730 ' Uranus elements
6740 Data 74.1757, 427.2742, 0, 0.04682
6750 Data 0.00042, 0, 19.2215, 95.6863, 2.0508, 0, 73.5222, 0.5242, 0, 0.7726, 0.0001, 0
6760 ' Uranus harmonic terms
6770 Data -0.0021
6780 Data -0.0159, 0, 0.0299, 422.3, -17.7, -0.0049, 3035.1, -31.3, -0.0038, 945.3, 60.1
6790 Data -0.0023, 1227, -4.99, 0.0134, -0.02186, 0, 0.0317, 404.3, 81.9, -0.00495, 3037.9, 57.3
6800 Data 0.004, 993.5, -54.4, -0.0018, 1249.4, 79.2, -0.0003, 0.0005, 0, 0.0005, 352.5, -54.99
6810 Data 0.0001, 3027.5, 54.2, -0.0001, 1150.3, -88
6820 ' Neptune elements
6830 Data 30.13294, 240.45516, 0, 0.00913, -0.00127
6840 Data 0, 30.11375, 284.1683, -21.6329, 0, 130.68415, 1.1005, 0, 1.7794, -0.0098, 0
6850 ' Neptune harmonic terms
6860 Data 0.1832
6870 Data -0.6718, 0.2726, -0.1923, 175.7, 31.8, 0.0122, 542.1, 189.6, 0.0027, 1219.4, 178.1
6880 Data -0.00496, 3035.6, -31.3, -0.1122, 0.166, -0.0544, -0.00496, 3035.3, 58.7, 0.0961, 177.1
6890 Data -68.8, -0.0073, 630.9, 51, -0.0025, 1236.6, 78, 0.00196, -0.0119, 0.0111, 0.0001
6900 Data 3049.3, 44.2, -0.0002, 893.9, 48.5, 0.00007, 1416.5, -25.2
6910 ' Pluto elements
6920 Data 229.781, 145.1781, 0
6930 Data 0.24797, 0.002898, 0, 39.539, 113.5366, 0.2086, 0, 108.944, 1.3739, 0, 17.1514
6940 Data -0.0161, 0
6950 ' Pluto harmonic terms
6960 Data -0.0426, 0.073, -0.029, 0.0371, 372, -331.3, -0.0049, 3049.6, -39.2, -0.0108
6970 Data 566.2, 318.3, 0.0003, 1746.5, -238.3, -0.0603, 0.5002, -0.6126, 0.049, 273.97, 89.97
6980 Data -0.0049, 3030.6, 61.3, 0.0027, 1075.3, -28.1, -0.0007, 1402.3, 20.3, 0.0145, -0.0928
6990 Data 0.1195, 0.0117, 302.6, -77.3, 0.00198, 528.1, 48.6, -0.0002, 1000.4, -46.1
7000 ' ** EOF **
.1,-.0007,1402.3,20.3,.0145,-.0928
699



Edited by 何鼓 on 05/06/01 01:48 AM (server time).

_________________________
http://www.hegu-astrology.com
請下載新版2013免費占星術軟體
↑回到頂端↑
#16875 - 2001-05-06 05:24:22 Re: 想自己寫占星軟體
Little Boy 離線
亢龍有悔
註冊: 1999-12-21
文章數: 903
來自: 臺灣
您好:
因為您貼Source Code的那一頁,小弟找不到回信的連結,故回在此信後,請見諒!!
很感謝您提供的原始碼,但是小弟發現不知是貼的關係還是如何,很多運算符號都不
見了,如1270行最後的 M1# = M1# 12 其中的M1# 12 中的運算符號不知是那一種
還有很多行皆是如此,不知您是否可以以附檔的方式傳給小弟呢??!小弟先在這裡謝謝
您!!
還有您所說的改成VB後公佈Source Code,這是一定沒有問題的,畢竟小弟這也是免費
取得的啊!!:)


↑回到頂端↑
#16876 - 2001-05-07 04:22:43 Re: 想自己寫占星軟體
何鼓 離線

一元復始
註冊: 2001-03-21
文章數: 1273
來自: 洛杉磯
已經email給您了
祝您成功

http://home.kimo.com.tw/pollux1151
_________________________
http://www.hegu-astrology.com
請下載新版2013免費占星術軟體
↑回到頂端↑
#16877 - 2001-07-20 07:49:36 Re: 想自己寫占星軟體
albo 離線
見龍在田
註冊: 2001-06-02
文章數: 86
BASIC 的程式及執行檔 下載處

http://files.chatnfiles.com/carousel/003A/ASTROLPC.ZIP

↑回到頂端↑
#16878 - 2001-07-28 03:17:41 Re: 想自己寫占星軟體
albo 離線
見龍在田
註冊: 2001-06-02
文章數: 86
有一個網站內有 VB5, VISUAL C, DELPHI 的範例
星座計算方式已經寫成DLL供人呼叫

http://www.astro.com/swisseph/sweph_e.htm


↑回到頂端↑
#16879 - 2006-06-07 01:39:06 Re: 想自己寫占星軟體
Little Boy 離線
亢龍有悔
註冊: 1999-12-21
文章數: 903
來自: 臺灣
何鼓大大您好:

真是好久不見了!!

最近在爬文時,才看到當時自己發起的這個議題一直沒有做後續的回應!!

何鼓大大所提供的basic 程式,小弟後來有改成Quick Basic,是可以跑,但所記算出來的度數與星曆表的度數誤差太大,後來就放棄這個做法了!!

主因是此程式是以星體計算法去計算星體位置,不似Astrolog or Sweph是使用對照法(星曆表)再去計算時間的偏差,所以在精準度上真的差別很大,印像中最多有差到兩度(這是用程式跑一整年的數據來比對)

至於Sweph 小弟後來透過各位大大的幫助,雖然有取得source code ,但他的主要計算函數是以C語言計算再製成dll,而小弟的C語言真的是半桶水,實在是看不太懂他的寫什麼!!:P

希望這個回應對後來有想要自己寫占星軟體的朋友,能有所幫助!!(雖然看不出幫了什麼:P)

PS.行文至此...真的很佩服可以自己寫占星軟體的先進們!!各位的功力真不是蓋的!!
↑回到頂端↑
#16880 - 2006-06-07 02:41:20 Re: 想自己寫占星軟體
天地達 離線
新客戶
註冊: 2004-12-18
文章數: 1095
加油,如此偉大的工程需要賢人的智慧!辛苦了
↑回到頂端↑
#16881 - 2006-06-16 09:00:12 Re: 想自己寫占星軟體
johnpupu 離線
新客戶
註冊: 2006-06-16
文章數: 4
若是我只須要寫一個像站長寫的這樣的占星盤的程式,不知道是不是有公式,還是範例可參考呢?
http://destiny.xfiles.to/html/astrology/ahelper/ahelper.html
↑回到頂端↑
#16882 - 2006-06-16 09:15:13 Re: 想自己寫占星軟體
johnpupu 離線
新客戶
註冊: 2006-06-16
文章數: 4
因為小第想把其改寫成php 的程式
↑回到頂端↑
#16883 - 2006-06-18 12:50:15 Re: 想自己寫占星軟體
馮略 離線
一元復始
註冊: 2002-03-12
文章數: 1572
看那網頁原始檔...可以自行抓java的js檔...
JAVA與php語法相似度很高...
_________________________
-----------------------------------
歡迎大家來我的網站看看

馮略的塔羅牌占星學情報站 (冰海)﹝塔羅牌與占星學文章﹞
http://www.tarot.idv.tw/

塔羅學會
http://usetarot.com/
-----------------------------------
↑回到頂端↑
#16884 - 2006-06-19 01:44:15 Re: 想自己寫占星軟體
johnpupu 離線
新客戶
註冊: 2006-06-16
文章數: 4
馮老師,謝謝您的回答,請問你指的是
http://destiny.xfiles.to/html/astrology/ahelper/ahelper1.js
的java script 嗎
↑回到頂端↑
#16885 - 2006-06-19 03:28:07 Re: 想自己寫占星軟體
johnpupu 離線
新客戶
註冊: 2006-06-16
文章數: 4
馮老師謝謝,我知道了!!
↑回到頂端↑



板主:  何鼓, 阿理不達 
Google 搜尋
七嘴八舌
Facebook 塗鴉牆
最多貼文者 (30 天內)
mikomiko 264
hui 144
紅兒 102
謝尚橗 59
CHC 53
jcj 37
九流術士 33
golden621 27
魯夫 24
依法不依人 24
雙斗魂 22
過來人 18
尖叫孬塞福 18
元利 15
jwjwo 14
最新議題
夢見中獎?可以真實贏得獎金嗎??
by LOOz2023
22:07
請問原公司還可以繼續待下去嗎?
by LOOz2023
21:53
最近是不是職場上犯小人?
by LOOz2023
21:12
今天6.16日,以色列和伊朗戰爭最後結局
會是怎樣。

by golden621
19:12
各位大人. 請問這個八字的人生方向. 謝謝指教
by formula0106
11:52
出生在时辰交界处,如何判断是哪个时辰?4
0岁单身待业会迎来转机吗?

by froufrou
2025-06-15 14:26:41
業務交接的不順利 身心俱疲
by yanliu
2025-06-15 08:04:26
測以字求旅行是否順利
by h0116
2025-06-14 13:03:17
問今天買的到便宜的高麗菜嗎:逢蛇遇虎多驚

by 圓仔寶寶
2025-06-14 12:42:14
問題:請問10年前套牢的外國股票什麼時間
可以解套獲利?

by 一言
2025-06-14 11:48:53
誰在線上
2 線上使用者 (lotus, 1 隱形), 73 Guests and 23 Spiders online.
Key: Admin, Global Mod, Mod
最新使用者
我的快樂時代, hihi0933729, derick, WolfTsai197802XXXX, a8565
81756 註冊使用者
討論區統計
81756 使用者
54 討論區
222078 議題
2159676 文章

最高線上使用者: 3332 @ 2025-04-24 03:32:48

本站是個命理討論的園地,如果您要問命,請務必詳閱各板板規,遵守發問規則,不要只留個生日或是命盤, 其他什麼都沒提。貼命盤的方法請特別注意算完命盤後的文字說明,不要貼個沒人看懂歪七扭八的命盤, 貼錯命盤及未遵守板規者,文章很有可能被不預警刪除 另外,如果您提了問題,而有人回覆的話,不論對與錯,請務必多上來回應論命者, 我們不歡迎那種提了問題就等人回答,也不回應的人。我們需要的是,「良好的互動」及「長期的追蹤」。
本站大多數的討論區都得要註冊才能發言,您若是要張貼討論,請務必註冊為使用者, 如果您忘了您的密碼,請在登入」的畫面, 輸入您的帳號,再按一下我忘記我的密碼了」, 此時系統會寄一封信到您當時註冊的 Email 信箱裡面, 裡面則附有一個臨時密碼,請您拿到密碼後用此臨時密碼登入。登入之後可以在 編輯個人檔案」裡面修改成您習慣的密碼。
logo
欣洋網路有限公司