<Task>
名探偵コナンは「南はどっちだ?。太陽は出ている。腕時計もある」といいます。 彼は短針を太陽に向け、それと12時との二等分線をみつけます(conancompass.html)。 太陽の位置 P(ψ,φ) は既に求まっているのでここでは時刻(hour)の情報を挿入します(00分専用となります)。 |
<太陽の方角 >
![]() 午後2時丁度であれば、南は短針と12時の二等分線(1時)の方角だとコナン君はいうでしょう。 |
Added code | |
<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; |
結果 | |
<Python>
|
<Modula-2>
CorelDrawで編集済。○は二等分線の方角。「名探偵コナン」を題材により。 ![]() |