Покрытие земли с шестиугольными мозаиками карты

Ответ заключался в использовании switctMap, а не map

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> 
{
    if (!request.url.startsWith('/api')) {
        return next.handle(request)
    }

    const cloned = request.clone()
    return next.handle(request)
        .pipe(
            catchError((error: any) => {
                if (error.status !== 401) {
                    return throwError(error)
                }
                return from(this.sessionService.refresh())
                    .pipe(switchMap(() => next.handle(cloned)))
        })
    )
}

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

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    if (
        !request.url.startsWith('/api') || 
        this.sessionService.isValid
    ) {
        return next.handle(request)
    }

    return from(this.sessionService.refresh())
        .pipe(switchMap(() => next.handle(request)))
}
60
задан Mihai Limbășan 14 April 2009 в 20:52
поделиться

8 ответов

Получение сферы для разделения на равные части, сделанные с помощью плоские поверхности это крепкий орешек. Из-за этого вы получите геодезических фигур , которые не состоят из фигур, которые могут в свою очередь состоять из треугольников одинакового размера. Разбивая все шестиугольники и пятиугольники на треугольники, вы получаете треугольники с разными внутренними углами, что приводит к потере симметрии.

Единственное утешение, которое я могу вам дать, заключается в том, что все формы будут иметь ограниченный количество треугольников, которые можно разделить, что означает для небольшой геодезической, что 5 или 6 треугольников могут многократно использоваться для описания всех шестиугольников и пятиугольников, необходимых для геодезической. Хотя расстояния не будут равны «центру» каждого треугольника / фигуры, вы можете, по крайней мере, разделить обработку каждого треугольника на отдельный случай, предоставляя потенциальный обходной путь в коде.

4
ответ дан Avery Payne 24 November 2019 в 17:38
поделиться

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

12
ответ дан GoatRider 24 November 2019 в 17:38
поделиться

Первый сайт, который приходит на ум Информация об игровом программировании Амитов и набор ссылок на гексагональных сетках.

17
ответ дан Michael Kristofik 24 November 2019 в 17:38
поделиться

Невозможно покрыть сферу обычными плитками (кроме длинных и тонких «апельсиновых ломтиков». Так что оптимальный способ пикселизации карты, учитывая определенные ограничения или требования, на самом деле является довольно сложной исследовательской задачей.

Одним из видов листов, используемых очень часто (в астрофизике), является пикселизация HEALPIX: http: //healpix.sourceforge. net /

Эта пикселизация удовлетворяет требованию равной площади, однако невозможно сделать все равноотстоящими.

Еще одна пикселизация - это «GLESP», которая имеет некоторые другие свойства (и не так отполирована, как программный пакет): http://www.glesp.nbi.dk/

19
ответ дан Benjamin 24 November 2019 в 17:38
поделиться

Я ржавый с структурами, поэтому я, вероятно, здесь отсутствует несколько ключевых слов , Но почему бы не начать с глобальной структуры с инициализированными значениями по умолчанию, скопируйте ее в локальную переменную, Посмотрите HTM для аналогичной вещи с треугольниками или Google для «Иерархическая треугольная сетка» для других источников.

9
ответ дан Erich Mirabal 24 November 2019 в 17:38
поделиться

Точный диапазон, который вы можете представить, зависит от множества факторов в вашей реализации, но вы можете уменьшить ограничить его, сказав, что, если поле экспоненты установлено в 0, вы можете точно представлять целые числа вплоть до ширины поля мантиссы (в предположении знакового бита). Для двойной точности IEEE 754 это означает, что вы можете точно представлять 52-битные числа. В целом ваша мантисса будет больше половины ширины всей структуры.

только их граница - здесь на самом деле то же самое)

Если вы хотите использовать только шестиугольники для мозаичного изображения сферы, вы получите x шестиугольников с 6 * x краями. Однако одно ребро совместно используется каждой парой шестиугольников. Итак, мы хотим считать только 3 * x из них и 6 * x вершин, но, опять же, каждый из них разделен на 3 шестиугольника, так что вы получите 2 * x ребер.

Теперь, используя формулу:

x - 3 * x + 2 * x = 2

вы в конечном итоге получаете ложное утверждение 0 = 2 - так что вы действительно не можете использовать только шестиугольники.

Вот почему классический Футбольный мяч выглядит так, как будто он есть - конечно, современные более модные, но основной факт остается.

23
ответ дан 24 November 2019 в 17:38
поделиться

Старая ролевая игра «Путешественник», использовавшаяся для отображения поверхностей планет в виде икосаэдров (вырезан для печати в книге). Это привело к сильному искажению угловых шестиугольников (они должны стать пятиугольниками). Вы можете найти такие материалы при поиске GURPS Traveler.

4
ответ дан 24 November 2019 в 17:38
поделиться

Прочитайте статью "Геодезические дискретные системы глобальных сетей" Кевина Сахра, Дениса Уайта и А. Джона Кимерлинга

Вы можете найти ее здесь...

11
ответ дан 24 November 2019 в 17:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: