Форум программистов, компьютерный форум, киберфорум
Наши страницы
AutoLISP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
TigerSET
4 / 4 / 0
Регистрация: 28.12.2013
Сообщений: 15
1

Программа AutoLisp: построение неправильных невыпуклых пятиугольников

08.07.2015, 08:38. Просмотров 845. Ответов 8
Метки нет (Все метки)

Решил пойти дальше по задачам и встал на вот этом:

В среде Автокада средствами Автолиспа построить множество пересекающихся неправильных невыпуклых пятиугольников и залить их разными цветами. Область пересечения должна представлять некоторую фигуру, не являющуюся одной точкой и являющуюся общей для всех многоугольников.

С разукрашиванием почти все понятно. Затык именно на том, чтобы построить эти... будем считать многоугольники. Думаю ввести все таки переменную в которой указывается количество углов.
Цель: Построить многоугольники так, чтобы у них было как минимум две общих точки на плоскости.
Причем длина граней может быть разной в пределах "от" и "до".

Генератор случайных чисел есть:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun _random (/ modulus multiplier increment)
  (if (not *SEED*)
    (setq *SEED* (getvar "DATE"))
  )
  (setq  modulus     65536
  multiplier 25173
  increment  13849
  *SEED*     (rem (+ (* multiplier *SEED*) increment) modulus))
  (/ *SEED* modulus)
)
 
(defun random (Minnum Maxnum )
    (- Maxnum (fix (* (- Maxnum Minnum -1) (_random))))
)
Многоугольники строятся
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
;; minl, maxl - Минимальная, максимальная длина грани
;; k - количество треугольников
;;
(defun tryangl1_6 (minl maxl k)
  (setq i 1)
  (setq ik (+ k 1))
  (while (< i ik)
    (setq px1 (random minl maxl))
    (setq py1 (random minl maxl))
    (setq px2 (random minl maxl))
    (setq py2 (random minl maxl))
    (setq px3 (random minl maxl))
    (setq py3 (random minl maxl))
 
    (command "_line" (list px1 py1) (list px2 py2) (list px3 py3) "_close")
 
;| В этом блоке тоже затык. Как узнать точку принадлежащую текущему треугольнику?
|
|    (setq Curr_CECOLOR (getvar "CECOLOR"))
|    (setvar "CECOLOR" (itoa i))
|    (command "_BHATCH" "_Properties" "_SOLID" (list px2 py3) "")
|    (setvar "CECOLOR" Curr_CECOLOR)
|-------------------------------------------------------------------|;
 
    (command "_.hideobjects" "_all" "")
    (setq i (+ i 1))
  )
  (command "_UnIsolateObjects")
)
(ну в данном случае, треугольники), но вот как сделать так, чтобы у них были общие точки на плоскости?


ПыСы Не хотелось бы стать специалистом на чужом горбу, по этому если можно не надо делать за мены программу, а только помочь.
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2015, 08:38
Ответы с готовыми решениями:

Программа на AutoLisp: построение треугольников
В среде Автокада средствами Автолиспа построить множество пересекающихся правильных треугольников и...

Autolisp, построение семейства фигур
Никак не могу отладить код готовой программы, то, что должно получится приложил. (defun ID () ...

Построение соприкасающихся окружностей в Autolisp
Помогите пожалуйста с заданием: Построение параметрических чертежей в среде AutoCAD 2010...

Программа в AutoLISP
Известна длинна окружности. Найти площадь круга, ограниченного этой окружностью.

Программа в AUTOLISP
Здравствуйте,не могли бы вы мне помочь вот с таким заданием для AutoLisp Пятнадцать трапеций,...

8
Lambdik
1038 / 932 / 106
Регистрация: 04.11.2012
Сообщений: 968
Записей в блоге: 3
08.07.2015, 12:38 2
Цитата Сообщение от TigerSET Посмотреть сообщение
но вот как сделать так, чтобы у них были общие точки на плоскости
А на эскизе это как выглядит?
2
TigerSET
4 / 4 / 0
Регистрация: 28.12.2013
Сообщений: 15
08.07.2015, 13:42  [ТС] 3
Lambdik, дружище, спасибо.
Мне опять надо было остановиться и подумать. )))

Мне же их не надо разные строить. Сделаю один и поверну вокруг точки на его плоскости.

Эмм... надо только разобраться как находить координаты точки на плоскости.
0
Lambdik
1038 / 932 / 106
Регистрация: 04.11.2012
Сообщений: 968
Записей в блоге: 3
08.07.2015, 14:25 4
Вот ещё один ресурс по AutoLisp.
[del]

точка на плоскости... она может быть 3-х мерной и 2-х мерной, например
Lisp
1
2
       x     y    z
(list -22.5 80.77 0)
2
TigerSET
4 / 4 / 0
Регистрация: 28.12.2013
Сообщений: 15
08.07.2015, 14:29  [ТС] 5
Ну в нашем случае исключительно 2-х мерной. Ну точнее Z = 0
0
ur_naz
Заблокирован
08.07.2015, 21:03 6
Цитата Сообщение от Lambdik Посмотреть сообщение
Вот ещё один ресурс
Ссылки на другие форумы запрещены правилами...
Цитата Сообщение от TigerSET Посмотреть сообщение
Решил пойти дальше по задачам
Стесняюсь спросить, где вы берете такие задачи...
На самом деле не нужно так слепо оперировать абстракциями. в автокаде нет никаких треугольников. Есть пространственные геометрические координаты, по которым можно построить замкнутую полилинию. Первая координата, назовем ее р1, может называться вершиной треугольника, отрезок между двумя другими координатами, р2 и р3, вполне сойдет за основание, отрезки, соединяющие конечные точки основания и вершину, р1 и р2, - ребра треугольника для начала получаем три первые точки и строим по ним треугольник, основание построенного треугольника считаем ребром нового треугольника. здесь возникает сразу две неопределенности: в какой точке будет вершина нового треугольника и какая вершина нового треугольника будет в противоположной стороне основания. Допустим вершина нового треугольника р1 находится в точке р2 существующего, а вершина основания нового треугольника р2 находится в р3 старого, тогда остается получить р3 нового и построить новый треугольник. затем все повторяется аж до посинения.
1
TigerSET
4 / 4 / 0
Регистрация: 28.12.2013
Сообщений: 15
08.07.2015, 21:38  [ТС] 7
Цитата Сообщение от ur_naz Посмотреть сообщение
Стесняюсь спросить, где вы берете такие задачи...
Это вот такие лабораторные в университете на заочном. ) Решил чтобы зря время между семестрами не тратить, про решать все задачи.

Ваша идея понятна. Сам пришел к этому варианту. Пока пробую другие варианты решения. Надеюсь в итоге получить универсальную функцию для всех вариантов. Разница в них не большая. Количество углов, правильный/не правильный, выпуклый/не выпуклый. Чисто так, исключительно для своего развития. Автокад я знаю отлично, а вот с АвтоЛиспом ни когда не работал, но давно хотел научиться.

Вообще, честно говоря, задача немного странно поставлена. Если я закрашиваю многоугольники, то они перекрывая друг друга перекрывают и общую область. Вполне возможно что постановщик задачи имел ввиду "покрасить" именно общую область. В общем задачи из разряда сделай так, как будет правильно для преподавателя. ) Так чтааа... готовлюсь к разным вариантам развития событий.
1
ur_naz
Заблокирован
08.07.2015, 23:09 8
Цитата Сообщение от TigerSET Посмотреть сообщение
Если я закрашиваю многоугольники, то они перекрывая друг друга перекрывают и общую область.
разницы нет. все равно необходим набор объектов, представляющих замкнутый контур, только нужно не ошибиться с островками
0
Lambdik
1038 / 932 / 106
Регистрация: 04.11.2012
Сообщений: 968
Записей в блоге: 3
09.07.2015, 08:47 9
Цитата Сообщение от ur_naz Посмотреть сообщение
Ссылки на другие форумы запрещены правилами...
И тебе привет.
Цитата Сообщение от TigerSET Посмотреть сообщение
Область пересечения должна представлять некоторую фигуру
Можно использовать дополнительные построения в качестве траектории, которые потом удаляются.
1
09.07.2015, 08:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2015, 08:47

Программа-калькулятор AUTOLISP
Пожалуйста,помогите!Срочно нужна программа-калькулятор на AUTOLISP в среде AUTOCAD выполняющая...

Программа для запоминания неправильных английских глаголов
У меня нет серьезного опыта программирования. Программа написана на Python 3 и PyQt5 и...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru