A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
以下は、下のスクロールバーを動かすと上の三角形が回転するアプレットのサンプルです。
画数は、ページのparamタグで指定しています。
-----アプレット-----
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
public class triapp extends Applet {
VolatileImage OSI = null;
Graphics G;
int N, X[], Y[], W, H;
Scrollbar SB;
public void init() {
try {
N = Integer.parseInt(getParameter("N"));
} catch (Exception e) { N = 3; };
W = getWidth();
H = getHeight();
X = new int[N];
Y = new int[N];
setLayout(new BorderLayout());
SB = new Scrollbar(Scrollbar.HORIZONTAL, 0, 60, -314, 314 + 60);
add(SB, BorderLayout.SOUTH);
SB.addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
MakeTriangle((double)e.getValue() / 100.0);
repaint();
};
});
};
public void start() {
OSI = createVolatileImage(W, H);
G = OSI.getGraphics();
G.setColor(Color.RED);
MakeTriangle(0.0);
repaint();
};
public void MakeTriangle(double t) {
G.clearRect(0, 0, W, H);
for (int i = 0; i < N; i ++) {
double d = 2 * Math.PI * (double)i / (double)N + t;
X[i] = (int)(Math.sin(d) * 100) + W / 2;
Y[i] = - (int)(Math.cos(d) * 100) + H / 2;
if (i == 0) G.drawOval(X[0] - 10, Y[0] - 10, 20, 20);
};
G.drawPolygon(X, Y, N);
};
public void paint(Graphics g) { if (OSI != null) g.drawImage(OSI, 0, 0, this); };
public void update(Graphics g) { paint(g); };
}
-----ページHTML-----
<html>
<head><title>Rotate Triangle</title></head>
<body><center>
<applet codebase="." code="triapp" width="320" height="280">
<param name="N" value="3">
<applet codebase="." code="triapp" width="320" height="280">
<param name="N" value="7">
</applet>
</center></body>
</html>
No.2
- 回答日時:
Swing的(つまりMVC的)にやるなら、
スクロールバーからモデル(BoundedRangeModelオブジェクト)をゲットして、それにChangeListenerをaddします。ChangeListenerのstateChanged()メソッドの中で、スクロールバーのgetValue()の値を見ながら角度を表すパラメータthetaの値を変えて、三角形を表示しているパネルのrepaint()をコールします。
三角形を表示しているパネルのpaintComponent()の中では、引数のGraphics->Graphics2Dがrotate(theta, x, y)をコールします。x,yは座標変換(translate)の量です。以上により、回転が実現します。
No.1
- 回答日時:
ソースコードを見ないと何ともいえませんが
スクロールバーのクラスとして、
たとえば、JScrollBarを使っているとすると
そのgetValueメソッドでスクロールバーの値を取得し
Math.PIとかけ合せて、10でも20でも好きな数で割った値を
cos、sinの引数に足し算すれば求まるのではないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 AB=2dとなる理由を教えてください 4 2023/08/28 22:38
- 数学 数学B 正四面体の第4の頂点 3 2022/06/06 08:40
- 物理学 角運動量の式変形が分かりません。 4 2022/08/03 21:04
- 物理学 角速度ベクトルにつきまして 3 2022/08/09 15:44
- DIY・エクステリア 板を切断する方法について 11 2022/06/02 09:40
- 数学 極座標A(2,π/6)となる点を通り、OAに垂直な直線lの曲方程式を求めよ という問題を直交座標を利 1 2022/08/04 17:31
- 数学 画像の中学2年生の数学の問題について教えていただきたいです。 三角形ADCが二等辺三角形であることと 2 2023/01/29 16:14
- 数学 問題文 正n角形がある(nは3以上の整数)。この正n角形のn個の頂点のうちの3個を頂点とする三角形に 4 2023/03/22 14:57
- 数学 円の直径330mmで円の中に正三角形を作りたいのですが、どういう計算で算出できますか? 正三角形の大 6 2022/08/05 19:07
- 数学 中3 円周角の定理の問題です 3 2022/06/29 22:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でのWNetAddConnection3の使...
-
C#で、あるクラスのメンバーす...
-
typeid演算子を使用すると警告...
-
正規表現
-
C# DataGridView列カスタマイズ
-
コンボボックスを使う時の警告
-
JavaSwingのファンクションキー...
-
アプレットでマウスイベントが...
-
ボタンの複数割り当てについて
-
【Java】画像表示が出来ない!
-
C# 矢印キーの取得
-
エンターキーを押すとOKボタン...
-
C# 半角カナの文字化けについて
-
大量のデータを読み込んで表示...
-
Junitテストでvoid戻り値メッソ...
-
配列の受け渡し
-
JavaプログラムのUML化
-
public operationって何?
-
StrutsのiterateタグでListに格...
-
JavaFXでの表内のチェックボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
ボタンの複数割り当てについて
-
C#で、あるクラスのメンバーす...
-
Junitテストでvoid戻り値メッソ...
-
C#でのWNetAddConnection3の使...
-
C# 矢印キーの取得
-
Thread.sleepのInterruptedExce...
-
unityでのC++エラーの原因がわ...
-
C#で別のFormへ複数の値を返そ...
-
C# visibleプロパティをfalseに...
-
エンターキーを押すとOKボタン...
-
Processingでマウスクリックで...
-
C#でキーイベントが発生しない...
-
[C#.net]スレッド化された別フ...
-
C# DataGridView列カスタマイズ
-
【C#】ソースコードをファイル...
-
LVM_SETITEMSTATEでListViewの...
-
GetDIBits関数の使い方について
-
未割り当てのローカル変数
-
C# MouseHoverを何度も呼ぶには
おすすめ情報