質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

1779閲覧

OpenGLを用いて点を描画したが、所望の位置に描画できない

muton

総合スコア31

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

2クリップ

投稿2019/05/29 09:22

オープンソースコードのカーシュミレーションソフトにおいてある座標位置(レースにおける位置座標)にOpenGLを用いて、点をシミュレーション画面上に描画したいと考えています。
初めにx座標=74,y座標=171,z座標=0に点を描画するプログラミングを以下の様に組むことで、ビルドは通りました。しかし、その点はコース上ではなく、背景の位置に描画されているようです。
コース上に描画するためにはどうすれば良いか分からず、困っています。
アドバイスを頂けると嬉しいです。

コード

C++

1void grDrawCar(tCarElt *car, tCarElt *curCar, int dispCarFlag, int dispDrvFlag, double curTime, class cGrPerspCamera *curCam) 2{ 3 glPushAttrib(GL_ALL_ATTRIB_BITS); 4 glPushMatrix(); 5 glMatrixMode(GL_PROJECTION); 6 glLoadIdentity(); 7 gluPerspective(curCam->getFovY(), 2, .005, 100000); 8 glMatrixMode(GL_MODELVIEW); 9 glLoadIdentity(); 10 t3Dd *pos = curCam->getPos(); 11 t3Dd *center = curCam->getCenter(); 12 t3Dd *upv = curCam->getUp(); 13 gluLookAt(pos->x, pos->y, pos->z, center->x, center->y, center->z, upv->x, upv->y, upv->z); 14 glColor3d(1.0, 0.0, 0.0); 15 glPointSize(1000); 16 glBegin(GL_POINTS); 17 glVertex3d(74, 171,0); 18 glEnd(); 19 glPopMatrix(); 20 glPopAttrib(); 21

現状

イメージ説明
イメージ説明
描画させたい箇所:赤い丸(コース上の位置座標:x座標=74,y座標=171,z座標=0)
現在実際に描画されている箇所:黄色い丸(背景??コース上ではない)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

変換行列を用いることで解決しました。

投稿2019/06/14 07:58

muton

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

glVertex3d(74, 171,0);

glVertex3d(74, 0, 171);

これでどうでしょう?

3D座標について確認してみてください。

投稿2019/05/30 00:26

k.matsuda

総合スコア293

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

muton

2019/05/30 04:41

回答ありがとうがございます。 提示頂いたコードを用いて、修正を行った結果、現在実際に描画されていた箇所(黄色い丸)も描画されなくなりました。 つまり、描画箇所が全く確認できなくなりました。 以下のサイト(http://wisdom.sakura.ne.jp/system/opengl/gl3.html)を参考に void glVertex3d(GLdouble x , GLdouble y , GLdouble z); とx,y,z座標の順に記述するものだと考えていたのですが、 この認識は間違えているのでしょうか? 宜しくお願い致します。
k.matsuda

2019/05/30 08:42

3D座標は、画面に向かって 左右方向がX軸 上下方向がY軸 手前奥方向がZ軸 になるようです。 路面より高い位置に、描画されていたようなのでY軸とZ軸が違うのかなと思っていましたが・・・。 コースの座標と車の座標は同じ座標軸だと思いますが、点を描画する座標と同じかどうかも確認しないといけないかもしれませんね。 すみませんが、確認方法については、私もよくわかっていません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問