Если требуется поставить точку на полилинии (имеющую несколько вертексов/точек) на середине её общей длины от начальной точки P0, то можно так:
1. Проходим по всем её отрезкам, считаем сумму их длины (Ls).
2. Определяем геометрическую середину полилинии Lm = Ls/2;
3. Снова идём по отрезкам, пока не обнаруживаем, что текущий счётчик сумм длин отрезков Lс не оказывается больше или равен Lm. Это означает что мы либо нашли среднюю точку (если Lc==Lm точно) либо нашли отрезок, на котором и должна находиться средняя точка!
3. Определяем положение искомой точки на текущем отрезке, которая будет размещена на текущем отрезке полилинии состоящем из точек PN и PN+1 (с расстоянием между ними DN) на расстоянии DM = Lm - Lc + DN от точки PN (начало полилинии).
4. Вычисляем координаты найденной точки по полученной пропорции DM/DN, прибавляя разницу к X и Y для точки PN и рисуем её.
Взять внятный и простой (на вид) исходный текст с комментариями из сторонней библиотеки и вставить к себе, вызывая из своего кода как свой метод. После сдачи работы изучить чужой текст, чтобы уметь сделать самому)))
Задание не понятно до конца, но предположим, что Вам надо найти все пары (id,string) не сущестующие в обеих массивах одновременно.
Просто и понятно (мне, без стримов) сделать через Set.
Свои пары создавайте в классе с двумя полями int id и String string. Перезапишите в этом классе методы из класса Object hashCode и equals.
В hashCode проще всего преобразовывать int в строку и добавлять спереди к string и брать от новой строки её hashCode. Оно сработает!
В equals сравнивайте this и obj по id и по string.
Возвращайте true только если они попарно равны в обоих объектах.
Например return (this.id == obj.id) && (this.string.equals(obj.string);
Затем засовывайте все пары в любой очереди из обеих массивов в соответствующий Set. Главное, чтобы каждую сунуть только один раз! После завершения засовывания Вы имеет Set с уникальными парами. Всё!
Как извлечь из Set все пары в виде ArrayList - дело вкуса.
Bavashi, спасибо за грамотный ответ))) Другой мог бы и обидеться((( Полностью согласен со всеми 3-мя пунктами. Swing начал использовать в 2000-х, когда JavaFX был ещё глюкавым и порочным))) Даже интересно. что с ним сегодня, можно ли его пользовать. В целом мне лично нужно только стандартное GUI, никаких динамических спрайтов и прочих около игровых плюшек. Но если они есть и работают без усилий - почему бы и нет? Надо подумать. Спасибо за наводку!
Про то, что начало использования Swing вызывает некоторое отторжение - согласен. Но постепенно диспетчеры компоновки перестают пугать, а польза от них, несомненно, есть. В Delphi (по кр. мере старом, вплоть до 7-й версии) создавать окна с динамически меняющимися размерами было ещё тем геморроем с ручной шлифовкой, а в Swing ведь всё это делается автоматом, достаточно использовать нужный чёртов диспетчер :o) Парадигма всех этих диспетчеров? то ли вдохновлялась принципами HTML, то ли она и вдохновила HTML)))
P.S. На конференции не был. Хожу на них, только когда везёт работать в гео-сферах( ГИСы, любая геология, были уран (пост-СССР), нефть, рудные ископаемые), в последний раз перерыв, с погружением в фулл-стек технологии (брррр), был как раз с 2016 по 2020 года. Теперь снова буду ходить, надеюсь. Где-то там и увидимся, возможно :o!
Bavashi, делаю на Swing произвольный GUI для кода, обрабатывающего большие массивы на основе нерегулярных данных для геологии, так уж сложилось исторически, и генерирующего матрицы результатов в битовом виде.
Достаточно существенная работа с изображениями, скажем, формирование синтезированных цветов из мудьти-спектральных сканерных космических изображений. Всё работает нормально, никаких нареканий на внешний вид нет. Строится сам интерфейс (при опыте) достаточно быстро.
Даже и требований к совместимости уже нет, но переходить на устаревшие среды разработки Delphi (потратил на них до 8 лет жизни) никакого желания нет. А С++ не зашёл по причине своей избыточной (ПМСМ) модели наследования. Но тут - уже дело вкуса. Не навязываю свой, но и не готов согласиться с Вами по поводу ужасов "городка" )))
Но в целом, согласен, Swing - это никак не массовый тренд, требующий стандартные мозги кубической или спиралевидной (как уж потребуют библиотеки того или иного названия и назначения) формы.
azerphoenix, не "... Java имеет больше enterprise направленность", а библиотеки и сервисы на Java имеют оную. Но есть и другие направленности, в частности, параллельные и математические библиотеки в мировых научных центрах, например, в ЦЕРН.
Сама Java заточена чисто на запуск одинаковых кодов в разных средах. И да, наблюдал подобные фокусы. Разрабатываешь и отлаживаешь на Windows (корпоративный стандарт в конторе), а работает оно на каком-то IBS Unix (требование заказчика). При этом без какой-либо переделки!!! Лишь бы версия Java совпадала. Разве не магия?
Bavashi, дело вкуса. Если не зажмуриваться на свет, то кроме WEB разработки есть множество гораздо более интересных (ПМСМ) вещей, которые можно делать на любых языках, в т.ч. и на java.
И тут Swing весьма выручает. Он позволяет писать GUI произвольного уровня, трудно отличимые от Delphi или С++.
Но да, это не массовая разработка (клепание) интерфейсов для интернет-магазинов на стандартных компонентах вокруг Spring + Hibernate, а творческое дело, требующее размышлений, универсализма и базового образования в вычислительной технике.
alfss, цветовые модели бывают разные. Но в почти любой (из достаточно обширных) есть чистые цвета и смешанные на основе их. Для экранов обычно используют модель RGB, где лишь 3 чистых цвета Red, Green, Blue, а серая гамма для неё обеспечивается одинаковыми значениями во всех трёх компонентах, от 0 до 255 (если модель хранит значение цветовой компоненты в байтах, что верно в 99.99% случаев). Тем самым, в RGB у нас может быть только 256 значений серых цветов (от чёрного 0,0,0 до белого 255,255,255). И ещё достаточно много оттенков, почти не отличимых глазом от серых значений.
В данном случае мы наблюдаем шкалу градаций серого из 3-х вариантов: чёрный (тёмный), серый (промежуточный) и белый(светлый). Возможно, это сделано их целей экономии или по каким-либо иным соображениям.
Цветными эти серые изображения я бы не стал называть. Ранее (когда была самостоятельная техническая культура и страна) их называли "256 градаций серого". Назвать их серыми цветами тоже можно, но звучит как то не информативно.
Хранить в коде эти картинки можно как угодно, Зависит это, скорее всего, от контроллера, формирующего картинку. Есть стандартные форматы, известные во всех ОС, на любых процессорах, позволяющие хранить битовые картинки (BMP,PNG,GIF,TIF и т.д.). Но они нужны чисто для хранения на внешних носителях и передачи между компьютерами.
А в тамагочи разрабы вполне могли обойтись хранящимися в ПЗУ битовыми масками. Тогда проще всего хранить изображение из 3 градаций серого в 2-х битовых маскированых матрицах (2 бита на пиксель, все значения 00,01,10,11). И даже остаётся ещё одно избыточное значение, которое тоже можно куда-либо приспособить, например, как признак отсутствие значения(цвета), как раз это и были бы прозрачные пикселы, формирующие внешнюю форму (маску) объекта.
Да, это фишка Жабы, при == проверяется нечто типа сходства адресов двух строк (объектов), а не сами строки (объекты). Сравнивать таким образом можно (без ухищрений заумных) только переменные примитивных типов.
Сергей Горностаев, это же лениво, да и не нужно, на самом то деле. Денег не несёт, революции не предвидится. Так для чего трудиться? Это Звончук ещё не понял, что буря страстей бурлит в стакане воды, вот и интересуется))
Сергей Горностаев, возможно, потому, что тайные диктатуры уже заложили такие бэкдуры для себя, а вторичным и тоталитарным не дают этим воспользоваться. Впрочем, как и всеми другими своими реальными технологиями. Вот и приходится бедолагам выкручиваться, при этом являясь вторичными к тайным диктатурам, и оттягивая праведный гнев населения на себя. Оттого и так много платят этим самым диктатурам, в валютах тайных, естественно. За унижение платят.
BorLaze, РФ-понятие патриотизма есть чисто местное явление, возбуждаемое искусственно. На Украине можно найти много сходства с этим явлением, кстати. В основном в официальных источниках.
Отдельным людям, для спокойствия, лучше обходиться без этого понятия вообще, пока дело происходят в рамках пост-СССР, по кр. мере.
xsd служит для контроля xml файлов. Теоретически, его можно пытаться использовать и для генерации псевдо-xml, которые пройдут проверку этим самым xsd. Но таких средств не знаю. Хотя написать подобный код возможно. В качестве упражнения для понимания xsd - вполне интересная и полезная задача!
Stalker_RED, это марсиане, не иначе. А паренёк работает на их контору, переводит с марсианского языка программирования (он там один, устоялся за 10 000 марсианских лет) на java (он самый похожий). Правильный выбор!
1. Проходим по всем её отрезкам, считаем сумму их длины (Ls).
2. Определяем геометрическую середину полилинии Lm = Ls/2;
3. Снова идём по отрезкам, пока не обнаруживаем, что текущий счётчик сумм длин отрезков Lс не оказывается больше или равен Lm. Это означает что мы либо нашли среднюю точку (если Lc==Lm точно) либо нашли отрезок, на котором и должна находиться средняя точка!
3. Определяем положение искомой точки на текущем отрезке, которая будет размещена на текущем отрезке полилинии состоящем из точек PN и PN+1 (с расстоянием между ними DN) на расстоянии DM = Lm - Lc + DN от точки PN (начало полилинии).
4. Вычисляем координаты найденной точки по полученной пропорции DM/DN, прибавляя разницу к X и Y для точки PN и рисуем её.