![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
javaの図形なのですが、結果が球の形にそってぐるぐるっと
リンゴの皮むきのような感じの線になるはずなのですが動かない、
というよりもどこを修正すればいいのか見当もつかずさまよっています。正直、助けていただきたいです。
たぶん抜けてるところがあるはずなんですが、何が抜けてて何を入れれば良いかわからないので教えてほしいです。
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
public class ui {public static void main(String[] args) {
JFrame jf = new JFrame("ui");
MyCanvasmc = new MyCanvas();
mc.setPreferredSize(new Dimension(700,700));
jf.getContentPane().add(mc);
jf.pack();
jf.setVisible(true);
}
}
class MyCanvas extends JPanel {
static double [][] p = {
{ここに数値を入れるのですが多いので投稿できないので省きます}
};
double _xa = 30;
double _ya = 40;
int doX, doY;
public void paintComponent( Graphics g ) {
super.paintComponent(g);
setBackground(Color.black);
g.setColor(Color.white);
disp_3Dobj(_xa, _ya, getWidth()/2, getHeight()/2, g);(
}
void disp_3Dobj(double xa, double ya, int px, int py, Graphics g) {
int [] p2d;
int n = p[0].length;
for (int i = 0; i < n; i++) {
}
}
int [] get2Dpos(double x, double y, double z, double xa, double ya, int px, int py) {
final double D2Rad = Math.PI/180.0;
double a = xa*D2Rad, b = ya*D2Rad;
double x1, y1, zt;
double sinA = Math.sin(a), sinB = Math.sin(b);
double cosA = Math.cos(a), cosB = Math.cos(b);
int [] pos = new int[2];
x1 = x*cosB + z*sinB;
zt = -x*sinB + z*cosB;
y1 = y*cosA - zt*sinA;
pos[0] = px+(int)Math.rint(x1);
pos[1] = py-(int)Math.rint(y1);
return pos;}}
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
たぶん、回転行列のところが違うんじゃないのかなぁ?
今回のプログラムのはX軸方向とY軸方向の回転 を独立にするようになってるね。これとは違うんだけど、だいぶ前に、Yahoo! 知恵袋で、Excel VBA でワイヤーフレームするプログラム書いたんだけど、それ、参考になるかも。 僕のこの例では 任意の回転軸 R を設定して、その軸を中心に 回転する場合の実装になってるんだ。
http://www.geocities.jp/chiebukuro_16074421/inde …
回転軸 R = (Rx, Ry, Rz) ただし 単位ベクトル
回転角度 θ
回転させる前の点の座標 (Xo, Yo, Zo)
回転させた後の点の座標 (X, Y, Z)
回転行列
Mxx = Rx * Rx * (1 - Cosθ) + Cosθ
Mxy = Rx * Ry * (1 - Cosθ) - Rz * Sinθ
Mxz = Rz * Rx * (1 - Cosθ) + Ry * Sinθ
Myx = Rx * Ry * (1 - Cosθ) + Rz * Sinθ
Myy = Ry * Ry * (1 - Cosθ) + Cosθ
Myz = Ry * Rz * (1 - Cosθ) - Rx * Sinθ
Mzx = Rz * Rx * (1 - Cosθ) - Ry * Sinθ
Mzy = Ry * Rz * (1 - Cosθ) + Rx * Sinθ
Mzz = Rz * Rz * (1 - Cosθ) + Cosθ
X = Mxx * Xo + Mxy * Yo + Mxz * Zo
Y = Myx * Xo + Myy * Yo + Myz * Zo
Z = Mzx * Xo + Mzy * Yo + Mzz * Zo
joseph_joey_tribbiani
参考URL:http://www.geocities.jp/chiebukuro_16074421/inde …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
- C言語・C++・C# ある線が円の範囲に入っているかの計算 1 2022/12/07 16:14
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# プログラミングを教えて欲しいです。 配列aは、int a[9]={7,6,12,8,3,5,10,9 4 2022/12/19 23:27
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0dの意味を教えてください
-
モンテカルロ法を用いた球の体...
-
Javaで何パーセント%かを表示...
-
実数からの小数部の取得
-
べき乗
-
最大値と最小値の求め方
-
double型変数値の整数部分のみ...
-
java プログラム 範囲を指定し...
-
Javaプログラムのフローチャー...
-
osamuyさん、では「今まで入力...
-
小数点以下の切捨てにつきまして
-
double型の足し算について
-
javaの課題。。
-
javaでC++のdefine文に相当する...
-
矩形法プログラムの計算値と計...
-
JSPやサーブレットでSystem.out...
-
System.err. printlnとSystem.o...
-
ページング
-
ダブルクォーテーションのrepla...
-
C言語のポインターに関する警告
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
べき乗
-
実数からの小数部の取得
-
Javaで何パーセント%かを表示...
-
0dの意味を教えてください
-
最大値と最小値の求め方
-
double型変数値の整数部分のみ...
-
Javaによる利率計算の実装方法
-
doubleで入力するには?
-
doubleとintの違い
-
JAVAのプログラムで、2乗計算...
-
double型の足し算について
-
掛け算演算を使わない掛け算
-
実数 2.0 に対して int(2.0) ==...
-
Javaコンパイルエラー
-
java のfor文について質問です。
-
C# ToStringでの数字桁揃えの仕方
-
java プログラム 範囲を指定し...
-
Javaのeval関数処理
-
printfでのエラーがわからない...
-
数値積分について
おすすめ情報