おこちゃんの測量プログラム

測量に役立つかもしれないBASICプログラムを公開

12.度分秒の変換計算 (F-BASIC)

lprint type"dc"
'-----------度分秒計算-------------
defdbl A-H,L,P-Y:defstr N,K:defint I,J,C
PI=3.141592653589793#:EE=0.0000000001#
RA=206264.8062471#:RAA=180#/PI:RRA=PI/180#
def fnRRA(T)=(T*10000#-40#*(fix(T*100#)+60#*fix(T)))/RA
def fnRAA(T)=(fix(T)+fix*1*100#)/60#+(T*100#-fix(T*100#))/36#)/RAA:'---度分秒からラジアン
def fnDEG(T)=fix(T)+fix(((T)-fix(T))*100#)/60#+*2/36#:'-----度分秒から度へ------
def fnDMS(T)=fix(T)+fix*3*60#)/100#+*4*60#-fix*5*60#))*0.006#:'-----度から度分秒へ------
def fnASI(T)=atn(T/(sqr(-T*T+1#)))*RAA
def fnACO(T)=(-atn(T/sqr(-T*T+1#))+PI/2#)*RAA
AN1$="          ------------------------------"
'-----------------
*SENTAKU1
cls:locate 20,7:print"計算の項目を選択して下さい。"
locate 25,10:print"角度の変換計算  ・・・・・・1"
locate 25,12:print"ア-クサインの計算・・・・・2"
locate 25,14:print"ア-クコサインの計算・・・・3"
locate 25,16:print"作 業 終 了・・・・・・・4"
locate 30,19:input"番号を選択して下さい。 ";JO
if JO<1 or JO>4 then *SENTAKU1
on JO goto *KAKUDO,*ASIN,*ACOS,*ENDD1
'
goto *SENTAKU1
'
*KAKUDO:'----------角度の変換計算
cls:locate 20,2:print "-----------デ-タの入力-----------"
locate 20,10:input "   方向角 T = ";TT3
'
TR=fnRAA(TT3):TE=fnDEG(TT3):TM=fnDMS(TE):TTA=TR*RAA:T3=fnDMS(TTA):TT=fnRRA(TT3)
TQ=3600#*RAA
'
cls:lprint:lprint:lprint:lprint:lprint
lprint "             度、分、秒とラジアンの変換計算":lprint:lprint:lprint
AN=Tt3:gosub *DOFUNBYO1
lprint using "                方向角    T =#### ## ##.## ";V1,V2,V3:lprint
lprint using "                ラジアン T =   ###.##########";TR:lprint
lprint using "                DEG      T =#######.######";TE:lprint
AN=TM:gosub *DOFUNBYO1
lprint using "                DMS       T =#### ## ##.## ";V1,V2,V3:lprint
lprint using "             ラジ->度   T =#######.######";TTA:lprint
AN=T3:gosub *DOFUNBYO1
lprint using "             ラジ->DMS  T =#### ## ##.## ";V1,V2,V3:lprint
lprint using "             ラジアン    T =    ###.##########";TT:lprint
lprint using "             ラジアン秒   T =#######.##########";TQ:lprint
lprint chr$(12);
'
goto *SENTAKU1
'
*ASIN
'
cls:locate 20,2:print "-----------デ-タの入力-----------"
locate 20,10:input "   ア-クサイン T = ";T3
'
TA=fnASI(T3):TM=fnDMS(TA):TR=fnRAA(TM)
'
cls:lprint:lprint:lprint:lprint:lprint
lprint "             ア-クサイン T から度、分、秒とラジアンの変換計算":lprint:lprint:lprint
lprint using "                ア-クサイン  T =####.######## ";T3:lprint
lprint using "                度 DEG       T =####.######## ";TA:lprint
AN=TM:gosub *DOFUNBYO1
lprint using "                度、分、秒  T =#### ## ##.## ";V1,V2,V3:lprint
lprint using "                ラジアン      T =####.#########";TR:lprint
lprint chr$(12);
'
goto *SENTAKU1
'
*ACOS
cls:locate 20,2:print "-----------デ-タの入力-----------"
locate 20,10:input "   ア-クサイン T = ";T3
'
TA=fnACO(T3):TM=fnDMS(TA):TR=fnRAA(TM)
'
cls:lprint:lprint:lprint:lprint:lprint
lprint "             ア-クコサイン T から度、分、秒とラジアンの変換計算":lprint:lprint:lprint
lprint using "                ア-クコサインT =####.######## ";T3:lprint
lprint using "                度 DEG       T =####.######## ";TA:lprint
AN=TM:gosub *DOFUNBYO1
lprint using "                度、分、秒  T =#### ## ##.## ";V1,V2,V3:lprint
lprint using "                ラジアン      T =####.#########";TR:lprint
lprint chr$(12);
'
goto *SENTAKU1
'
*DOFUNBYO1:'-----度.分秒の分離-----
VV=abs(AN):V1=fix(VV):V2=fix*6*100#):V3=(VV*100#-fix(VV*100#))*100#
if AN<0 then V1=(V1+0.1)*sgn(AN)
return
'
*ENDD1
'
end
 

*1:T-fix(T

*2:T*100#)-fix(T*100#

*3:T-fix(T

*4:T-fix(T

*5:T-fix(T

*6:VV-fix(VV