Vector(API)

提供: Eospedia
2014年4月30日 (水) 07:18時点におけるKinoshita (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

General/Vectorは、ベクトル演算のためのAPI です。

構造体

  • ベクトル(float, int, double)
typedef struct floatVector {
	unsigned long size;
	float*        data;
} floatVector;

typedef struct intVector {
	unsigned long size;
	int*        data;
} intVector;

typedef struct doubleVector {
	unsigned long size;
	double*        data;
} doubleVector;

size: ベクトルのサイズ(次元)
data: 実データ

API

  • 初期化
extern floatVector* floatVectorInit(floatVector* v, long size);
extern intVector* intVectorInit(intVector* v, long size);
extern doubleVector* doubleVectorInit(doubleVector* v, long size);
  • 解放
extern floatVector* floatVectorFree(floatVector* v);
extern intVector* intVectorFree(intVector* v);
extern doubleVector* doubleVectorFree(doubleVector* v);
  • 加算
extern floatVector* floatVectorAdd(floatVector* v, floatVector* u, floatVector* w);
extern doubleVector* doubleVectorAdd(doubleVector* v, doubleVector* u, doubleVector* w);
  • 減算
extern floatVector* floatVectorMinus(floatVector* v, floatVector* u, floatVector* w);
extern doubleVector* doubleVectorMinus(doubleVector* v, doubleVector* u, doubleVector* w);


extern double floatVectorScalarProduct(floatVector* x, floatVector* y);
extern double doubleVectorScalarProduct(doubleVector* x, doubleVector* y);
extern double lfloatVectorLength(floatVector* x);
extern double ldoubleVectorLength(doubleVector* x);
extern void lVectorSplineTableMake(floatVector* x, floatVector* y, floatVector* z);
extern void ldoubleVectorSplineTableMake(doubleVector* x, doubleVector* y, doubleVector* z);
extern double lVectorSpline(double t, floatVector* x, floatVector* y, floatVector* z);
extern double ldoubleVectorSpline(double t, doubleVector* x, doubleVector* y, doubleVector* z);
extern void lVectorSplineTable2DMake(floatVector* p, floatVector* x, floatVector* y, floatVector* a, floatVector* b);
extern void ldoubleVectorSplineTable2DMake(doubleVector* p, doubleVector* x, doubleVector* y, doubleVector* a, doubleVector* b);
extern void lVectorSpline2D(double t, double* px, double* py, floatVector* p, floatVector* x, floatVector* y, floatVector* a, floatVector* b);
extern void ldoubleVectorSpline2D(double t, double* px, double* py, doubleVector* p, doubleVector* x, doubleVector* y, doubleVector* a, doubleVector* b);