Болезни Военный билет Призыв

Мастер-класс «Новогодние шары» из бумаги своими руками. Что такое геодезический купол

Сферический треугольник и его применение.

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

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

Свойства сферического треугольника:

  1. Помимо трёх признаков равенства плоских треугольников, для сферических треугольников верен ещё один: два сферических треугольника равны, если их соответствующие углы равны.
  2. Для сторон сферического треугольника выполняются 3 неравенства треугольника: каждая сторона меньше суммы двух других сторон и больше их разности.
  3. Сумма всех сторон a + b + c всегда меньше 2πR.
  4. Величина 2πR − (a + b + c) называется сферическим дефектом
  5. Сумма углов сферического треугольника s = α + β + γ всегда меньше 3π и больше π
  6. Величина называется сферическим избытком или сферическим эксцессом
  7. Площадь сферического треугольника определяется по формуле.
  8. В отличие от плоского треугольника, у сферического треугольника может быть два, и даже три угла по 90° каждый.

Среди всех сферических многоугольников наибольший интерес представляет сферический треугольник. Три больших окружности, пересекаясь попарно в двух точках, образуют на сфере восемь сферических треугольников. Зная элементы (стороны и углы) одного из них, можно определить элементы все остальных, поэтому рассматривают соотношения между элементами одного из них, того, у которого все стороны меньше половины большой окружности. Стороны треугольника измеряются плоскими углами трехгранного угла ОАВС, углы треугольника – двугранными углами того же трехгранного угла см на рис.

Свойства сферических треугольников во многом отличаются от свойств треугольников на плоскости. Так, к известным трем случаям равенства прямолинейных треугольников добавляется еще и четвертый: два треугольника АВС и А`В`С` равны, если равны соответственно три угла РА = РА`, РВ = РВ`, РС = РС`. Таким образом, на сфере не существует подобных треугольников, более того, в сферической геометрии нет самого понятия подобия, т.к. не существует преобразований, изменяющих все расстояния в одинаковое (не равное 1) число раз. Эти особенности связаны с нарушением евклидовой аксиомы о параллельных прямых и также присущи геометрии Лобачевского. Треугольники, имеющие равные элементы и различную ориентацию, называются симметричными, таковы, например, треугольники АС`С и ВСС`

Сумма углов всякого сферического треугольника всегда больше 180°. Разность РА+РВ +РС – p = d (измеряемая в радианах) – величина положительная и называется сферическим избытком данного сферического треугольника. Площадь сферического треугольника: S = R2 d где R – радиус сферы, а d – сферический избыток. Эта формула впервые была опубликована голландцем А.Жираром в 1629 и названа его именем.

Если рассматривать двуугольник с углом a, то при 226 = 2p/n (n – целое число) сферу можно разрезать ровно на п копий такого двуугольника, а площадь сферы равна 4пR2 = 4p при R = 1, поэтому площадь двуугольника равна 4p/n = 2a. Эта формула верна и при a = 2pт/п и, следовательно, верна для всех a. Если продолжить стороны сферического треугольника АВС и выразить площадь сферы через площади образующихся при этом двуугольников с углами А, В, С и его собственную площадь, то можно прийти к вышеприведенной формуле Жирара.

Под сферическим треугольником подразумевается треугольник на поверхности сферы, составленный из дуг больших кругов – т. е. таких окружностей, центром которых является центр сферы. Углы сферического треугольника – это углы между касательными к его сторонам, проведенными в его вершинах. Как и углы обычного треугольника, они меняются от 0 до 180°. В отличие от плоского треугольника, у сферического сумма углов не равна 180°, а больше: в этом нетрудно убедиться, рассмотрев, например, треугольник, образованный дугами двух меридианов и экватора на глобусе: хотя меридианы сходятся в полюсе, оба они перпендикулярны экватору, а значит, у этого треугольника два прямых угла!

У сферического треугольника может быть два прямых угла

Уже у индийца Варахамихиры (V–VI вв.), у арабских математиков и астрономов начиная с IX в. (Сабит ибн Корра, ал-Баттани), а у западных математиков начиная с Региомонтана (XV в.) встречается в различных формулировках замечательная теорема о сферических треугольниках. Вот как она может быть сформулирована в современных обозначениях:

cosa = cosbcosc + sinbsinccosA. Сферическая теорема косинусов очень важна и для астрономии, и для географии. Эта теорема позволяет по координатам двух городов A и B находить расстояние между ними. Кроме того, математикам стран ислама сферическая теорема косинусов помогала в решении другой практической задачи: в городе с данными координатами находить направление на священный город Мекку (всякий правоверный мусульманин должен пять раз день молится в направлении Мекки). При решении этой задачи, считая город B Меккой, требовалось найти угол A того же треугольника.

Страница из «Собрания правил науки астрономии», XI в., автор неизвестен.

В астрономии сферическая теорема косинусов позволяет переходить из одной системы координат на небесной сфере в другую. Чаще всего используются три такие системы: у одной экватором служит небесный экватор, а полюсами – полюсы мира, вокруг которых происходит видимое суточное вращение светил; у другой экватором является эклиптика – круг, по которому в течение года совершается видимое движение Солнца на фоне звезд; у третьей роль экватора выполняет горизонт, а роль полюсов – зенит и надир. В частности, благодаря сферической теореме косинусов можно вычислять высоту Солнца над горизонтом в разные моменты времени и в разные дни в году.

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

Купол на парусах Роспись паруса

ДжорджНельсон (George Nelson)

"Дизайнер может несколько расслабиться и развлечься; в результате может возникнуть шутка, забава. Удивительно, как часто это бывает очень значительная забава" Джордж Нельсон

Джордж Нельсон – американский дизайнер, архитектор, критик и теоретик дизайна. (1908, Хартфорд, Коннектикут – 1986, Нью-Йорк)

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

Наиболее известные дизайн проекты Джорджа Нельсона представляют собой виртуозную стилизацию геометрических форм в духе оп-арта или геометрического абстракционизма.

Форму своего знаменитого черного стула дизайнер строит на основе сферического треугольника, широко использовавшегося в архитектурных конструкциях купольных сооружений. В частности в византийских и русских храмах такой сферический треугольник назывался «парус». Благодаря «парусу» осуществлялся плавный переход от подкупольной опоры к куполу.

ДжорджНельсон (George Harold Nelson, 1908-1986 гг.)

гравюра Эшера

Концентрические сферы.1935г.Торцовая гравюра 24 на 24 см.

Четыре полые концентрические сферы освещены центральным источником света. Каждая сфера состоит из сетки, образованной девятью большими пересекающимися кольцами; они членят сферическую поверхность на 48 подобных сферических треугольников. Ма́уриц Корне́лис Э́шер (нидерл. Maurits Cornelis 17 июня 1898, Леуварден, Нидерланды - 27 марта 1972, Ларен, Нидерланды) - нидерландский художник-график.

Применение сферического треугольника:

  1. Использование в трехмерной графике сферических треугольников
  2. В астрономии
  3. В географии. Теорема сферического треугольника позволяет по координатам двух городов A и B находить расстояние между ними.
  4. В архитектруе
  5. В дизайне в виде стула от Джорджа Нельсона
  6. В гравюре

Сферические треугольники.

На поверхности шара кратчайшее расстояние между двумя точками измеряется вдоль окружности большого круга, т. е. окружности, плоскость которой проходит через центр шара. Вершины сферического треугольника являются точками пересечения трех лучей, выходящих из центра шара, и сферической поверхности. Сторонами а, b, с сферического треугольника называют те углы между лучами, которые меньше 180°. Каждой стороне треугольникасоответствует дуга большого круга на поверхности шара (рис. 1). Углы A, В, С сферического треугольника, противолежащие сторонам а, b, с соответственно, представляют собой, по определению, меньшие, чем 180°, углы между дугами больших кругов, соответствующими сторонам треугольника, или углы между плоскостями, определяемыми данными лу-чами.

Свойства сферических треу-гольников.

Каждая сторона и угол сфери-ческого треугольника по определению мень-ше 180°. Геометрия на поверхности шара являет-ся неевклидовой; в каждом сферическом треугольнике сумма сторон заключена между 0 и 360°, сумма углов заключена между 180° и 540°. В каждом сферическом треуголь-нике против большей стороны лежит больший угол. Сумма любых двух сторон больше третьей стороны, сумма любых двух углов меньше, чем 180° плюс третий угол.

Сферический треугольник единственным образом определяется (с точностью до преобразования симметрии):

  • тремя сторонами,
  • тремя углами,
  • двумя сторонами и заключенным между ними углом,
  • стороной и двумя прилежащими к ней углами.

Решение сферических треугольников (Таблица)

(смотрите формулы ниже и рис. 1 выше)

Формулы для вычисления

Условия существования решения

1

Три стороны

а, Ь, с

А, В, С

Сумма двух сторон должна быть больше третьей

2

А, В, С

а, Ь, с из (8) и циклической перестановки

Сумма двух углов должна быть меньше 180° плюс третий угол

3

Две стороны и заключенный между ними угол

b, с, А

из (6), затем В и С ; а из (7), (8) или (4)

4

Два угла и заключенная между ними сторона

В, С, а

из (6), затем b и с; А из (7), (8) или (5)

5

Две стороны и противолежащий одной из них угол

Ь, с, В

С из (3); А и а из (6)

sin с sin В ≤ sin b .

Сохраняются те из величин с , для которых А - В и а - b имеют одинаковый знак;

A + B - 180°

и а + b - 180°

6

Два угла и противолежащая одному из них сторона

В, С, b

с из (3); А и а из (6)

Задача имеет одно или два решения, если

sin b sin С ≤ sin В .

Сохраняются те из величин с , для которых A - В и а - b имеют одинаковый знак;

A + В - 180°

и а + Ь - 180°

также должны быть одного знака

Формулы для решения сферических треугольников

В следующих ниже соотношениях А, В, С являются углами, противолежащими соответственно сторонам а, b, с сферического треугольника. «Радиусы» описанного и вписанного конусов обозначены соответственно через г и р. Формулы, не включенные в перечень, могут быть получены одновременной циклической перестановкой А, В, С и а, Ь, с . Таблица выше позволяет вы-числять стороны и углы любого сферического треугольника потрем подходящим образом заданным сторонам и/или углам. Неравенства, отмеченные в начале п. 2, должны быть приняты во внимание, для того чтобы исключить посторонние результаты при решении треугольников.

теорема синусов

теорема косинусов для сторон

теорема косинусов для углов

аналогии Непера

аналогии Деламбра и Гаусса

Таким образом, если имеются в наличии таблицы функции hav, то для решения сфе-рических треугольников можно использовать эти формулы:

Другие аналогичные соотношения можно получить циклической перестановкой

История этой демки такова: однажды один мой друг сделал для своей игры генератор карт планет и захотел, чтобы созданные таким образом карты показывались в виде вращающейся сферы. Однако, при этом он не хотел использовать 3D-графику, а вместо этого сгенерировал множество кадров с этой самой сферой, повёрнутой на разные углы. Количество используемой памяти было… скажем так, избыточным, ну а скорость генерации кадров (как и качество их исполнения) сильно страдала. Чуть подумав, мне удалось помочь ему оптимизировать этот процесс, но в целом меня не покидало справедливое ощущение того, что это задача для OpenGL, а вовсе не для 2D-графики.

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

И должен сказать, что у меня это получилось. Но обо всём по порядку.

Математика процесса

Для начала определимся с собственно задачей. Для каждой точки на экране у нас имеются две экранные координаты в декартовой системе координат, и нам необходимо найти для неё сферические координаты (фактически, широту и долготу), которые по сути и являются текстурными координатами для карты планеты.

Итак. Переход от декартовой системы координат к сферической задаётся системой уравнений (взято с Википедии):

а обратный переход - такими уравнениями:

Координату Z мы легко можем получить из X и Y , зная радиус, а сам радиус мы можем принять равным единице.
В дальнейшем договоримся о том, что приведённые выше уравнения мы слегка изменим, поменяв местами понятия Y (у нас это будет экранная вертикаль) и Z (это будет глубина сцены).

Техническая часть

Реализация идеи потребует от нас применения квада (я уже писал о том, как его использовать, поэтому повторяться не буду, тем более что ниже приведена ссылка на полный исходный код проекта), а также двух текстур: собственно карты планеты (я использовал текстуру Земли размера 2048x1024) и карты текстурных координат. Код генерации второй текстуры аккуратно повторяет математику преобразования из декартовых координат в сферические:

Int texSize = 1024; double r = texSize * 0.5; int pixels = new int; for (int row = 0, idx = 0; row < texSize; row++) { double y = (r - row) / r; double sin_theta = Math.sqrt(1 - y*y); double theta = Math.acos(y); long v = Math.round(255 * theta / Math.PI); for (int col = 0; col < texSize; col++) { double x = (r - col) / r; long u = 0, a = 0; if (x >= -sin_theta && x <= sin_theta) { double z = Math.sqrt(1 - y*y - x*x); double phi = Math.atan2(z, x); u = Math.round(255 * phi / (2 * Math.PI)); a = Math.round(255 * z); } pixels = (int) ((a << 24) + (v << 8) + u); } } GLES20.glGenTextures(1, genbuf, 0); offsetTex = genbuf; if (offsetTex != 0) { GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, offsetTex); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_NONE); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_NONE); GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, texSize, texSize, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, IntBuffer.wrap(pixels)); }

Отметим, что координаты X и Y переводятся из диапазона в диапазон [-1..1], а текстурные координаты U и V переводятся из радианов в диапазон , после чего записываются соответственно в красную и зелёную компоненты 32-битной текстуры. Альфа-канал используется для сохранения «глубины» (координаты Z ), а синий пока остаётся незадействованным. Отключение билинейной фильтрации также не случайно: на данном этапе она не даёт какого-либо эффекта (соседние точки в любом случае имеют одни и те же значения, с довольно резкими скачками), а в том, что я собираюсь показать дальше, она и вовсе будет вредна. Но об этом ниже.

Private final String quadFS = "precision mediump float;n" + "uniform sampler2D uTexture0;n" + "uniform sampler2D uTexture1;n" + "uniform float uOffset;n" + "varying vec4 TexCoord0;n" + "void main() {n" + " vec4 vTex = texture2D(uTexture0, TexCoord0.xy);n" + " vec3 vOff = vTex.xyz * 255.0;n" + " float hiY = floor(vOff.y / 16.0);n" + " float loY = vOff.y - 16.0 * hiY;n" + " vec2 vCoord = vec2(n" + " (256.0 * loY + vOff.x) / 4095.0 + uOffset,n" + " (vOff.z * 16.0 + hiY) / 4095.0);n" + " vec3 vCol = texture2D(uTexture1, vCoord).rgb;n" + " gl_FragColor = vec4(vCol * vTex.w, (vTex.w > 0.0 ? 1.0: 0.0));n" + "}n";

Ну это же совсем другое дело! С небольшими изменениями (добавив масштабирование «щипком» и вращение пальцем) я эту программу показывал своим друзьям и колегам, и при этом спрашивал, сколько, по их мнению, в этой сцене треугольников. Результаты варьировались, да и сам вопрос вызывал подозрение в наличии подвоха (в этом случае респонденты шутили «один», что было недалеко от истины), но правильный ответ стабильно удивлял. И все, как один, спрашивали: а почему сферу можно крутить вокруг одной оси, но нельзя наклонять?.. Хм.

Наклон

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

В сущности, задача сводится к тому, чтобы взять смещённую координату V , тогда как координата U не меняется: это происходит потому, что мы добавляем вращение вокруг оси X . План такой: преобразуем текстурные координаты в экранные (в диапазоне [-1..1]), применяем к ним матрицу поворота вокруг горизонтальной оси (для этого заранее запишем в новую константу uTilt синус и косинус угла наклона), а дальше воспользуемся новой координатой Y для выборки в нашей шаблонной текстуре. «Повёрнутая» координата Z нам тоже пригодится, с её помощью мы отзеркалим долготу для обратной стороны шарика). Экранную координату Z придётся посчитать явно, чтобы не делать две текстурных выборки из одной текстуры, заодно это повысит её точность.

Private final String quadFS = "precision mediump float;n" + "uniform sampler2D uTexture0;n" + "uniform sampler2D uTexture1;n" + "uniform float uOffset;n" + "uniform vec2 uTilt;n" + "varying vec4 TexCoord0;n" + "void main() {n" + " float sx = 2.0 * TexCoord0.x - 1.0;n" + " float sy = 2.0 * TexCoord0.y - 1.0;n" + " float z2 = 1.0 - sx * sx - sy * sy;n" + " if (z2 > 0.0) {;n" + " float sz = sqrt(z2);n" + " float y = (sy * uTilt.y - sz * uTilt.x + 1.0) * 0.5;n" + " float z = (sy * uTilt.x + sz * uTilt.y);n" + " vec4 vTex = texture2D(uTexture0, vec2(TexCoord0.x, y));n" + " vec3 vOff = vTex.xyz * 255.0;n" + " float hiY = floor(vOff.y / 16.0);n" + " float loY = vOff.y - 16.0 * hiY;n" + " vec2 vCoord = vec2(n" + " (256.0 * loY + vOff.x) / 4095.0,n" + " (vOff.z * 16.0 + hiY) / 4095.0);n" + " if (z < 0.0) { vCoord.x = 1.0 - vCoord.x; }n" + " vCoord.x += uOffset;n" + " vec3 vCol = texture2D(uTexture1, vCoord).rgb;n" + " gl_FragColor = vec4(vCol * sz, 1.0);n" + " } else {n" + " gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);n" + " }n" + "}n";

Ура, наклон удался! Вот только странный шум на границе полушарий немного смущает. Увы, с этим мне пока не удалось справиться. Очевидно, проблема кроется в недостаточной точности адресации в граничных точках (точки на самой окружности соответствуют слишком большому диапазону координат, один тексель расползается на интервал довольно заметной длины), и с этим вряд ли что-то можно поделать. Что ж, зато можно приближать и скроллить шарик почти так же, как в Google Earth. С тем отличием, что здесь - всего-навсего два треугольника.

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

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

Иметь одну и ту же площадь;

Быть одинаковой формы;

Быть регулярно расположенными;

Обладать округлой формой;

Разбиение должно обеспечивать достаточно хорошее угловое разрешение;

Должны существовать повороты, которые переводят разбиение само в себя.

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

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

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

Рис. 16.13. Разбиение сферы на элементы меридианами и параллелями. К сожалению, такое разбиение обладает лишь немногими свойствами, требуемыми для хранения гистограммы ориентации.

Рис. 16.14. (см. скан) Проектирование додекаэдра и икосаэдра на единичную сферу для получения разбиения на и ячеек.

известно лишь пять правильных тел, из которых и приходится выбирать (тетраэдр, гексаэдр, октаэдр, додекаэдр и икосаэдр). Для додекаэдра ячейки достаточно округлы (рис. 16.14, а). Додекаэдр, однако, обладает всего двенадцатью гранями. Даже икосаэдр дает весьма грубое представление ориентации (рис. 16.14, б). К тому же двадцать его ячеек не слишком округлы.

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

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

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

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

форма некоторых граней уже перестает быть правильной. Пример разбиения, основанного на полуправильном многограннике, дает футбольный мяч (рис. 16.15, а). В качестве исходного здесь взят усеченный икосаэдр, т. е. тело, имеющее 12 пятиугольных и 20 шестиугольных граней. К сожалению, существует лишь 13 полуправильных многогранников (пять усеченных правильных многогранников, кубооктаэдр, икосододекаэдр, плосконосый куб, плосконосый икосододекаэдр, усеченный кубооктаэдр, ромбоокубоктаэдр, усеченный икосододекаэдр и ромбоикосододекаэдр). Они не приводят к достаточно мелким для наших целей разбиениям.

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

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

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

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

Пусть телесный угол, заполненный одной ячейкой на сфере, равняется (в случае икосаэдра ). Ожидаемое число нормалей, которые попадут внутрь такой ячейки, для выпуклого объекта составляет

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

Сферический треугольник и основные формулы сферической тригонометрии

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

Сферическим треугольником называется фигура АВС на поверхности сферы, образованная дугами трех больших кругов (рис. 15).

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

Обычно рассматриваются треугольники, углы и стороны которых меньше 180°. Для таких сферических треугольников сумма углов всегда больше 180°, но меньше 540°, а сумма сторон всегда меньше 360°. Разность между суммой трех углов сферического треугольника и 180° называется сферическим избытком σ , т.е.

σ = DA +DB +DC - 180°.

Площадь сферического треугольника s равна

Где R - радиус сферы, на поверхности которой образован треугольник.

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

Возьмем сферический треугольник АВС (рис. 15), образованный на сфере радиуса R и с центром в точке О.

Из вершины А проведем касательные AD и АЕ к сторонам b и с до пересечения их с продолжениями радиусов ОС и 0В, лежащих в одной плоскости с соответствующей касательной. Соединив прямой точки пересечения D и Е, получим два плоских косоугольных треугольника ADE и ODE с общей стороной DE. Применяя к этим треугольникам теоремы элементарной геометрии, напишем:

DE 2 = OD 2 + ОЕ 2 - 2OD× ОЕ × cos a,

DE 2 = AD 2 + АЕ 2 - 2AD× АЕ× cos A.

Вычитанием второго равенства из первого получим:

2OD × ОЕ× cos a = OD 2 - AD 2 + ОЕ 2 - АЕ 2 + 2AD × АЕ × cos A. (1.31)

Из прямоугольных плоских треугольников ОАЕ и ОАD следует:

OD 2 -AD 2 =R 2 ;OE 2 -AE 2 =R 2 ;

AD = R tg b ; АЕ = R tg с;

Подставив эти соотношения в формулу (1.31) и произведя соответствующие сокращения и переносы, получим

cos а = cos b cos с + sin b sin с cos A , (1.32)

т.е. косинус стороны сферического треугольника равен произведению косинусов двух других его сторон плюс произведение синусов тех же сторон на косинус угла между ними.

Формулу (1.32) можно написать для любой стороны треугольника. Напишем ее, например, для стороны b:

cos b = cos с cos a + sin с sin a cos B

и, подставив в нее cos aиз формулы (1.32), получим

cos b = cos с (cos b cos с + sin b sin с cos A) + sin с sin a cos B.

Раскрыв скобки и перенеся первый член правой части в левую, будем иметь:

cos b (1 - cos 2 с) = sin b sin с cos с cos A + sin c sin a cos B.

Заменив (1 - cos 2 с) на sin 2 с и сократив все на sin c, окончательно получим

sin a cos В = sinc cos b - cos c sin b cos A, (1.33)

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

Формула (1.33) называется формулой пяти элементов. Ее можно написать по аналогии и для произведений sin a cos С, sin b cos A, sin b cos С, sin с cos A и sin с cos В.

Решим теперь равенство (1.32) относительно cos A:

Возведя обе части последнего равенства в квадрат и вычтя их из 1, получим:

Раскрыв скобки и разделив обе части этого выражения на sin 2 а, получим

Полученное выражение совершенно симметрично относительно a, b и с, и заменяя A на В, а на b или A на С и а на с, напишем

т.е. синусы сторон сферического треугольника пропорциональны синусам противолежащих им углов; или отношение синуса стороны сферического треугольника к синусу противолежащего угла есть величина постоянная.

Три выведенных соотношения (1.32), (1.33), (1.34) между сторонами и углами сферического треугольника являются основными; из них можно получить много других формул сферической тригонометрии. Мы ограничимся выводом одной только формулы для прямоугольного сферического треугольника. Положим А = 90°; тогда sin А = 1, cos A = 0, и из формулы (1.33) получим

sin a cos В = sin с cos b.

Разделив обе части этого равенства на sin b и заменивна, согласно (1.34), будем иметь:

ctg B = sin c ctg b

т.е. отношение тангенса одного катета прямоугольного сферического треугольника к тангенсу противолежащего угла равно синусу другого катета.