Страницы: 1
RSS
Подсчет пересекаемых линий сетки
 
Господа, здравствуйте. Возникла проблема: необходимо посчитать сколько линий сетки или квадратов образуемых при пересечении линий сетки пересекает график (в ручную долго и неточно, особенно при маленьком шаге сетки). Помогите пожалуйста.
 
Такое чувство, что это чистая математика. Пример приложите где видно, что нао посчитать и чему это должно равняться.  
________________________  
khafizovtt@gmail.com
Учимся сами и помогаем другим...
 
А пример для разбора согласно правилам форума будет?
 
вот пример
 
В голову пока приходит только такой вариант:  
1) проходим по парам точек (1-2, 2-3, 3-4 и т.д.)  
2) вычисляем уравнение прямой м/у этой парой  
3) считаем количество пересечений с сеткой исходя из шага сетки  
4) суммируем  
 
может есть другой подход, но я пока его не вижу. Формулой однозначно это не решить - надо писать макрос.  
________________________  
khafizovtt@gmail.com
Учимся сами и помогаем другим...
 
Число вертикальных линий: (Хмакс-Хмин)/ШагХ  
Число горизонтальных линий: (Умакс-Умин)/ШагУ  
 
А?
 
я лично на первом графике насчитал 22 квадрата  
 
 
алгоритм вижу таким:  
 
идти по данным поточечно, определять принадлежность каждой точки определенному квадрату, из координат квадрата( лев граница, верхняя граница) получается ключ для словаря, в который и заносится результат. в конце получаем количество элементов в словаре, кот и будет искомым
Живи и дай жить..
 
на первом графике границы определяются кратностью 50  
 
для нахождения ближайшей границы можно использовать формулу окрвниз()  
 
вообще можно решить формулами, если помните формулу для нахождения количества уникальных элементов
Живи и дай жить..
 
Если не трудно приложите файл и там набросайте пример. Просто я только начинаю знакомится со вселенной EXCEL и многого не знаю. Помогите пожалуйста.
 
Вот.  
Попробовал соединить идеи ber$erk и слэн:
 
Большое спасибо! Есть только один вопрос: мне этот макрос необходимо копировать на каждый лист книги в которой я его использую? Если да, то как это сделать.
 
там пользовательская ф-ция в данной книге будет работать на всех листах.  
Если нужно чтобы работала в разных книгах то  
1. Копировать в каждую книгу где ф-ция понадобится вручную.  
2. скопировать в персональную книгу макросов(если нет её создать). тогда будет работать во всех других книгах с одной разницей назв функции будет personal...ЧислоКвадратов(....)
 
http://www.planetaexcel.ru/tip.php?aid=122 здесь почитайте.  
при создании перс. книги макросов обратите внимание на "запись макросов макрорекордером" "сохранить в", там выдрана книга а вам нужно другой вариант.
 
{quote}{login=GUDboll}{date=21.10.2012 11:57}{thema=}{post}Есть только один вопрос: мне этот макрос необходимо копировать на каждый лист книги в которой я его использую? Если да, то как это сделать.{/post}{/quote}  
To V: пока я сочинял ответ - Вы уже ответили. На всякий случай мой вариант инструкции (я - старался :-)).  
 
Re: Нет, код макроса, точнее - пользовательской функции, должен быть в обычном (стандартном) модуле.  
 
Если Вы хотите использовать эту функцию только в одном своём файле:  
или добавьте, в редакторе VBA, новый модуль в проект Вашей книги - выделите мышкой VBAProject (...)  
в окне Project, и нажмите Insert->Module, скопируйте текст из моего модуля, начиная с Option Explicit,  
или просто перетащите мышом мой модуль в Ваш проект. Сохраните свой проект (File->Save).  
 
Если предполагается использовать функцию в нескольких книгах, то лучше создать такой модуль  
в PERSONAL.xlsm, его (её ?) файл всегда открыт и функция будет везде доступна.
 
Большое спасибо! Очень помогли.
 
Господа, беда! Макрос считает неточно. Необходимо чтобы он считал все клетки по которым проходит линия графика (т.е. когда проходит по уголкам клетки или по ее границе). Это возможно поправить или не получится?
 
Можно.  
Добавьте к знакам "<" ">" знак "=" в строке:    
If X >= X1 And X =< X2 And Y >= Y1 And Y =< Y2 Then XYUniqs.Add 0, CStr(X1) & "|" & CStr(Y1)  
ЗЫ: но фукция всё равно - АБСОЛЮТНО точно всё не посчитает.  
Если это для расчёта кафельной плитки, прикупите процетов на десять больше :-)
 
Большое спасибо!
Страницы: 1
Читают тему
Наверх