Вверх ↑
Ответов: 1342
Рейтинг: 31
#1: 2022-09-19 13:10:08 ЛС | профиль | цитата
все переменные Single, время от времени в какие либо переменные попадают не верные данные и программа вылетает

все значения перед выполнением этого куска кода проверяются на NaN и на бесконечность, эффекта это не дает, может я что то не вижу или не понимаю, но что тут может быть не так??, может как то можно защитить этот кусок кода



begin
ccX:= (PosX*m1) + (PosY*m5) + (PosZ*m9) + m13;
ccY:= (PosX*m2) + (PosY*m6) + (PosZ*m10) + m14;
ccW:= (PosX*m4) + (PosY*m8) + (PosZ*m12) + m16;

if (ccW › 0.1) then
begin

NDCx:= ccX / ccW;
NDCy:= ccY / ccW;

screenX:= ((windowWidth * 0.5) * NDCx) + (NDCx + (windowWidth * 0.5));
screenY:= -((windowHeight * 0.5) * NDCy) + (NDCy + (windowHeight * 0.5));

sqrtif:=(sqr(PosXm-PosX))+(sqr(PosYm-PosY))+(sqr(PosZm-PosZ));
if (sqrtif › 0) then vd:=sqrt(sqrtif) / 100;

if ( (screenX ‹ windowWidth) and (screenY ‹ windowHeight) and (screenX › 0) and (screenY › 0) ) then
begin
_onEvent(onScreenX, screenX);
_onEvent(onScreenY, screenY);
_onEvent(onMeter, vd);
_onEvent(onVis);
end;
end;

end;
карма: 2

0