|
配列もポインタもほとんどわかってない状態なのですが、、
よろしくお願いします。
↓は関数の抜粋なんですが、
B、C、Dのような計算をしようとすると
「C=・・・」の計算のところで無効な間接参照というエラーが出てしまいます。
ポインタは使っていないんですが。。
float kouten()
{
float B,C,D;
B=L[i][0]*(siten[i][0]-O[0])
+L[i][1]*(siten[i][1]-O[1])
+L[i][2]*(siten[i][2]-O[2]);
C=(siten[i][0]-O[i][0])*(siten[i][0]-O[i][0])
+(siten[i][1]-O[i][1])*(siten[i][1]-O[i][1])
+(siten[i][2]-O[i][2])*(siten[i][2]-O[i][2]);
D=B*B-C;
printf("B=%f,C=%f,D=%f\n",B,C,D);
if (D > 0) {return (-B-sqrt(D));} /*交点あり*/
else{ return (INFINITY); /*交点なし、無限遠*/}
}
ええと、配列は↓のように定義してるつもりです。
#define n 10
#define m 3
float siten[n][m];
float O[m];
float L[n][m];
void SetObj(void)
{
r=100;
L[0][0]=0; L[0][1]=0; L[0][2]=1;
O[0]=0; O[1]=0; O[2]=100;
}
配列の定義の仕方がいけないんでしょうか、、
B、C、Dの計算をさせる時の配列の使い方がいけないでしょうか。
なにかアドバイスをお願いします。
|