Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: CL | DM;

Вниз

procedure RotateX   Найти похожие ветки 

 
ANTPro ©   (2007-09-17 20:02) [0]

Может кто-нибуть обьяснить философский смысл параметра Count и почему используется const, а не var?


type
 T3DPointRec = record
   case Boolean of
     False: (X, Y, Z, S: Extended);
     True: (Vector: array[0..3] of Extended);
 end;
 P3DPointRec = ^T3DPointRec;

...

procedure RotateX(const Point: P3DPointRec; const Count: Integer; const Angle: Extended);
var
 S, C: Extended;
 Y, Z: Extended;
 I: Integer;
 P: P3DPointRec;
begin
 SinCos(Angle, S, C);
 P := Point;
 for I := 1 to Count do
 begin
   Y := P^.Y;
   Z := P^.Z;
   P^.Y := C * Y - S * Z;
   P^.Z := S * Y + C * Z;
   Inc(P);
 end;
end;

Почему не так?

procedure RotateX(var Point: T3DPointRec; const Angle: Extended);
var
 S, C: Extended;
 Y, Z: Extended;
begin
 SinCos(Angle, S, C);
 Y := Point.Y;
 Z := Point.Z;
 Point.Y := C * Y - S * Z;
 Point.Z := S * Y + C * Z;
end;


 
Сергей М. ©   (2007-09-17 20:21) [1]

Эта хрень, пожалуй, более известна нашим многоуважаемым игролепам

http://www.delphimaster.ru/cgi-bin/forum.pl?n=9


 
ANTPro ©   (2007-09-17 20:35) [2]

> [1] Сергей М. ©   (17.09.07 20:21)

Врядли, что делает функция при Count=1 я и так знаю. Меня смущает такая реализация :/


 
Сергей М. ©   (2007-09-17 20:38) [3]


> ANTPro ©   (17.09.07 20:35) [2]


Подозреваю, что в первой реализации процедура делает попросту бестолковую работу)


 
ANTPro ©   (2007-09-17 20:59) [4]

> [3] Сергей М. ©   (17.09.07 20:38)

Если ты говоришь про результат, то ты неправ. Она возвращает результат(в Point), несмотря на const.


 
Сергей М. ©   (2007-09-17 21:09) [5]


> ANTPro ©   (17.09.07 20:59) [4]


Какой нафих "результат" ?

О процедуре у тебя идет речь ..


 
Вася Правильный   (2007-09-17 21:15) [6]

поворот по заданному кол-ву осей?
а const - чтоб адрес не заменили, а только содержимое по нему


 
ANTPro ©   (2007-09-17 21:15) [7]

> [5] Сергей М. ©   (17.09.07 21:09)
О процедуре у тебя идет речь ..

Ясно :)


 
ANTPro ©   (2007-09-17 21:48) [8]

> [6] Вася Правильный   (17.09.07 21:15)
> поворот по заданному кол-ву осей?

Если Count=1, то по X. А если больше, то что-то непонятное :(

> [6] Вася Правильный   (17.09.07 21:15)
> а const - чтоб адрес не заменили, а только содержимое по
> нему

А с var разве не тоже самое будет?


 
icWasya ©   (2007-09-17 22:12) [9]

Калька с языка C.

и подразумевается такое использование

Var
 Vectors : array of T3DPointRec;

...

RotateX(@ Vectors[0], Length(Vectors), Angle);


 
ANTPro ©   (2007-09-17 22:24) [10]

Всем спасибо. Я все понял :)



Страницы: 1 вся ветка

Текущий архив: 2007.10.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
2-1190120146
stanislav
2007-09-18 16:55
2007.10.14
Работа с байтом и битами


15-1190107490
Сатир
2007-09-18 13:24
2007.10.14
Как посчитать кол-во часов, минут, секунд между двумя датами?


8-1166810431
Her.Zinger
2006-12-22 21:00
2007.10.14
Работа с изображениями DXImage


15-1189676487
zdm77
2007-09-13 13:41
2007.10.14
Хранение настроек.


2-1189625872
aids
2007-09-12 23:37
2007.10.14
матрица