У меня есть следующая функция:
void CGlEngineFunctions::GetBezierOpposite( const POINTFLOAT &a,const POINTFLOAT ¢er, POINTFLOAT &b, float blength )
{
POINTFLOAT v;
v.x = a.x - center.x;
v.y = a.y - center.y;
float alength = GetDistance(a,center);
if(blength == 0)
{
blength = alength;
}
float multiplier = blength / alength;
b.x = center.x - multiplier * v.x;
b.y = center.y - multiplier * v.y;
}
Я сузил задачу до двух строк:
b.x = center.x - multiplier * v.x;
b.y = center.y - multiplier * v.y;
Каждый раз, когда я вызываю это несколько раз, память загружается, пока не падает.
Я использую это так:
glEngine.functions.GetBezierOpposite(usrpt[0].LeftHandle,
usrpt[0].UserPoint,usrpt[0].RightHandle,0);
Я действительно не понимаю, как это может вызвать проблемы.
Чтобы проверить, я изменил его на это:
void CGlEngineFunctions::GetBezierOpposite( const POINTFLOAT &a,const POINTFLOAT ¢er, POINTFLOAT &b, float blength )
{
POINTFLOAT v;
v.x = a.x - center.x;
v.y = a.y - center.y;
float alength = GetDistance(a,center);
if(blength == 0)
{
blength = alength;
}
float multiplier = blength / alength;
b.x = 5;
b.y = 5;
}
Когда я делаю это, у него нет абсолютно никаких проблем. Я не понимаю, как выполнение арифметики может привести к увеличению использования памяти.
Спасибо
Может ли это быть причиной, если alength и blength = 0?
POINTFLOAT:
float x;
float y;