Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2021, 12:52   #1
Марат2027
 
Регистрация: 20.04.2021
Сообщений: 8
По умолчанию Excel VBA определение пересечений линий

Друзья. Помогите решить задачу - практическую и очень нужную.
На листе Excel есть несколько произвольных фигур (линии, прямоугольники, и т.п.).
Рисуется дополнительная линия из центров выбранных ячеек (с этим проблем нет - все рисую программно). Необходимо средствами Excel VBA определить факт пересечения новой линии с существующими фигурами. Достаточен только факт пересечения, координаты пересечения не важны.
Марат2027 вне форума Ответить с цитированием
Старый 20.04.2021, 15:53   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

если линии не параллельны - считайте факт пересечения установленным
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.04.2021, 06:04   #3
Марат2027
 
Регистрация: 20.04.2021
Сообщений: 8
По умолчанию

Не совсем был точен в задаче - речь идет о фигурах ограниченного размера: отрезки, прямоугольники и т.п. , и о факте пересечения без продолжения!
Марат2027 вне форума Ответить с цитированием
Старый 26.04.2021, 07:32   #4
alex777555
Пользователь
 
Регистрация: 30.07.2018
Сообщений: 19
По умолчанию

признак пересечения
Цитата:
Можно решить геометрическую задачу пересечения двух отрезков, проходящих через две пары точек (х1,у1), (х2,у2) и (х3,у3), (х4,у4). В результате получится два уравнения с двумя неизвестными (х и у). Потом эти уравнения решить как совместную систему. Если данная система имеет действительные корни (х=а1, у=а2), то эти (а1,а2) и будут являться координатами точки пересечения. В противном случае - эти линии параллельны. В общем виде можно написать соответствующую lisp-программу с двумя уравнениями нахождения координат а1 и а2.
alex777555 вне форума Ответить с цитированием
Старый 26.04.2021, 10:53   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Это конкретно нужно сделать в Excel, который задумывался явно для других задач? Задание, видимо, учебное: проверить способность стьюдента завинтить гвоздь отвёрткой и забить шуруп молотком. Если нет - sorry
digitalis вне форума Ответить с цитированием
Старый 26.04.2021, 11:34   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

задача, как задача
1. определить точку пересечения двух прямых
2. проверить что точка пересечения принадлежит отрезку, которым задана одна из прямых

задача элементарна по своей сути чем ее не решай (и Excelем в том числе)
но задачу не возможно решить пока к ней не приложены данные!
а самое странное здесь, что автор пишет что рисует все программно и тут становится совершенно не понятно, а что помешало чуть добавить кода в свои программы и найти т. пересечения? что????
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.04.2021, 11:48   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
задача элементарна по своей сути чем ее не решай
Наверное, у меня с воображением стало туго (как тут не вспомнить анекдот про квадратный трёхчлен), но когда прочитал это:
Цитата:
Рисуется дополнительная линия из центров выбранных ячеек
Выходит, ячейка Excel рассматривается не как абстракция для хранения данных, а как геометрический объект на листе, который д.быть связан с другим геометрическим объектом - рисунком на том же листе, и тогда задача представляется не такой уж элементарной. Если бы скрин этого листа был выдан... А ТС кинул задачку с недостающими данными и сейчас смотрит с интересом: ну-ка, умники, потрясите антресоли своих башкав
Что касается соответствия... Мне приходилось видеть в Excel... сборочный чертёж узла. Тут сложностей вроде особых нет: нарисовал в каком-нибудь графическом редакторе и скинул на лист. Но зачем?

Последний раз редактировалось digitalis; 26.04.2021 в 11:54.
digitalis вне форума Ответить с цитированием
Старый 26.04.2021, 13:27   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

у всех ячеек есть координаты верхнего левого угла (х, у)
кроме того есть высота и ширина ячейки
если о координате х добавить половину ширины, а к у добавить половину высоты ячейки
получим координаты центра ячейки
это все элементарные что с точки зрения геометрии, что математики - действия
а найти пересечение двух прямых в Excel возможно окажется проще чем в чем либо еще, потому что тут очевидно где и как могут быть записаны исходные данные, их легко считать с ячеек и так же просто произвести необходимые вычисления

но пока у автора написано "из центров выбранных ячеек"
с точки зрения постановки задачи это из центров хрен его знает каких ячеек
вот центр хрен его знает какой ячейки найти гораздо сложнее чем центр ячейки, допустим, К21
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.04.2021, 14:51   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Вот то-то и оно... "Поди туда - не знаю куда, принеси то, что хрен поймёшь" .
Даже интересно стало (хоть никогда не применю, вестимо): а можно ли без VBA, "штатными" средствами Ёкселя сделать такое: кликнул по ячейке - и её адрес, а также координаты на листе отображаются, скажем, в $A$1 ? Думаю, нельзя.
digitalis вне форума Ответить с цитированием
Старый 26.04.2021, 16:21   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

кликайте на здоровье (но штатными, видимо никак, особенно координаты)
Вложения
Тип файла: zip Книга1.zip (11.3 Кб, 7 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 26.04.2021 в 16:26.
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отрисовка линий координат в Excel для мыши Trabant Microsoft Office Excel 1 03.08.2017 14:30
Совместимость Excel 2007 VBA - Excel 2010 VBA Genas Microsoft Office Excel 2 28.11.2012 15:33
Определение индексов элементов массива VBA в Excel Алиныч Помощь студентам 0 16.06.2012 14:30
Пересечение линий на графике EXCEL 666buster666 Microsoft Office Excel 10 26.10.2011 15:16
Определение данных линий тренда Serg-2 Microsoft Office Excel 0 27.10.2009 09:02