ReadyPlanet.com


การคำนวณดาวทิพย์
avatar
หนึ่ง


รบกวนขอความกรุณาจากอาจารย์ ว่าผมจะหาแหล่งข้อมูลสูตรการคำนวณตำแหน่งดาวทิพย์ได้จากที่ใดบ้างครับ จะเป็นหนังสือ หรือโค้ดโปรแกรมภาษาใดก็ได้ครับ ขอขอบคุณอย่างยิ่งครับ


ผู้ตั้งกระทู้ หนึ่ง โพสต์และแสดงความเห็นเฉพาะสมาชิกเท่านั้น :: วันที่ลงประกาศ 2008-01-08 11:25:21 IP : 203.152.33.71


1

ความคิดเห็นที่ 1 (1376816)
avatar
โรจน์-อินโฟ

ได้ลองดูซอสโค้ดโปรแกรมภาษาซีของ Swiss Ephemeris หรือยังครับ

ผู้แสดงความคิดเห็น โรจน์-อินโฟ วันที่ตอบ 2008-01-08 15:43:45 IP : 61.7.253.227


ความคิดเห็นที่ 2 (1376842)
avatar
หนึ่ง
ขอบคุณอาจารย์มากครับ ผมได้เคยลองเขียนกับ Swiss Ephemeris  แล้วครับซึ่งใช้ได้ดี ซึ่งตัวที่ผมใช้เป็นตัวที่ไม่เสียเงิน ถ้าหากผมจะทำแจกให้ผู้อื่นด้วยบนอินเตอร์เนท กลัวว่าจะผิดกฏหมาย (แต่คงจะไม่ทำเป็น open source) และไม่อยากซื้อตัวที่เสียเงินด้วย เพราะผมไม่ได้เขียนเพื่อจำหน่ายครับ จึงอยากรบกวนถามถึงแหล่งที่จะค้นคว้าสูตรการคำนวณตำแหน่งของดาวทิพย์เพื่อจะเขียนโปรแกรมขึ้นเองครับ ^-^
ผู้แสดงความคิดเห็น หนึ่ง วันที่ตอบ 2008-01-08 15:53:04 IP : 203.152.33.71


ความคิดเห็นที่ 3 (1376900)
avatar
โรจน์-อินโฟ
งั้นคงต้องขอค้นดูก่อนว่าซ้อสโค้ดภาษาเบสิกรุ่นโบราณยังอยู่หรือเปล่า และจะตัดตอนมาเฉพาะการคำนวณดาวทิพย์ได้หรือไม่ครับ
ผู้แสดงความคิดเห็น โรจน์-อินโฟ วันที่ตอบ 2008-01-08 16:18:00 IP : 61.7.253.227


ความคิดเห็นที่ 4 (1376917)
avatar
หนึ่ง
ได้ครับ ขอบพระคุณอาจารย์อย่างยิ่งครับ
ผู้แสดงความคิดเห็น หนึ่ง วันที่ตอบ 2008-01-08 16:25:12 IP : 203.152.33.71


ความคิดเห็นที่ 5 (1377450)
avatar
โรจน์-อินโฟ

ในตัวสูตรที่ใช้กับ Quick Basic ถ้าตัดเฉพาะคำนวณดาวทิพย์จะเป็นทำนองนี้ครับ ยังไม่รู้ว่าโพสต์แล้วมันจะรักษาช่องเว้นวรรคข้างหน้าให้หรือเปล่านะครับ

ค่าคงที่ของดาวทิพย์

DATA CU,5526,82.4854457,6.400766885e-3,-2.755224344e-5,
 DATA 33,62,85,100,106,101,87,65,41,16,-6,-20,-25,-19,-4,19,49,81
 DATA HA,-1965,61.23270944,-2.772376054e-03,9.452816256e-6
 DATA 0,26,50,69,80,94,79,68,50,30,10,-8,-19,-24,-20,-8,10,34,60
 DATA ZE,5794,48.3720491,-4.285060477e-3,3.864569431e-5
 DATA 0,22,43,58,68,71,67,56,41,24,6,-9,-19,-23,-20,-10,6,25,47
 DATA KR,669,42.16960545,-3.117970292e-3,2.221915822e-5
 DATA 0,20,38,53,61,64,60,51,37,21,5,-9,-18,-22,-20,-11,3,21,42
 DATA AP,7931,37.64981827,-2.907258758e-3,2.009076057e-5
 DATA 0,20,36,49,57,59,54,47,32,18,2,-11,-19,-22,-20,-11,2,17,38
 DATA AD,-864,35.28683374,-5.003003022e-3,2.73466561e-5
 DATA 0,17,33,46,53,55,52,42,31,16,1,-11,-19,-22,-20,-11,2,17,35
 DATA VU,3039,32.74576048,-6.107844531e-4,1.531796472e-6
 DATA 0,18,32,44,52,53,50,42,29,15,1,-10,-17,-21,-18,-11,-1,14,33
 DATA PO,9660,29.23595125,-3.149299571e-3,1.789787019e-5
 DATA 0,17,31,43,48,50,47,40,29,15,2,-8,-18,-20,-17,-10,1,14,28

ส่วนการคำนวณ

DAOTIP:
 READ x$, A, b, c, d
 FOR I = 0 TO 18
  READ A(I)
 NEXT I
   z = Y0 - 1890: jj = TOJJ(A, b, c, d, z)
 IF jj >= 270 AND LS > jj THEN GOTO DaotipOut
 IF (m0 > 3 OR LS < 30) AND LS > jj THEN GOTO DaotipOut
 IF (m0 > 30 OR LS < 30) AND jj >= 270 THEN GOTO DaotipOut
   z = z - 1: jj = TOJJ(A, b, c, d, z)
DaotipOut:
 j = LS - jj: j = TON(j): CALL TOXX(A(), j, XX)
 j = jj + XX: j = TON(j): GOTO Sompusdao
Sompusdao:
 j = INT(j * 60 + .5): L(K) = j / 60
 P = L(K): Mi = j - INT(P) * 60: dm = INT(P) + Mi / 100
 IF K <= 14 THEN PRINT "       "; x$; : PRINT USING " ###.##"; dm; : x = L(K): CALL SOMPUS(x)
 IF K > 14 THEN LOCATE (K - 8), 45: PRINT x$; : PRINT USING " ###.##"; dm; : x = L(K): CALL SOMPUS(x)

ฟังก์ชันที่ใช้

SUB SOMPUS (x)
 CALL SDM(x, S, d, m)
 PRINT USING "   ##  ##  ## "; S; d; m
END SUB

FUNCTION TOJJ (A, b, c, d, z)
 j = A + b * z + c * z ^ 2 + d * z ^ 3 + .5
 j = INT(j) / 60: TOJJ = TON(j)
END FUNCTION

FUNCTION TON (x)
 TON = x - INT(x / 360) * 360
END FUNCTION

SUB TOXX (A(), j, XX)
 x = j
 SELECT CASE x
  CASE IS <= 120: N = 0: m = 6: GOTO Cal
  CASE IS <= 240: N = 6: m = 12: GOTO Cal
  CASE IS > 240: N = 12: m = 18
 END SELECT
Cal:
 y = 0
 FOR j% = N TO m
 P = 1
  FOR I% = N TO m
   IF I% = j% THEN GOTO FIN
   P = P * (x - I% * 20) / (j% * 20 - I% * 20)
FIN:
  NEXT I%
  y = y + P * A(j%)
 NEXT j%
 XX = INT(y) / 60
END SUB

ผู้แสดงความคิดเห็น โรจน์-อินโฟ วันที่ตอบ 2008-01-08 20:08:23 IP : 203.144.160.244


ความคิดเห็นที่ 6 (1380410)
avatar
หนึ่ง

ขอบคุณอาจารย์อีกครั้งครับ

ผู้แสดงความคิดเห็น หนึ่ง วันที่ตอบ 2008-01-09 14:57:45 IP : 203.152.33.94


ความคิดเห็นที่ 7 (1382305)
avatar
ขอบคุณครับ
คุณโรจน์ครับ ผมลองเอาไปทดสอบดู มันแจ้ง Error ที่บรรทัดที่ 44 "CALL SDM(x, S, d, m)" ฟังก์ชั่น SDM ไม่มีครับ ขอส่วนที่คำนวนดาวเคราะห์ด้วยได้ไหมครับ ไม่อยากใช้ Swiss Ephemeris เหมือนกัน หามานานแล้วครับ
ผู้แสดงความคิดเห็น ขอบคุณครับ วันที่ตอบ 2008-01-10 02:22:41 IP : 124.120.180.49


ความคิดเห็นที่ 8 (1383194)
avatar
โรจน์-อินโฟ

จำได้ว่าในกระทู้เก่าๆ เคยมีคนขอดูซ้อสโค้ดรุ่นนี้ตัวเต็ม ตอนนั้นผมปฏิเสธไปว่า ในซ้อสโค้ดมันมีชื่อผู้เขียนโปรแกรมอยู่ ซึ่งที่จริงมันเป็นการดีที่ให้เครดิตเขา แต่เกรงจะเป็นเหมือนเผยแพร่โดยไม่ได้รับอนุญาต คงต้องขอดูเหตุผลประกอบอื่นๆ ด้วยครับ

ฟังก์ชันที่ Error นี่คงเป็นการแปลงค่าทศนิยมเป็นราศี-องศา-ลิบดา ถ้ายังไงพอจะเขียนเองเพิ่มเติมไปก่อนได้ไหมครับ

ผู้แสดงความคิดเห็น โรจน์-อินโฟ วันที่ตอบ 2008-01-10 09:21:27 IP : 61.7.253.227


ความคิดเห็นที่ 9 (1383273)
avatar
ขอบคุณครับ
เข้าใจแล้วครับ ขอบคุณอีกครั้งครับ
ผู้แสดงความคิดเห็น ขอบคุณครับ วันที่ตอบ 2008-01-10 09:52:42 IP : 124.120.180.49


ความคิดเห็นที่ 10 (1410165)
avatar
เต้ย
น่าจะแจกตัวเต็มให้ด้วยนะครับ จะได้เก็บไว้ศึกษา
ผู้แสดงความคิดเห็น เต้ย วันที่ตอบ 2008-01-18 11:22:02 IP : 203.113.67.71



1


Copyright © 2010 All Rights Reserved.