|
<Task>
名探偵コナンは「南はどっちだ?。太陽は出ている。腕時計もある」といいます。
彼は短針を太陽に向け、それと12時との二等分線をみつけます(conancompass.html)。
太陽の位置 P(ψ,φ) は既に求まっているのでここでは時刻(hour)の情報を挿入します(00分専用となります)。
|
<太陽の方角 >
午後2時丁度であれば、南は短針と12時の二等分線(1時)の方角だとコナン君はいうでしょう。
|
|
<Python>
Class getPsiPhi への追加コード
onClockPsi = np.zeros((NjustH+1,Nphis))
onClockPhi = np.zeros((NjustH+1,Nphis))
Nclock = np.arange(NjustH+1,dtype='i')
for ji in range(NjustH):
Nclock[ji] = 0
while(True):
for j in range(Nphis):
if j % justHdiv == 0:
ji = j // justHdiv
if (ji<2*NjustH):
onClockPsi[ji,ii] = psd
onClockPhi[ji,ii] = phd
Nclock[ji] += 1
Plotting code
def plotClockHr(Nclock):
for j in range(NjustH):
x = []
y = []
m=Nclock[j]
if isHalf:
m = m // 2
print("j=",j,"Nclock=",m)
for k in range(m):
if onClockPhi[j,k]>0:
x.append(onClockPsi[j,k])
y.append(onClockPhi[j,k])
if isHalf:
plt.plot(x, y, color="black", lw=1)
else:
plt.plot(x, y, color="blue",lw=1)
|
<XDS Modula-2>
日にちのループへの追加コード
LOOP (* to scan days *)
IF (j MOD justHdiv = 0) THEN
ji:= j DIV justHdiv;
onClock[ji,ii].psid:= psid;
onClock[ji,ii].phid:= phid;
INC(Nclock[ji]);
(*INC(ji);*)
END;
Plotting code
PROCEDURE plotClock();
CONST
Size2 = 3;
VAR
j,k,n: INTEGER;
BEGIN
FOR j:=0 TO 23 DO
IF isFullclkset THEN n:= Nclock[j]; ELSE n:= Nclock[j] DIV 2; END;
FOR k:=0 TO n-1 DO
X[k]:= onClock[j,k].psid;
Y[k]:= onClock[j,k].phid;
END;
IF isOnlyMk THEN
polylinelong(X, Y, n, 0, 3, Size2, -1, 0);
ELSE
sepPolyline(X, Y, n, 0, dotseparn);
END;
END;
END plotClock;
|