本文整理匯總了C#中jp.nyatla.nyartoolkit.cs.core.NyARIntPoint2d.sqDist方法的典型用法代碼示例。如果您正苦於以下問題:C# NyARIntPoint2d.sqDist方法的具體用法?C# NyARIntPoint2d.sqDist怎麽用?C# NyARIntPoint2d.sqDist使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類jp.nyatla.nyartoolkit.cs.core.NyARIntPoint2d
的用法示例。
在下文中一共展示了NyARIntPoint2d.sqDist方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: traceLine
/**
* 點1と點2の間に線分を定義して、その線分上のベクトルを得ます。點は、畫像の內側でなければなりません。 320*240の場合、(x>=0 &&
* x<320 x+w>0 && x+w<320),(y>0 && y<240 y+h>=0 && y+h<=319)となります。
*
* @param i_pos1
* 點1の座標です。
* @param i_pos2
* 點2の座標です。
* @param i_area
* ベクトルを検出するカーネルサイズです。1の場合(n*2-1)^2のカーネルになります。 點2の座標です。
* @param o_coord
* 結果を受け取るオブジェクトです。
* @return
* @throws NyARException
*/
public bool traceLine(NyARIntPoint2d i_pos1, NyARIntPoint2d i_pos2, int i_edge, VecLinearCoordinates o_coord)
{
NyARIntCoordinates coord = this._coord_buf;
NyARIntSize base_s=this._ref_base_raster.getSize();
// (i_area*2)の矩形が範囲內に収まるように線を引く
// 移動量
// 點間距離を計算
int dist = (int) Math.Sqrt(i_pos1.sqDist(i_pos2));
// 最低AREA*2以上の大きさが無いなら、ラインのトレースは不可能。
if (dist < 4) {
return false;
}
// dist最大數の決定
if (dist > 12) {
dist = 12;
}
// サンプリングサイズを決定(移動速度とサイズから)
int s = i_edge * 2 + 1;
int dx = (i_pos2.x - i_pos1.x);
int dy = (i_pos2.y - i_pos1.y);
int r = base_s.w - s;
int b = base_s.h - s;
// 最大14點を定義して、そのうち両端を除いた點を使用する。
for (int i = 1; i < dist - 1; i++) {
int x = i * dx / dist + i_pos1.x - i_edge;
int y = i * dy / dist + i_pos1.y - i_edge;
// limit
coord.items[i - 1].x = x < 0 ? 0 : (x >= r ? r : x);
coord.items[i - 1].y = y < 0 ? 0 : (y >= b ? b : y);
}
coord.length = dist - 2;
// 點數は20點程度を得る。
return traceConture(coord, 1, s, o_coord);
}