Исток-Системы - Форумы
Поддержка пользователей программных продуктов и библиотек

Пример Planets

Начать новую тему Новая темаОтветить в тему Ответить    
Сообщение Дата 27 апр 2009 09:10
Пример Planets  
(defclass PlanetBody ()
(
(DistantCoef :initarg :DistantCoef :accessor DistantCoef)
(Distant :accessor Distant)
(RadiusCoef :initarg :RadiusCoef :accessor RadiusCoef)
(Radius :accessor Radius)
(AngleSpeedCoef :initarg :AngleSpeedCoef :accessor AngleSpeedCoef)
(AngleSpeed :accessor AngleSpeed)
(Angle :initarg :Angle :accessor Angle)
(x :accessor X)
(y :accessor Y)
(Color :initarg :Color :accessor Color)
(Satellites :initarg :Satellites :accessor Satellites)
)
)

(defmethod InitializationSatellites ((Body PlanetBody) Satellites)
(cond
((null Satellites) t)
(t
(setf (Radius (car Satellites))
(* MERCURYRADIUS (RadiusCoef (car Satellites))))

(setf (Distant (car Satellites))
(* MERCURYDISTANT (DistantCoef (car Satellites))))

(setf (AngleSpeed (car Satellites))
(/ (/ (* 2 PI) MERCURYTURNTIME) (AngleSpeedCoef (car Satellites))))

(setf (X (car Satellites)) (+ (X Body)
(* (sin (Angle (car Satellites))) (Distant (car Satellites)))))

(setf (Y (car Satellites)) (+ (Y Body)
(* (cos (Angle (car Satellites))) (Distant (car Satellites)))))

(InitializationSatellites Body (cdr Satellites))
)
)
) ....

У меня несколько вопросов:

1) (DistantCoef :initarg :DistantCoef :accessor DistantCoef) - что означает это описание переменной класса (:initarg :DistantCoef :accessor что это вообще) ?

2) Как описываются методы и что значит defmethod InitializationSatellites ((Body PlanetBody) Satellites)?

3) И что значит make-instanse в следующем коде:
(set 'Sun
(make-instance 'PlanetBody
:DistantCoef 0
:RadiusCoef 2
:AngleSpeedCoef 10
:Angle 0
:Color :yellow
:Satellites nil
) ?

Буду очень признателен и извините за наглость)

PS Что значит ошибка "Warning in MAIN: SPACE assumed special"?
Последний раз редактировалось Admin 22 ноя 2011 18:23, всего редактировалось 2 раз(а).
:Distance воспринимается как смайлик
     
Администратор
Зарегистрирован 11 окт 2011
Сообщений 33
Сообщение Дата 27 апр 2009 11:37
Пример Planets  
Во-первых, Ваши вопросы не имеет отношения к специфике LispWorks - лучше спрашивать в fido7.ru.lisp.

Во-вторых, следовало для сообщения создать новую тему (я уже перенес сам).

Три Ваших вопроса весьма общи и показывают незнание базовых понятий, за разъяснением которых я вынужден направить Вас к учебникам.

Что касает ошибки "Warning in MAIN: SPACE assumed special", этот вопрос более конкретен. Скорее всего, где-нибудь забыли quote, т.е. space вместо 'space.
К сожалению, в приведенном фрагменте кода space нигде не встречается. Поэтому точнее ответить невозможно.
     
Показать профиль участника
Сообщение Дата 04 май 2009 16:57
Пример Planets  
В том то и дело, что учебников найти не могу. Но вроде разобрался более или менее. Спасибо за ссылку
     
 
Начать новую тему Новая тема Ответить в тему Ответить
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
cron