Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Один из бывших студентов в нашей лаборатории использовал некоторые применимые методы для его диссертации. Я полагаю, что одного из них называют "альфа-формами" и ссылаются в следующей газете:
http://www.cis.rit.edu/people/faculty/kerekes/pdfs/AIPR_2007_Gurram.pdf
, Что бумага дает некоторые дальнейшие ссылки, за которыми можно следовать.
Парни здесь требование разработать k самые близкие соседи приближаются к определению вогнутой оболочки ряда точек, который ведет себя "почти линейно на числе очков". Печально их статью, кажется, очень хорошо охраняют, и необходимо будет спросить их для нее.
Вот хороший набор ссылок , который включает вышеупомянутое и мог бы привести Вас находить лучший подход.
Простое решение должно идти вокруг края полигона. Учитывая текущий край om граничные соединительные точки P0 и P1, следующий вопрос на граничном P2 будет точкой с самым маленьким A, где
H01 = bearing from P0 to P1
H12 = bearing from P1 to P2
A = fmod( H12-H01+360, 360 )
|P2-P1| <= MaxEdgeLength
Тогда Вы устанавливаете
P0 <- P1
P1 <- P2
и повторение, пока Вы не возвращаетесь, где Вы запустили.
Это все еще O (N^2), таким образом, Вы захотите отсортировать свой pointlist немного. Можно ограничить набор точек, который необходимо рассмотреть при каждом повторении при сортировке точек на, скажем, их переносе от центроида города.
Хороший вопрос! Я не испытал это вообще, но мой первый выстрел был бы этим повторяющимся методом:
, я думаю, что он работал бы, пока он работает, достаточно хорошо — хорошая эвристика для Ваших начальных 3 точек мог бы помочь.
Удачи!
Быстрое приближенное решение (также полезный для выпуклых оболочек) должно найти северные и южные границы для каждого маленького элемента восток - запад.
На основе того, сколько детали Вы хотите, создайте фиксированный размерный массив верхних / нижних границ. Поскольку каждая точка вычисляет, в каком столбце E-W это находится, и затем обновите верхние / нижние границы для того столбца. После обработки всех точек, можно интерполировать верхние/ниже точки для тех столбцов, которые отсутствовали.
также стоит сделать быструю проверку заранее на очень длинные тонкие формы и решить ли к мусорному ведру NS или Ew.