コード例 #1
0
ファイル: SparseVec.cpp プロジェクト: bigrpg/fun-with-ik
Bool operator == (const TSparseVec &a, const TSparseVec &b)
{
	Assert(a.Elts() == b.Elts(), "(SparseVec::==) Vec sizes don't match");

	if (a.NumItems() != b.NumItems())
		return(false);
	else
	{
		Int i;
		
		for (i = 0; i < a.NumItems(); i++)
			if (a[i] != b[i])
				return(false);
		
		return(true);
	}
}
コード例 #2
0
ファイル: SparseVec.cpp プロジェクト: bigrpg/fun-with-ik
TVReal sqrlen(const TSparseVec &v)
{
	TVReal		sum = vl_zero;
	Int			i;
	
	for (i = 0; i < v.NumItems() - 1; i++)
		sum += sqrlen(v[i].elt);
	
	return(sum);
}
コード例 #3
0
ファイル: SparseVec.cpp プロジェクト: bigrpg/fun-with-ik
TSparseVec operator * (const TSparseVec &v, TVReal s) 
{
	TSparseVec	result(v.Elts());
	Int			i;
		
	for (i = 0; i < v.NumItems() - 1; i++)
		result.AddElt(v[i].index, s * v[i].elt);
	
	result.End();	
	return(result);
}
コード例 #4
0
ファイル: SparseVec.cpp プロジェクト: bigrpg/fun-with-ik
TSparseVec operator - (const TSparseVec &v)
{
	TSparseVec	result(v.Elts());
	Int			i;
	
	for (i = 0; i < v.NumItems() - 1; i++)
		result.AddNZElt(v[i].index, -v[i].elt);
	
	result.End();	
	return(result);
}
コード例 #5
0
ファイル: SparseVec.cpp プロジェクト: bigrpg/fun-with-ik
TVReal dot(const TSparseVec &a, const TVec &b)
{
	Assert(a.Elts() == b.Elts(), "(SparseVec::dot) Vec sizes don't match");

	TMReal		sum = vl_zero;
	Int			i;
	
	for (i = 0; i < a.NumItems() - 1; i++)
		sum += a[i].elt * b[a[i].index];
	
	return(sum);
}
コード例 #6
0
ファイル: SparseVec.cpp プロジェクト: bigrpg/fun-with-ik
TVReal dot(const TSparseVec &a, const TSparseVec &b) 
{
	Assert(a.Elts() == b.Elts(), "(SparseVec::dot) Vec sizes don't match");

	TMReal		sum = vl_zero;
	TSVIter		j(a);
	Int			i;
	
	for (i = 0; i < b.NumItems() - 1; i++)
		if (j.IncTo(b[i].index))
			sum += j.Data() * b[i].elt;
	
	return(sum);
}
コード例 #7
0
ファイル: SparseVec.cpp プロジェクト: bigrpg/fun-with-ik
TSparseVec operator / (const TSparseVec &a, const TSparseVec &b)			
{
	Assert(a.Elts() == b.Elts(), "(SparseVec::/) Vec sizes don't match");
	
	TSparseVec	result(a.Elts());
	TSVIter		j(a);
	Int			i;
	
	for (i = 0; i < b.NumItems() - 1; i++)
		if (j.IncTo(b[i].index))
			result.AddElt(b[i].index, j.Data() / b[i].elt);
	
	result.End();	
	return(result);
}