コード例 #1
0
ファイル: opennl.cpp プロジェクト: erli2/parameterization
void nlCoefficient(NLuint index, NLfloat value) {
	__NLVariable* v;
	unsigned int zero= 0;
	__nlCheckState(__NL_STATE_ROW);
	__nl_range_assert((float)index, (float)zero, (float)(__nlCurrentContext->nb_variables - 1));
	v = &(__nlCurrentContext->variable[index]);
	if(v->locked)
		__nlRowColumnAppend(&(__nlCurrentContext->al), 0, value*v->value);
	else
		__nlRowColumnAppend(&(__nlCurrentContext->af), v->index, value);
}
コード例 #2
0
ファイル: opennl.c プロジェクト: mik0001/Blender
void nlMatrixAdd(NLuint row, NLuint col, NLfloat value)
{
	__NLContext *context = __nlCurrentContext;

	__nlCheckState(__NL_STATE_MATRIX);

	if(context->solve_again)
		return;

	if (!context->least_squares && context->variable[row].locked);
	else if (context->variable[col].locked) {
		if(!context->least_squares)
			row = context->variable[row].index;
		__nlRowColumnAppend(context->variable[col].a, row, value);
	}
	else {
		__NLSparseMatrix* M  = &context->M;
		
		if(!context->least_squares)
			row = context->variable[row].index;
		col = context->variable[col].index;
		
		__nl_range_assert(row, 0, context->m - 1);
		__nl_range_assert(col, 0, context->n - 1);

		__nlSparseMatrixAdd(M, row, col, value);
	}
}