![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите понять смысл кода.
@!!ex © (2007-12-25 09:27:00)Прислали мне наднях демку, в одном месте используется вот такая процедура:
procedure VectorRotateX(const v: TVector; a: single; out FinishVector:TVector);
var
ty: single;
begin
ty:=v.Y;
FinishVector.Y:=v.Y * Cos(a) - (v.Z * Sin(a));
FinishVector.Z:= ty * Sin(a) + (v.Z * Cos(a));
FinishVector:=v
end;
Разве в результате работы вектор будет повернут???
Сергей М. (2007-12-25 09:37:00) [1]
> никогда не работал с out
out здесь ни причем.
@!!ex (2007-12-25 09:37:00) [2]> [6] Сергей М. © (25.12.07 09:37)
понял. спасибо за разъяснения!
Сергей М. (2007-12-25 09:36:00) [3]
> FinishVector:=v
FinishVector .X:= v .X
@!!ex (2007-12-25 09:35:00) [4]> [2] Сергей М. © (25.12.07 09:34)
Я просто никогда не работал с out, поэтому и спросил, вдруг там какая то особенная логика...
Сергей М. (2007-12-25 09:34:00) [5]
> Разве в результате работы вектор будет повернут?
Нет конечно. Ошибка в предпосл.строчке кода очевидна.
@!!ex (2007-12-25 09:34:00) [6]> [1] Сергей М. © (25.12.07 09:31)
FinishVector:=v;
Разве оно все вычисления не затрет??
Сергей М. (2007-12-25 09:31:00) [7]Вращение исходного 3D-вектора vотносительно оси X на угол aс записью результирующего вектора в FinishVector.