opengl上で制御点を変数を用いて移動させる方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
orabgeblossom

opengl上で制御点を変数を用いて移動させる方法

#1

投稿記事 by orabgeblossom » 13年前

以下のように初めに基準点を4つ決め、間を補間する曲線を複数描画して絵を描くプログラムを作成しています。

プログラムの書き出しの部分です。

コード:

#include <GLUT/glut.h>
#include <stdlib.h>

GLfloat ctrlpoints[4][3] = {
    {300,666, 0.0},
    {302,694, 0.0},
    {300,721, 0.0},
    {306,743, 0.0}
};

GLfloat ctrlpoints1[4][3] = {
    {306,743, 0.0},
    {360,768,0.0},
    {432,779, 0.0},
    {510,788, 0.0}
};
ctrlpoints上の2点を同時にx軸方向に100動かしたい場合、

コード:

#include <GLUT/glut.h>
#include <stdlib.h>

int a;
a=100;
GLfloat ctrlpoints[4][3] = {
    {300,666, 0.0},
    {302+a,694, 0.0},
    {300+a,721, 0.0},
    {306,743, 0.0}
};
としてもエラーがでてしまい計算してもらえません。

エラーの形としては
initializer element is not a compile-time constant
です。

また、2直線を接続させたまま表示させたい事もあり、例えば

コード:

#include <GLUT/glut.h>
#include <stdlib.h>

int a,b,c;
a=306;
b=743;
c=0.0;

GLfloat ctrlpoints[4][3] = {
    {300,666, 0.0},
    {302,694, 0.0},
    {300,721, 0.0},
    {a,b, c}
};

GLfloat ctrlpoints1[4][3] = {
    {a,b, c},
    {360,768,0.0},
    {432,779, 0.0},
    {510,788, 0.0}
};
の様にしたいのですが、こちらもうまくゆきません。

どこで変数を定義し、glfloat中で用いれば良いのか教えて頂けると大変助かります。
宜しくお願いします。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: opengl上で制御点を変数を用いて移動させる方法

#2

投稿記事 by h2so5 » 13年前

C言語では関数の外で変数に代入することはできません。
とりあえず、動くコードはこのようになります。

コード:

#include <GLUT/glut.h>
#include <stdlib.h>
 
GLfloat ctrlpoints[4][3] = {
    {300,666, 0.0},
    {302,694, 0.0},
    {300,721, 0.0},
    {306,743, 0.0}
};

int main()
{
    int a;
    a=100;

    ctrlpoints[2][0] = 302 + a;
    ctrlpoints[3][0] = 300 + a;

    return 0;
}

orabgeblossom

Re: opengl上で制御点を変数を用いて移動させる方法

#3

投稿記事 by orabgeblossom » 13年前

h2so5 さま
早々のご回答ありがとうございました。ご記載頂いたコードでプログラムを書き直した所、所望の動作を確認する事ができました。
基礎事項も分からないままの質問でしたがご丁寧に返答頂き大変参考になりました。
またご質問させて頂く事も有るかと思いますが宜しくお願いします。
引き続き試行錯誤しながらですが、、、頑張ります。

閉鎖

“C言語何でも質問掲示板” へ戻る