よくよく考えたら、構造体同士で足し算とか引き算とかできましたね。
ということで、昨日書いたやつをもっと短くしたやつ。
//各種3次元ベクトル演算ヘッダー
//ベクトルの和
CVector vectorPlus(CVector v1, CVector v2){
CVector v0;
v0 = v1 + v2;
return v0;
}
//ベクトルの差
CVector vectorMinus(CVector v1, CVector v2) {
CVector v0;
v0 = v1 - v2;
return v0;
}
//ベクトルのスカラー倍
CVector vectorMult(CVector v1, double d) {
CVector v0;
v0 = v1 * d;
return v0;
}
//ベクトルの長さ
double vectorScalar(CVector v0){
double d;
d = sqrt(v0.x*v0.x + v0.y*v0.y + v0.z*v0.z);
return d;
}
//ベクトルの長さの二乗
double vectorScalar2(CVector v0){
double d;
d = v0.x*v0.x + v0.y*v0.y + v0.z*v0.z;
return d;
}
//ベクトルの内積
double innerProduct(CVector v0, CVector v1){
return(v0.x*v1.x + v0.y*v1.y + v0.z*v1.z);
}
//ベクトルの外積
CVector outerProduct(CVector v1, CVector v2){
CVector v0;
double x, y, z;
x = v1.y*v2.z - v1.z*v2.y;
y = v1.z*v2.x - v1.x*v2.z;
z = v1.x*v2.y - v1.y*v2.x;
v0.x = x;
v0.y = y;
v0.z = z;
return v0;
}
後半3つは無理そうかなぁ。特に外積は・・。
内積とか距離はいけるかも、と思って
ベクトルの構造体同士を掛け算してみたけど、案の定ダメでした。
ちなみに、構造体はこんな感じ。
typedef struct vector{
double x, y, z;
}CVector;
ということで、昨日書いたやつをもっと短くしたやつ。
//各種3次元ベクトル演算ヘッダー
//ベクトルの和
CVector vectorPlus(CVector v1, CVector v2){
CVector v0;
v0 = v1 + v2;
return v0;
}
//ベクトルの差
CVector vectorMinus(CVector v1, CVector v2) {
CVector v0;
v0 = v1 - v2;
return v0;
}
//ベクトルのスカラー倍
CVector vectorMult(CVector v1, double d) {
CVector v0;
v0 = v1 * d;
return v0;
}
//ベクトルの長さ
double vectorScalar(CVector v0){
double d;
d = sqrt(v0.x*v0.x + v0.y*v0.y + v0.z*v0.z);
return d;
}
//ベクトルの長さの二乗
double vectorScalar2(CVector v0){
double d;
d = v0.x*v0.x + v0.y*v0.y + v0.z*v0.z;
return d;
}
//ベクトルの内積
double innerProduct(CVector v0, CVector v1){
return(v0.x*v1.x + v0.y*v1.y + v0.z*v1.z);
}
//ベクトルの外積
CVector outerProduct(CVector v1, CVector v2){
CVector v0;
double x, y, z;
x = v1.y*v2.z - v1.z*v2.y;
y = v1.z*v2.x - v1.x*v2.z;
z = v1.x*v2.y - v1.y*v2.x;
v0.x = x;
v0.y = y;
v0.z = z;
return v0;
}
後半3つは無理そうかなぁ。特に外積は・・。
内積とか距離はいけるかも、と思って
ベクトルの構造体同士を掛け算してみたけど、案の定ダメでした。
ちなみに、構造体はこんな感じ。
typedef struct vector{
double x, y, z;
}CVector;