Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.096 c
2-1190398346
vadimi4
2007-09-21 22:12
2007.10.14
ADO и SQL Server 2000


2-1190055058
tymofy
2007-09-17 22:50
2007.10.14
Правила записи record, ...


1-1186043128
DevilDevil
2007-08-02 12:25
2007.10.14
Указатель на виртуальную функцию. Помогите.


3-1181046100
ambhtr
2007-06-05 16:21
2007.10.14
Помогите составить запрос.


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский