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

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

新規登録して質問してみよう
ただいま回答率
86.02%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

【コンピュータグラフィックス】点光源を移動したい

OHASI
OHASI

総合スコア90

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

1回答

0グッド

0クリップ

275閲覧

投稿2022/10/14 09:31

##質問
点光源を移動したいのですが,どこを変更することで移動できるのですか?
いろいろ変更してみましたが,位置が全く変わらず積んでいます.

c

1#include <stdlib.h> 2#include <GL/glut.h> 3#include <GL/gl.h> 4#define SX 600 /*ウインドウの横サイズの初期値*/ 5#define SY 450 /*ウインドウの縦サイズの初期値*/ 6#define ESC 27 /* Escキーの文字コード */ 7 8void keyboard(unsigned char code, int x, int y) 9{ 10 if(code==ESC) exit(0); /* Escキー押下でプログラム終了 */ 11} 12 13void attribute(float kdr,float kdg,float kdb, float ksr,float ksg,float ksb, float phong) 14{ 15 float kd[4],ks[4],ka[4]; 16 17 kd[0]=kdr; kd[1]=kdg; kd[2]=kdb; kd[3]=1.0; /* kdの設定 */ 18 ks[0]=ksr; ks[1]=ksg; ks[2]=ksb; ks[3]=1.0; /* ksの設定 */ 19 ka[0]=kdr*0.2; ka[1]=kdg*0.2; ka[2]=kdb*0.2; ka[3]=1.0; /* kaの設定 */ 20 glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE, kd); /* 拡散反射係数 */ 21 glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR, ks); /* 鏡面反射係数 */ 22 glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT, ka); /* 環境光反射係数 */ 23 glMaterialf (GL_FRONT_AND_BACK,GL_SHININESS,phong); /* フォンのモデルの係数 */ 24} 25 26void display( void ) 27{ 28 float light[4] ={0.25, 0.25, 1.0, 1.0}; /* 点光源の指定 */ 29 float intensity[4]={1.0, 1.0, 1.0, 1.0}; /* 光源光の強さ */ 30 float amb[4] ={0.5, 0.5, 0.5, 1.0}; /* 環境光の強さ */ 31 32 glLightfv(GL_LIGHT0,GL_DIFFUSE, intensity); /* 0番の光源に拡散反射の強さを設定 */ 33 glLightfv(GL_LIGHT0,GL_SPECULAR,intensity); /* 0番の光源に鏡面反射の強さを設定 */ 34 glLightfv(GL_LIGHT0,GL_AMBIENT, amb); /* 0番の光源に環境光の強さを設定 */ 35 glLightfv(GL_LIGHT0,GL_POSITION, light); /* 0番の光源に平行光線を設定*/ 36 glEnable(GL_LIGHT0); /* 0番の光源を有効にする */ 37 glEnable(GL_LIGHTING); /* 陰影付けの有効化 */ 38 glEnable(GL_NORMALIZE);/* 法線ベクトルの正規化を有効にする */ 39 glClear( GL_COLOR_BUFFER_BIT);/* ウインドウの塗りつぶし */ 40 attribute(0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 64.0); /* 表面属性の指定 */ 41 glBegin(GL_POLYGON); /* ポリゴン定義開始 */ 42 glNormal3f( 0.0, 0.0, 1.0); /* ポリゴンの法線 */ 43 glVertex3f( 0.0, 0.5, 0.0); /*1番目の頂点座標の指定*/ 44 glVertex3f(-0.43, 0.25, 0.0); /*2番目の頂点座標の指定*/ 45 glVertex3f(-0.43, -0.25, 0.0); /*3番目の頂点座標の指定*/ 46 glVertex3f( 0.0, -0.5, 0.0); /*4番目の頂点座標の指定*/ 47 glVertex3f( 0.43, -0.25, 0.0); /*5番目の頂点座標の指定*/ 48 glVertex3f( 0.43, 0.25, 0.0); /*6番目の頂点座標の指定*/ 49 glEnd(); /* ポリゴン定義終了 */ 50 glDisable(GL_NORMALIZE);/* 法線ベクトルの正規化の無効化 */ 51 glDisable(GL_LIGHT0); /* 0番の光源を無効にする */ 52 glDisable(GL_LIGHTING); /* 陰影付けの無効化 */ 53 glFlush(); 54} 55 56void reshape(int sx, int sy) /*リシェープコールバック関数*/ 57{ 58 float aspect = (float)sx/(float)sy; /*アスペクト比*/ 59 60 glViewport(0,0,sx,sy); /*ビューポートの再設定*/ 61 glMatrixMode(GL_PROJECTION); /*投影法計算の準備*/ 62 glLoadIdentity(); /*投影法計算の初期設定*/ 63 glOrtho(-1.0*aspect, 1.0*aspect, -1.0, 1.0, -1.0, 1.0); /*平行投影の設定*/ 64 glMatrixMode(GL_MODELVIEW); /*計算モードを幾何変換に切り替え*/ 65} 66 67void main(int argc, char* argv[]) 68{ 69 glutInit(&argc,argv); /* ①glutの初期化 */ 70 glutInitWindowPosition(0,0); /* ①ウインドウの位置 */ 71 glutInitWindowSize(SX,SY); /* ①ウインドウサイズ */ 72 glutInitDisplayMode( GLUT_RGBA ); /* ①表示モード(色の表示)*/ 73 glutCreateWindow( argv[0] ); /* ①ウインドウの生成 */ 74 glClearColor (0.0,0.5,1.0,1.0 ); /* ①ウインドウの塗りつぶしの色 */ 75 glutReshapeFunc(reshape); /* リシェープコールバック関数の登録 */ 76 glutKeyboardFunc(keyboard); /* ②キーボード入力コールバック関数の登録 */ 77 glutDisplayFunc(display); /* ②ディスプレイコールバック関数の登録 */ 78 glutMainLoop(); /* ③ */ 79}

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

fana

2022/10/14 10:14

> float light[4] ={0.25, 0.25, 1.0, 1.0}; /* 点光源の指定 */ ここを変えても効果が無いということですか?
OHASI

2022/10/14 10:38

変わりました! ありがとうございました.

回答1

0

自己解決

float light[4] ={0.25, 0.25, 1.0, 1.0}; /* 点光源の指定 */
↑これの数字を変更

投稿2022/10/14 10:39

OHASI

総合スコア90

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。