Краткий отчет об отпуске на Кипре с компанией Библио-Глобус

В связи с последними мировыми событиями собрались было в Крым, но смутили конские цены на перелет Санкт-Петерубрг — Симферополь. Поэтому, недолго думая, махнули на Кипр. Крым-то наш, а вот Кипр могут и прикрыть.

Выход здесь!

Тур покупали в фирме «Атлас», которая закрылась через неделю после нашего возвращения. Поэтому рекомендовать её не буду. (:

Первое, чем нас встретил гостеприимный Кипр — это огромная очередь. Мы летели на двухэтажном самолёте «Боинг» компании «Трансаэро», он вмещает в себя большое количество пассажиров, поэтому очередей к паспортному контролю было штуки четыре.

С моим отменным чутьем на очереди мы заняли самую длинную и каким-то образом в самом конце, хотя из самолёта выбежали далеко не последними.

Пройдя паспортный контроль, забрали чемодан и вышли на свежий воздух к стоянке, куда нас направил представитель туроператора. Второе, что поразило — это монополия компании «Библио-Глобус». Их автобусов было штук двадцать.

Как оказалось позже, они здесь ходят чаще общественного транспорта. Между прочим, туристы из России вырвались на первое место по количеству отдыхающих, что не удивительно, учитывая размах туроператора.

Усевшись в автобусе покатили из города Лимассол в Протарас. Местность за окном такая же, как на островах Мальта и Кос, только земля красного цвета, как на Марсе. Берег в основном скалистый и обрывистый.

Как-то, гуляя по окрестностям отеля, хотели выйди к морю, но не удалось. Вроде бы вот оно — через пятьдесят шагов откроется уютный пляж, ан нет — четырехметровый обрыв. Зато поздним вечером увидели маленькую змейку на тропинке.

Пещера Циклопа

Раз уж я забежал вперёд, пару слов об отеле, где мы расположились под названием «Paramount Hotel Apartments».

Четырёх звёзд там нет, бассейна два, а не один, как кажется на фото, и они мелкие, в самом глубоком месте 1.4 метра. Еда нормальная, хотя я и непривередлив — ем всё, если это не рисовая каша, кабачки или холодец, или рыба с костями.

Отель Paramount Holte Apartmens

На ресепшене работают две русскоговорящие женщины посменно. Так вот они ни разу не здоровались первыми, про дежурную улыбку тоже забудьте. Я хоть и не фанат западного лицемерия, но уж как-то к этому привык в Европе, когда персонал «как бы рад» тебя видеть.

Ванну принять побоялся, предварительно её лучше тщательно вымыть, а вот душ вполне себе ничего, вода льется хорошо и тёплая есть. В номере есть тостер, холодильник без морозилки и электрическая плита с двумя конфорками. В шкафу есть сейф. Не хватало чайника, но мы под это дело приспособили кастрюлю. Мы ведь можем и лезвием бритвенным с деревяшкой и проводами воду вскипятить, поэтому дискомфорта не испытывали.

Платный интернет доступен только на ресепшене по WiFi по грабительским ценам (30 евро за семь дней) и принимает далеко не во всех номерах. Ну ещё русских полно, но я это недостатком не считаю, пусть соотечественников стыдятся те, кого в детстве головой о твердое приложили.

Не понравилось заселение — сказано в два часа дня, значит заселяют в два часа дня, пусть даже номер помыт уже четыре раза и от старых жильцов ни следа, ни запаха не осталось. А так отель как отель, у нас таких в Петербурге полно ещё с советских времен, только без бассейна.

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

Голубая лагуна

Не спеша мы подумали и я решил взять «Гранд-тур» и покатушки на судне с целью обозреть подходы к пляжам.

На судне понравилось, ведь это была моя первая прогулка по морю, где я не сгорел, ну только самую малость, а не полностью, как обычно. Три остановки в бухтах с голубой водой и обед по типу «шведский стол». Плюс крыша над головой и бар в шаговой доступности.

Судно, что интересно, тоже принадлежит компании Библио-Глобус. Правда, обычно в морских прогулках мы начинали и заканчивали в одном месте, а тут из города Протарас в Лимассол по морю, обратно автобусом.

Церковь на острове Кипр

Всего прогулка длилась часов пять, но фоток не покажу, потому что флешка с ними поспешно скончалась сразу по приезду домой, на родину. Видимо не выдержала нашего сурового климата или все таки надо было пользоваться значком «безопасное извлечение устройства» — не знаю.

Симпатичный домик в деревне (остров Кипр)

Гранд-тур представляет собой поездку на автобусе по большей части острова. Надо сказать, что остров довольно большой, хотя на глобусе можно мизинцем закрыть. Всего проехали 340 километров. В основном поездка проходит по центральной части острова, в горах. Максимальная высота километр с копейками. В горах климат помягче, хоть и жарко, но дышать можно свободно. Во время поездки посетили мужской монастырь и пару деревушек.

Привет из Питера!

Поездка на Кипр была в середине августа.

Практическое применение B-сплайна (B-Spline) в программировании

Полтора дня разбирался в работе B-сплайна и как это применяется на практике. Хочу поделиться с вами результатами моих изысканий.

Немного теории

Допустим, у вас есть некий массив точек размером n. Что вам потребуется для работы B-сплайна:

  • определить количество интерполируемых точек (от этого зависит скорость работы, гладкость получившейся кривой и размер формулы для вычисления, количество точек равно k+1)
  • избавится от рекурсии формулы для вычисления

Общая формула для расчета коэффициентов:
N_{i,k}(x)=\frac{x-t_i}{t_{i+k-1}-t_i}N_{i,k-1}(x)+\frac{t_{i+k}-x}{t_{i+k}-t_{i+1}}N_{i+1,k-1}(x)

Формула рекурсивная и заканчивается на k равном единице:
N_{i,1}(x)=\begin{cases}1&\text{if }t_i\leq x\text{\textless} t_{i+1}\\0&\mathrm{otherwise}\quad\end{cases}

Пояснения к формуле:

  • если делитель получается равным или близким по значению к нулю, значит вся дробь равна нулю
  • параметр i — это индекс текущей точки
  • x — значение от i до i + 1 с нужным вам шагом (например, i равно 7, и нам нужно создать 3 точки для интерполяции, значит берем x равным 7.0, 7.5, 8.0)
  • t — неубывающий массив индексов

Вычисление элементов массива t:
t=\begin{cases}0,&\mathrm{if}\ i<k\\i-k+1,&\mathrm{if}\ k\leq{i}\leq{n}\\n-k+2,&\mathrm{if}\ i>n\end{cases}

Практика

Мне нужно было интерполировать по четырем точкам, поэтому я заранее на бумажке вычислил формулу без рекурсии:

N_{i,3}(x)=\begin{cases}0,&\mathrm{if}\ x\text{\textless} t_{i}\\\frac{x-t_i}{t_{i+2}-t_i}*\frac{x-ti}{t_{i+1}-ti},&\mathrm{if}\ t_i\leq x\text{\textless} t_{i+1}\\\frac{x-ti}{t_{i+2}-ti}*\frac{t_{i+2}-x}{t_{i+2}-t_{i+1}}+\frac{t_{i+3}-x}{t_{i+3}-t_{i+1}}*\frac{x-ti}{t_{i+2}-t_{i+1}},&\mathrm{if}\ t_{i+1}\leq x\text{\textless} t_{i+2}\\\frac{t_{i+3}-x}{t_{i+3}-t_{i+1}}*\frac{t_{i+3}-x}{t_{i+3}-t_{i+2}},&\mathrm{if}\ t_{i+2}\leq x\text{\textless} t_{i+3}\\0,&\mathrm{if}\ x\geq t_{i+3}\end{cases}

Про бумажку я, конечно, соврал, мне было удобнее сделать функцию на питоне вот такого вида:

def div(a, b):
    try:
        return a / float(b)
    except ZeroDivisionError:
        return 0

def N(i, k, x, t):
    if 1 == k:
        if t[i] <= x < t[i + 1]:
            return 1.0
        return 0.0
    a = div(x - t[i], t[i + k - 1] - t[i]) * N(i, k - 1, x, t)
    b = div(t[i + k] - x, x[i + k] - x[i + 1]) * N(i + 1, k - 1, x, t)
    return a + b

После этого добавил условие k==2 и все возможные возвращаемые значения в зависимости от x, затем условие k==3, значения которого зависят от k==2. Может вам будет удобнее все это сделать на бумажке.

Наконец можно приступать к интерполяции. Формула такая: \sum\limits_{i}^{i+k}=\vec{p_{i}}N_{i,k}(x)

Если индекс точки меньше нуля, берем нулевую точку, если индекс точки больше размера массива, то берем последнюю точку в массиве.

Небольшой пример

У нас есть некий массив точек, нам надо интерполировать с пятой по шестую точки с шагом 0.25, при этом $k$ равно 3 (значит для интерполяции нужно взять четыре точки).

p_0=p_5*N_{0,3}(0.0)+p_6*N_{1,3}(0.0)+p_7*N_{2,3}(0.0)+p_8*N_{3,3}(0.0)\newline p_1=p_5*N_{0,3}(0.25)+p_6*N_{1,3}(0.25)+p_7*N_{2,3}(0.25)+p_8*N_{3,3}(0.25)\newline p_2=p_5*N_{0,3}(0.5)+p_6*N_{1,3}(0.5)+p_7*N_{2,3}(0.5)+p_8*N_{3,3}(0.5)\newline p_3=p_5*N_{0,3}(1.0)+p_6*N_{1,3}(1.0)+p_7*N_{2,3}(1.0)+p_8*N_{3,3}(1.0)\newline

Итого четыре новых точки вместо двух.

Спасибо за внимание, надеюсь нигде не ошибся. На несложные вопросы по теме могу ответить в комментариях.

Как в России и США помогают незнакомым людям на улице

Намедни в интернете выложили ролик — как в России и США помогают людям, которым вдруг стало плохо на улице.

Видео, что очевидно любому креаклу, как бы показывало нам, простым ватникам, что в России никто к тебе на улице не подойдет, а в США тебя тут же окружает толпа добропорядочных граждан с вопросом «Чем могу вам помочь?».

Оказалось, что ролик про Россию — это монтаж. Подробности разоблачения можно прочитать в записи «Разоблачаем ! В России никто не поможет ?» юзера ЖЖ masterok.

Если вкратце, то авторы ролика про Россию просто вырезали моменты, когда граждане пытаются помочь. Ну что на это можно сказать…

Устройство для измерения углов

Приобрел намедни простое в управлении и полезное в быту устройство для измерения углов.
Устройство для измерения углов

Позволяет измерять внутренние углы.
Измерение внутреннего угла

Тут у нас 60 градусов.
Измерение внутреннего угла: результат

Фото поближе. По аналогии со штангенциркулем есть возможность вычислить точный угол, как мне кажется.
Измерение внутреннего угла: результат

Через три часа после покупки понял, как измерять внешние углы.
Измерение внешнего угла

Примерно 87.5 градусов.
Измерение внешнего угла: результат

Теперь жизнь заиграла новыми красками, как без него раньше обходился — не понимаю.

У вас есть углы в квартире? Тогда это устройство просто создано для вас.

Личный блог Евгения Жирнова