/*
 *	clipint.h
 *
 *	整数演算ライブラリ
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2001-2009 Naoyuki Sawa
 *
 *	* Sat Sep 12 20:19:17 JST 2009 Naoyuki Sawa
 *	- 新規作成。
 *	- clipflt.hモジュール互換仕様の整数版です。
 *	  今回はrender_vec2i_alternate_concaves()だけが必要だったので、そのための最小限の関数以外はほとんど未実装です。
 */
#ifndef __CLIP_INT_H__
#define __CLIP_INT_H__

/****************************************************************************
 *	整数ベクトル(2D)
 ****************************************************************************/

typedef struct _vec2i {
	int x, y;
} vec2i;

/*--------------------------------------------------------------------------*/

//extern const vec2i vec2i_0;
//extern const vec2i vec2i_1;
//extern const vec2i vec2i_x;
//extern const vec2i vec2i_y;

/*--------------------------------------------------------------------------*/

//void vec2i_add(vec2i* vec1, const vec2i* vec2);
//void vec2i_sub(vec2i* vec1, const vec2i* vec2);
//void vec2i_mul(vec2i* vec1, const vec2i* vec2);
//void vec2i_div(vec2i* vec1, const vec2i* vec2);

//void vec2i_neg(vec2i* vec);
//void vec2i_normal(vec2i* vec);

//int vec2i_mag(const vec2i* vec);
//int vec2i_mag2(const vec2i* vec);
//int vec2i_dot(const vec2i* vec1, const vec2i* vec2);
//int vec2i_cross(const vec2i* vec1, const vec2i* vec2);

/* 二点間の距離を求める */
//int vec2i_dist(const vec2i* vec1, const vec2i* vec2);
/* 二点間の距離の二乗を求める */
//int vec2i_dist2(const vec2i* vec1, const vec2i* vec2);

/* 点a,bを通る直線と点cとの距離 */
//int vec2i_distance_l_p(const vec2i* a, const vec2i* b, const vec2i* c);
/* a,bを通る直線と、点cから直線へ下ろした垂線との交点計算 */
//vec2i vec2i_intersection_l_p(const vec2i* a, const vec2i* b, const vec2i* c);
/* a1,a2を通る直線とb1,b2を通る直線の交点計算 */
//vec2i vec2i_intersection_l(const vec2i* a1, const vec2i* a2, const vec2i* b1, const vec2i* b2);
/* a1,a2を端点とする線分とb1,b2を端点とする線分の交差判定 */
//int vec2i_is_intersected_ls(const vec2i* a1, const vec2i* a2, const vec2i* b1, const vec2i* b2);

/* 点pと、v[nv]を頂点とする凸多角形の内外判定 */
//int vec2i_is_point_in_convex(const vec2i* p, const vec2i* v/*[nv]*/, int nv);
/* 点pと、v[nv]を頂点とする凹多角形の内外判定 */
int vec2i_is_point_in_concave(const vec2i* p, const vec2i* v/*[nv]*/, int nv);
/* a[na]を頂点とする凹多角形と、b[nb]を頂点とする凹多角形の交差判定 */
//int vec2i_is_intersected_p(const vec2i* a/*[na]*/, int na, const vec2i* b/*[nb]*/, int nb);
/* 点pと、交互モードで描かれた複数の閉じた多角形の内外判定 */
int vec2i_is_point_in_alternate_concaves(const vec2i* p, const vec2i* v/*[sum(nv[0...n-1])]*/, const int* nv/*[n]*/, int n);

/*****************************************************************************
 *	
 *****************************************************************************/

#endif /*__CLIP_INT_H__*/
