時計

アナログ時計クラス(MyTokeiAnalog)

デジタル時計でなく、アナログ時計を作ります。

MyTokeiAnalog.java

ソースです。

public class MyTokeiAnalog extends MyTokei {

	// 秒針
	public double getRadSec() {
		return Math.toRadians(90 - sec * 6);
	}

	// 長針
	public double getRadMin() {
		return Math.toRadians(90 - min * 6 - sec / 10);
	}

	// 短針
	public double getRadHour() {
		return Math.toRadians(90 - hour * 30 - min / 2);
	}
}

解説

アナログ時計クラスを作成します。 これは、MyTokeiクラスを継承します。 アナログですから針を考えます。 座標平面は MyPoint クラスを使って次のようにします。

①原点は画面中央
②x軸は右方向 
③y軸は上方向

これで、針の中心は原点となります。 針は、0°のときはx軸上にあり、角度が増えると左に回ります。 時計と反対回りになります。 ですから、12時方向からスタートさせるには、90°からはじめ、後は減らしていきます。 では、針の位置を求めるメソッドを作ります。 これは、回転角だけを求めるメソッドです。

秒針

60秒で360°回転します。 ですから、1秒あたり6°回転します。 ただし、返す値は radian にします。

// 秒針
public double getRadSec() {
	return Math.toRadians(90 - sec * 6);
}

長針

60分で360°回転します。ですから、1分あたり6°回転させます。 また、60秒で6°ですから、10秒で1°回転させます。

// 長針
public double getRadMin() {
	return Math.toRadians(90 - min * 6 - sec / 10);
}

短針

12時間で360°回転します。ですから、1時間あたり30°回転させます。 また、60分で30°ですから、2分で1°回転させます。

// 短針
public double getRadHour() {
	return Math.toRadians(90 - hour * 30 - min / 2);
}

これで、回転角はOKです。 針の先の位置ですが、これは、(cosθ, sinθ) で求めることができます。


[前へ] [戻る] [次へ]