• 締切済み

3Dの網目

碁盤の目を斜めから見ると遠い部分ほど網目が小さく歪んで見えますよね あのような網目を表示するプログラムを書きたいのですが、 なにをどう調べたらよいのか解りません。 やはりOpenGLとかを使うことになるのでしょうか。 どなたか手掛かりだけでも構わないので、 進むべき方向だけでも教えていただけないでしょうか。 よろしくお願いします。

  • Java
  • 回答数3
  • ありがとう数5

みんなの回答

  • komi1341
  • ベストアンサー率65% (25/38)
回答No.3

追記。 > どんな計算をすればよいものやら検討つきません。 > 微分・積分とか・・ですかね・・ 真面目に3Dの計算を自前でやるなら行列計算ですが、今回のように簡易的に描きたいのであれば、直線の式を駆使すればできそうです。中学レベルの数学ですね。 あとは、紙にそれっぽい網目を描いてみて定規で寸法を計算し、座標値の見当をつけるという手もあります。正確さをそれほど求めないなら、これが一番手っ取り早いかもしれません。

jun0807
質問者

お礼

遠ざかるにつれ、線と線の間隔がどのぐらいずつ狭まっていくかの算出方法を見つけました。 手前の線と奥の線の間を3等分するのであれば、 1.それぞれの線を3分割し、分割点どおしを直線で結ぶ 2.手前の線と奥の線とを対角線で結ぶ 3.1の線と2の線の交点を通るように手前の線と平行になる線を引く ほほぉ、なるほど・・連立方程式? 確かに中学生レベルですね。 試してみます。 ありがとうございます。

  • komi1341
  • ベストアンサー率65% (25/38)
回答No.2

単純に網目だけを描きたいのですね。 やっぱり数式を使った方が楽なんですが、数式を載せても解説が面倒そうなのでやめておきます。そのかわり、やっつけ的に座標を計算する考え方を書いてみます。 奥に行くほど網目が縦・横ともに狭くなり、手前に行くほど広くなる、というのは感覚的に分かりますよね。マス目の広さを変えるには、横幅、縦幅を変える、つまりxy値を位置に応じて変えていけばいいんです。 例えば、まずのっぺらな(奥行き方向に傾きのない平面の)網目が描ける座標値を用意します。そして中央の横線より上(奥)にくる座標のxy値を、中央から遠ざかるに従って-1、-2、…とずらしていきます。逆に中央より下(手前)にくる座標は+1、+2、…としていくんです。 もしそれだと斜め具合が足りないと感じたら、+1、+2ではなく+2、+4のように変化量を調整するとか、xとyの変化量を別々にしてみるとか、いろいろ試行錯誤してみればそのうちそれっぽくなると思います。 数学というのは、そういう計算を簡単な式で表せる便利なツール、というだけですので、数学が苦手でも、発想と試行錯誤でなんでもできると思いますよ。

  • komi1341
  • ベストアンサー率65% (25/38)
回答No.1

大別すると、方法は2種類ですね。 1.2D描画機能でがんばる 画面の奥に行くに従って各座標が画面中央に寄っていくような計算式を自前で考えて網目を描画すればいいです。数学が得意ならそれほど難しくはないでしょう。 2.3Dで描く 碁盤をぐるぐる動かせるようにしたいとか、碁盤に合わせて木目調の画像を貼り付けたいとかいうなら、3Dで描いた方が楽でしょうね。 JavaでやるならJava3DというAPIがSUNから提供されています。あとはJOGLという、Javaの描画画面にOpenGLとほぼ同じ命令文で3D描画ができるAPIもあります。OpenGLを知っている人なら、後者を使う方が楽かもしれません。 他にも2つ3つJava用の3D APIがあった気がしますが、失念してしまいました。とりあえず取っ掛かりになればと思います。

jun0807
質問者

お礼

回答ありがとうございます。 1.2D描画機能でがんばる そうしたいのはやまやまなんですが、私、数学脱落組なもので・・ どんな計算をすればよいものやら検討つきません。 微分・積分とか・・ですかね・・ 2.3Dで描く 私が描きたいのは、平面の網目なんですが、 いろいろ見たサンプルでは立体物であったり、面は塗りつぶされていたりで、しっくりくるものが見つかりません。 うーむ、2D、3Dの2方面でがんばってググってみます。 ありがとうございました。

関連するQ&A

  • 棒針 透かし編みの編み目記号について

    編み目記号が、本に載っていないので困っています。 ほかのサイトなどで調べてもこのような編み目記号は載っていませんでした。 添付した模様編みの符号図の下から7段目、 トの逆向きの記号です。 「右上2目一度」とは違いますよね。 縦斜め線は1升だけですし、横斜め線は2升です。 流れ的に減らし目だろうとは思うのですが、 どういう意味なのでしょうか? よろしくお願いします。

  • Illustratorで円に網目のかかったオブジェクトを作りたい

    タイトル通りの質問なのですが、円の中に網目状の模様を作るにはどうしたらよいでしょうか? 作ったオブジェクトを最終的にスウォッチに登録するのが目標です。 ソフトはCS2を使っています。 例えばカラオケマイクの上の部分のような感じで円の端から端までぴったりと直線、あるいは曲線が斜めに入っているといった感じです。 自分で試してみたのは 1.正円を作り直線ツールで引く →しかしこれだとグリッドの端から端までなので思った長さの線が引けない 2.正円を作り、長方形グリッドツールを重ね、パスファインダで型抜き →これだと網目部分となるグリッド部分が残らない 3.正円を作り、ネットから網目のスウォッチをダウンロードして適用 →これが一番近かったのですが他のスウォッチを適用しているオブジェクトはスウォッチには登録できず。 何か良い方法があれば是非ご教授下さい。 よろしくお願い致します。

  • 画面に網目模様のようなものが…

    昨日から急に、スクリーンのアイコンや、カーソル部分に画面が割れた様な細かい点線(ボリューム表示の際に出てくるコントラストの縮小版)が大量に表示されるようになりました。無作為にではなく、正方形の中にコントラストの縮小版の様な物が32個並んでいます。 特に自分では何も操作した覚えは無いのですが…mac初心者のため何が起きたのか、故障なのかどうかも分かりません。 mac 画面 網目と調べてみましたが、よくわかりませんでした。 状況としては、画面に画像のある部分、例えばデスクトップにあるファイルや写真、ファインダー部分に網目が出ているようです。 ネットを見る分には、今のところ問題なさそうです。 宜しくお願い致します。

    • 締切済み
    • Mac
  • 五目並べ

    五目並べで 5つ並べば1を返すプログラムを組みたいのですが どのようにすればいいのかわかりません N[8][8]=1のとき黒、=2のとき白と設定して碁盤を組んでます よろしくお願いします

  • VC++でperlプログラムを動かすには

    VC++でOpenGLを動かしているんですが, その途中でperlのプログラムを動かしたい場合,どうしたらよいのでしょうか? 詳しい動きとしては, 1.perlのプログラムを動かして,txtデータを出力する 2. その出力したtxtをOpenGLの中で読み込んで,描画を表示 3.再びperlのプログラムを動かして,新しいtxtデータを出力する 4. その出力したtxtをOpenGLの中で読み込んで,描画を表示 この繰り返しです. この一連の動作をVC++でいっぺんに行いたいのですが, 可能でしょうか? 何かもっと詳細が知りたい場合は,なんでも聞いてください! よろしくお願いします.

  • 手編みのニット帽子について

    初めて毛糸で帽子を編んでいます 棒針を4本使い、二目ゴム編みで輪編みにしているのですが… 何故か編み目が斜めになります 編むときに変な持ち方をしているのでしょうか? かぶれなくはないし、何度か使ううちに直るかなと思いつつ、変かなとも思ってしまいます 何か解決方法ありますか?

  • 輪針で2目ゴム編み

    輪針で2目ゴム編みのネックウォーマーを編みました。 編んでいるときには気付きませんでしたが、編み終わり 完成して眺めると。。。 編み始め → 編み終わりの進行方向に対して、 左肩上がりに編み目すべてが斜めに進行していることに 気が付き、再度同じものを編んでみましたが、やっぱり。。。 伏せ止めをして針から外すと筒の太さなどは初めも終りも 特に変わりなく、ツレているような箇所もありません。 表目・裏目がずれている訳でもありませんでした。 もしかしたら?と思い当たる原因と思われるようなことが ありましたら、アドバイスをいただきたいと思います。 よろしくお願いします。

  • openglをVC++2010で利用したいです。

    VisualC++2010でopenglのプログラムを利用しているものです。 openglのインストールを完了し、プログラムにエラーもなくコンパイル、実行したのですが、図形が描画されるところが真っ黒のまま何も表示されません。 視点の問題かと思い、gluPerspectiveをいじったりしても何も表示されず、 プログラムのミスかと思いネット上のプログラムをコピペしても何も表示されません。 原因をいろいろネットで調べたのですが、なかなか解決に至りません。 使ってるPCはdynabookR542/16FS PR54216FNTS osはWindows7の64bitです。 よろしくお願いします。

  • openGLにおける複雑な図形のモデリング

    稚拙な質問だと思うのですが、ご教授下さい。 OpenGLを勉強中で立方体の表示とかはできるようになったのですが、いざ複雑な図形となると何をどうすべきなのかがさっぱりわかりません。 DirectXの解説ページには、モデリングのツールで作成したファイルを読み込んでプログラムから表示することができるようなことが書いてあるのですが、openGLに関してこのようなページを見つけることができませんでした。 OpenGLで人などをモデリングして表示する際は、こつこつと頂点やら面やらを吐くコードを書きながら調整して行くのが主流なんでしょうか? ・・・そんなわけはないと思うので、既存のツールやそのツールで作ったものをプログラムから利用する手順に関する資料のあるページへのポインタだけでも教えて下さると幸いです。

  • VBで簡単なOpenGLのサンプルはありますか?

    VB6を使って100行以内で円錐を描くプログラムを作りたいのですが OpenGLは良くわかっていないので、簡単なサンプル等を探しています。 フレームワークとソリッドモデルの両方が表示できるものが欲しいです。