A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
追記。
> どんな計算をすればよいものやら検討つきません。
> 微分・積分とか・・ですかね・・
真面目に3Dの計算を自前でやるなら行列計算ですが、今回のように簡易的に描きたいのであれば、直線の式を駆使すればできそうです。中学レベルの数学ですね。
あとは、紙にそれっぽい網目を描いてみて定規で寸法を計算し、座標値の見当をつけるという手もあります。正確さをそれほど求めないなら、これが一番手っ取り早いかもしれません。
遠ざかるにつれ、線と線の間隔がどのぐらいずつ狭まっていくかの算出方法を見つけました。
手前の線と奥の線の間を3等分するのであれば、
1.それぞれの線を3分割し、分割点どおしを直線で結ぶ
2.手前の線と奥の線とを対角線で結ぶ
3.1の線と2の線の交点を通るように手前の線と平行になる線を引く
ほほぉ、なるほど・・連立方程式?
確かに中学生レベルですね。
試してみます。
ありがとうございます。
No.2
- 回答日時:
単純に網目だけを描きたいのですね。
やっぱり数式を使った方が楽なんですが、数式を載せても解説が面倒そうなのでやめておきます。そのかわり、やっつけ的に座標を計算する考え方を書いてみます。
奥に行くほど網目が縦・横ともに狭くなり、手前に行くほど広くなる、というのは感覚的に分かりますよね。マス目の広さを変えるには、横幅、縦幅を変える、つまりxy値を位置に応じて変えていけばいいんです。
例えば、まずのっぺらな(奥行き方向に傾きのない平面の)網目が描ける座標値を用意します。そして中央の横線より上(奥)にくる座標のxy値を、中央から遠ざかるに従って-1、-2、…とずらしていきます。逆に中央より下(手前)にくる座標は+1、+2、…としていくんです。
もしそれだと斜め具合が足りないと感じたら、+1、+2ではなく+2、+4のように変化量を調整するとか、xとyの変化量を別々にしてみるとか、いろいろ試行錯誤してみればそのうちそれっぽくなると思います。
数学というのは、そういう計算を簡単な式で表せる便利なツール、というだけですので、数学が苦手でも、発想と試行錯誤でなんでもできると思いますよ。
No.1
- 回答日時:
大別すると、方法は2種類ですね。
1.2D描画機能でがんばる
画面の奥に行くに従って各座標が画面中央に寄っていくような計算式を自前で考えて網目を描画すればいいです。数学が得意ならそれほど難しくはないでしょう。
2.3Dで描く
碁盤をぐるぐる動かせるようにしたいとか、碁盤に合わせて木目調の画像を貼り付けたいとかいうなら、3Dで描いた方が楽でしょうね。
JavaでやるならJava3DというAPIがSUNから提供されています。あとはJOGLという、Javaの描画画面にOpenGLとほぼ同じ命令文で3D描画ができるAPIもあります。OpenGLを知っている人なら、後者を使う方が楽かもしれません。
他にも2つ3つJava用の3D APIがあった気がしますが、失念してしまいました。とりあえず取っ掛かりになればと思います。
回答ありがとうございます。
1.2D描画機能でがんばる
そうしたいのはやまやまなんですが、私、数学脱落組なもので・・
どんな計算をすればよいものやら検討つきません。
微分・積分とか・・ですかね・・
2.3Dで描く
私が描きたいのは、平面の網目なんですが、
いろいろ見たサンプルでは立体物であったり、面は塗りつぶされていたりで、しっくりくるものが見つかりません。
うーむ、2D、3Dの2方面でがんばってググってみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 眼・耳鼻咽喉の病気 網膜剥離について 1 2022/09/15 15:07
- 虫除け・害虫駆除 虫対策に網戸張替 クリアネットにするか 2 2022/07/11 12:19
- 電車・路線・地下鉄 JRにフリー切符 こんな乗車、計画しましたが注意点は何でしょうか。 3 2022/11/22 12:37
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
- DIY・エクステリア 日除けのオーニングの隙間について 4 2022/06/25 15:06
- 眼・耳鼻咽喉の病気 黄斑変性の注射のリスクについて 3 2022/07/25 16:46
- 食器・キッチン用品 揚げ物の油のろ過シート 2 2023/02/04 13:31
- 一戸建て 注文住宅で購入して、外構はウッドデッキを作ってもらったのですが、すごく視線が気になります。 目隠しフ 4 2022/10/03 02:26
- 眼・耳鼻咽喉の病気 目の専門家の方お願いします 上まぶたの霰粒腫を潰そうと目を強くおしてしまいました。白目の部分です。 1 2023/06/18 06:54
- Excel(エクセル) エクセルの表で A1にデータの入力規則でリストを作って、 (リス、キリン、ゾウとします) リストを選 4 2022/07/15 09:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面のちらつきの原因が知りた...
-
C# でパネルのマウスイベントが...
-
SwingとEDT(イベントディスパッ...
-
GDI+で描画した画像を消去する...
-
Javaからパイプでデータ送信しG...
-
VB.NET フォーム上に描いたグ...
-
Androidのフォントサイズ(SP)と...
-
PDF帳票を作成するためのフリー...
-
描画してもウィンドウをリサイ...
-
イメージの移動
-
addcolorのオフセット値を少し...
-
C# 超初心者です 文字列?の削...
-
プログラム内描画図形をdrawIma...
-
JAVAでの背景画像表示
-
複数画像表示切り替え Visual c++
-
株価チャートソフトを作るのに
-
描画をコピーする方法
-
「タイプ初期化子が例外をスロ...
-
配列の重複する値とその個数を...
-
インスタンス参照でアクセスで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JAVAでの背景画像表示
-
VB.NET フォーム上に描いたグ...
-
VB.NETのSendMessageを教えてく...
-
C# DataGridView のCellPaintin...
-
Javaで文字の角度を変えて表示...
-
canvasで表示されてる画像を1...
-
画面のちらつきの原因が知りた...
-
Labelコントロールの背景をグラ...
-
重なった要素上でのイベントで...
-
java.awt.peer?
-
OpenLayersの描画を固定で表示...
-
Canvas等の図形を移動する時,直...
-
ID3DXSprite::Drawメソッドに関...
-
描画処理が実行されない
-
Androidで画像の中で指定した範...
-
C#のGraphicsクラスについてです。
-
複数画像表示切り替え Visual c++
-
Androidのフォントサイズ(SP)と...
-
SwingとEDT(イベントディスパッ...
-
JavaScript でスライダーを作る...
おすすめ情報