Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фракталы в Lisp/AutoCAD, нужна помощь новичку 
:(
    Опции темы
RussoTuristo
Дата 25.10.2010, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 25.10.2010

Репутация: нет
Всего: нет



Необходимо написать программу, выводящую на экран фрактал 6-угольник Серпинского.
Идея фрактала такая: Есть 6 угольник, заданный вершинами X1,Y1; X2,Y2.....
1) Случайно ставим точку внутри этого 6-угольника, пусть она будет O(X7,Y7)
2) Цикл:
а)Случайно выбираем вершину
б) Ставим точку между выбранной вершиной и точкой O
в) Точке О присваиваем координаты новой точки
Повторять n раз(выяснится на практике)

С lispom только начали знакомство, в пособиях даже не написано как элементарно точку поставить... Знаю, что несложная программа, помогите пожалуйста:

Код

(DEFUN Frac()
  (Setq X1 50.0)
  (Setq Y1 150.0)
  (Setq A '(X1 Y1))
  (Setq B '(100 250))
  (Setq C '(200 250))
  (Setq D '(250 150))
  (Setq E '(200 50))
  (Setq F '(100 50))
  (Setq O '(120 175))
  (Command "_Line" A B C D E F A "")
  (Command "_Line" O O "")
)


Для того, чтобы можно было вычислять среднюю точку решил записывать координаты в переменные... но почему-то значения X1 Y1 не считываются и многоульник даже не строится...
+ не знаю как правильтно точку ставить)) Делаю пока как линию с одинаковым началом и концом...


PM MAIL   Вверх
VH_
Дата 28.10.2010, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 31.10.2006

Репутация: 10
Всего: 11



Код
(defun C:SERP ()
 (if (setq esel (entsel "\nSelect closed lightweight polyline: "))
  (if (= (cdr (assoc 0 (setq edata (entget (car esel))))) "LWPOLYLINE")
   (progn
    (setq vertices (apply 'append (mapcar '(lambda (node) (if (= (car node) 10) (list (cdr node)))) edata)))
    (setq vnum (length vertices))
    (setq pt
     (if (setq pt (getpoint "\nPick internal point <Centroid>: ")) pt
      (mapcar '(lambda (vcoord) (/ vcoord vnum)) (apply 'mapcar (cons '+ vertices)))))
    (setq pnum (progn (initget (+ 1 2 4)) (getreal "\nNumber of iterations: ")))
    (setq delta (progn (initget (+ 1 2 4)) (getreal "\nDistance division ratio 1:")))
; источник http://stratum.ac.ru/textbooks/modelir/lection22.html
    (setq M (expt 2.0 31) k 1220703125.0 b 7.0 R 7.0) 
;    (setq M (expt 2.0 31) k 69069.0 b 0.0 R 1.0)
;    (setq M (expt 2.0 31) k 71365.0 b 0.0 R 1.0)
    (while (>= (setq pnum (1- pnum)) 0)
     (entmake
      (mapcar 'cons
       (list 0 10)
       (list
        "POINT"
        (setq pt
         (mapcar
         '(lambda (pcoord vcoord)
           (/ (+ pcoord (* delta vcoord)) (1+ delta)))
          pt
          (nth (fix (* (/ (setq R (rem (+ (* k R) b) M)) M) vnum)) vertices))))))))
   (prompt "\nSelected entity is NOT a lightweight polyline."))
  (prompt "\nNothing selected.")))

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.