Список координат

Автор Тема: Список координат  (Прочитано 4667 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Список координат
« : 13-12-2023, 08:50:05 »
Опять вопрос от дилетанта. :D
имеется некий список координат такого типа:
Код - Auto/Visual Lisp [Выбрать]
  1. ((10.0 0.0) (6.1 10.0) (-10.0 1.2) (-1.8 -10.0) (10.0 -2.4))
Как ко всем элементам списка прибавить определенную величину? Например:
Код - Auto/Visual Lisp [Выбрать]
  1. (10.0 10.0)
Т.е. получить новый список:
Код - Auto/Visual Lisp [Выбрать]
  1. ((20.0 10.0) (16.1 20.0) 0.0 11.2) -8.2 0.0) (20. -7.6))
По типу:
Код - Auto/Visual Lisp [Выбрать]
  1. (mapcar '+ aa bb)

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Re: Список координат
« Ответ #1 : 13-12-2023, 22:42:04 »
Примерно так (код не проверял):
Код - Auto/Visual Lisp [Выбрать]
  1. (setq pt '(10 10))
  2. (mapcar '(lambda(x) (mapcar '+ x pt)) '((10.0 0.0) (6.1 10.0) (-10.0 1.2) (-1.8 -10.0) (10.0 -2.4)))
---
Проверил. Возвращает
Код - Auto/Visual Lisp [Выбрать]
  1. '((20.0 10.0) (16.1 20.0) (0.0 11.2) (8.2 0.0) (20.0 7.6))
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: Список координат
« Ответ #2 : 14-12-2023, 06:06:26 »
Спасибо, Алексей!
Я, конечно, пытался через лямбду написать, но у меня пока с этой функцией не лады.
Код - Auto/Visual Lisp [Выбрать]
  1. (mapcar '(lambda (q) (mapcar '+ q '(10.0 10.0))) '((10.0 0.0) (6.1 10.0) (-10.0 1.2) (-1.8 -10.0) (10.0 -2.4)))
Ничего у меня не получилось. А ваш код работает. Спасибо, ещё раз!

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Re: Список координат
« Ответ #3 : 17-12-2023, 18:34:31 »
Я тоже до них не сразу дошел. Но потом как-то срослось: https://autolisp.ru/2009/09/16/lambda-functions/
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!