Pull to refresh

Comments 51

Статью ещё не читал, но раз уж речь о сфере, хочу сразу задать вопрос, уже давно не дающий мне покоя. Хотя вопрос скорее исторический, чем математический. То что Земля шар (хотя и приблизительно), догадывались ещё древние греки. А уж к средним векам такое представление было широко распространенным. А значит предки ну просто обязаны были создать сферическую геометрию, как геометрию реальной Земли ! Да и астрономии скорее всего без сферической геометрии никакой бы не было. А с ней и навигации и мореплавания. Так что с невыполнением 5-го постулата Евклида по-идее давным-давно должны были бы свыкнуться. Спрашивается, почему же в просвещенном 19-м веке идея неэвклидовой геометрии проходила с таким трудом, что даже Гаусс постеснялся опубликовать свои работы по ней ??? Это совершенно не укладывается у меня в голове...

Геометрия на сфере уже была в древности. Понятно, что не в современном дифференциальном виде. А работа Гаусса и Лобачевского связана с другим типом неевклидовой геометрии - гиперболической

Это понятно, но копья тогда ломались именно вокруг 5-го постулата Эвклида. Чтобы отказаться от него, не нужно никакой дифференциальной геометрии. Для гиперболической геометрии достаточно представить себе поверхность, на которой геодезические расходятся, только и всего. Работы того же Лобачевского достаточно элементарны и доступны даже интересующемуся школьнику. Это был именно какой-то мозговой блок, причем даже у лучших математиков ! Вот что мне непонятно...

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

Это крайне сложный шаг.

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

Мысль совершенно наугад, не знаю что из этого получится, надо будет подумать подробнее. А что если представить себе сферу с чисто мнимым радиусом ??? Будет это такой поверхностью ??? Кроме того зачем ПОСТОЯННОЙ отрицательной кривизны ??? Берем хорошо известный гиперболический параболоид (седловину). Рассмотрим малый (но не очень малый !) участок его спадающего склона. Чем не такое представление ???

Это мысли в очень правильном направлении, представить гиперболоид очень полезно, про него будет написано в 4-ой части.

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

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

Сейчас я не очень хочу описывать недостающую деталь, чтобы сильно не спойлерить содержание 4-ой части (она на пятницу запланирована).

С нетерпением жду ! Тема реально зацепила. У Вас очень хороший стиль объяснения. А я старый дедушка, пытающийся приобщить внуков к серьёзной математике.

Сошлюсь ещё на книгу Фоменко, "Классическая дифференциальная геометрия"

Тем не менее, там дальше рассматривается пример поверхности, которая реализует часть плоскости Лобачевского.

Спасибо ! Книгу не читал, постараюсь достать. Очень и очень интересный факт, для меня неизвестный. К сожалению современная геометрия просто формально вводит метрику, и такие вопросы перестаёшь себе задавать. Слава богу есть люди, этому не подверженные...

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

В каком смысле невозможно? В R3 прекрасно вкладывается.

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

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

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

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

короче говоря, геометрия на сфере - все ещё евклидова, до тех пор, пока сфера лежит в евклидовом пространстве.

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

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

Потому что нужно было внедрить сферическую землю в техническую литературу. И сферическая земля появилась в ней в 1862 году. Это год образования международной ассоциации геодезистов. Не было необходимости пользоваться другой геометрией кроме евклидовой. И в астрономии и в мореплавании. И с тех времен и по сей день в практике только геометрия Евклида. Любая другая геометрия нужна лишь математикам. Я за 10 лет изучения убедился в этом. Те сферы деятельности где якобы практикуется другая геометрия - невозможно проверить. Только верить и не сомневаться. И да, земля плоская.

Магеллан плавал намного раньше. Да, если исходить из сферической геометрии, в идеально построенном здании коридоры верхних этажей будут шире чем в нижних, а южная стена (в северном полушарии) длиннее северной. Но разница с эвклидовой геометрией в практических случаях стремится к нулю. Но такую геометрию должны были построить хотя бы из любопытства ! С астрономией и мореплаванием честно говоря не знаю. Без понятия как это было у предков. Это нужно серьёзно изучать историю. Но так навскидку, это кажется невозможным без сферической геометрии. Хотя ещё раз, тут могу и ошибаться, слишком плохо знаю.

Привет уважаемому сообществу. Давно интересовал вопрос связанный с числом "пи" относительно сферической поверхности.

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

Вопрос следующий: чему будет равно в таком случае число "пи"?

Давай разбираться.

Не теряя общности, центр окружности можно поместить в северный полюс, а окружность определить как множество точек, равно удаленных от центра. Геометрически это будет все ещё окружностью, надетой на сферу. Расстояние от центра до такой окружности будет равно углу \theta из параметризации, как написано в статье. А длину окружности тоже легко посчитать, она равна 2 \pi \sin(\theta), длина экватора максимальная и равна 2\pi (окружность единичного радиуса), а если \theta = 0 или \pi, то окружность состоит из 0 или 1 точек соответственно.

Получается, что и длина окружности и её диаметр зависят от угла, а их отношение будет равно 2\pi \sin(\theta) / 2\theta. Если взять предел при \theta стремящемся к нулю, то получится обычное \pi. Это значит, что чем меньше окружность рассматривается, тем больше она лежит в евклидовой геометрии, неформально говоря.

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

Так вот откуда sinc функция появилась! Наверное.

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

Про какую формулу Эйлера вопрос? Про \exp(ix) = \cos(x)+i\sin(x)? Она такая, какая она есть, и другой её быть не может.

Недавно я у коллеги спрашивал: "а каким был бы мир, если бы уравнение f(xy) = f(x) + f(y) не имело решений? Как изменился бы data science?". Это уравнение - одно из определений логарифма. Без логарифма было бы ... туго. Но такая функция есть, как представить себе что её нет? Это невозможно.

В 3D комплексные числа превращаются в кватернионы, и экспонента от них формулой Эйлера уже не называются.

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

" Таким образом, в сферической геометрии число пи не постоянно, и зависит от размера окружности."

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

Вычисления вполне достоверны. В данном случае важна не форма поверхности, а кривищра пространства. Евклидово пространство, хоть 2х, хоть 3х меррое, является плоским,,и в нем число пи - таки константа.

И если мы в привычном нам 3х мерно пространстве воспроизведение эти окружности на шаре, то их центры будут лежать не на северном полюсе шара, а внутри его объёма.

Всё правильно. Осталось только выяснить в каком пространстве мы реально живём - в Евклидовом или каком-то другом?

Автор я по твоей формуле точек для сферы написал такой алгоритм

GLfloat x, y, z,r=1.0;
int count = 0;
GLfloat arr1[9];
int n;
bool b = true;
for (GLfloat i = -2.0 * 3.14; i <= 2.0 * 3.14; i += 0.01)
	for (GLfloat j = -2.0 * 3.14; j <= 2.0 * 3.14; j += 0.01)
	{
		x = r * (GLfloat)sin(i) * (GLfloat)cos(j);
		y = r * (GLfloat)sin(i) * (GLfloat)sin(j);
		z = r * (GLfloat)cos(i);
		arr1[0] = x;
		arr1[1] = y;
		arr1[2] = z;
		arr1[3] = 1.0;
		arr1[4] = 0.0;
		arr1[5] = 0.0;
		arr1[6] = 1.0;
		arr1[7] = 0.0;
		arr1[8] = 0.0;
		count++;//1577536
		n = sizeof(arr1) / sizeof(arr1[0]);
		// Copy first array to second array
		if (b)
		{
			b = false;
			std::copy(arr1, arr1 + n, buf);
		}
		else
			std::copy(arr1, arr1 + n, buf+1);
	}
// Second array to store the elements of the first array
std::cout << "n"<<n<<"ct" << count<<"bf"<< sizeof(GLfloat) * 14197824;

И что-то не пойму - рисую сферу точками, а у меня крохотная точка в центре.

То ли я что-то не то делаю, то ли формула не та.

Не пишу на C, по этому не до конца понимаю код. По моему параметризация сферы правильная. Вот код на wolfram Mathematica, который рисует сферу:

Да я уже разобрался в чем проблема

GLfloat *buf = new GLfloat[197820*9];
GLfloat x, y, z,r=0.5;
int count = 0;
GLfloat arr1[9];
int n;
for (GLfloat i = 0; i <= 3.14; i += 0.01)
	for (GLfloat j = 0; j <= 2.0 * 3.14; j += 0.01)
	{
		x = r * (GLfloat)sin(i) * (GLfloat)cos(j);
		y = r * (GLfloat)sin(i) * (GLfloat)sin(j);
		z = r * (GLfloat)cos(i);
		arr1[0] = x;
		arr1[1] = y;
		arr1[2] = z;
		arr1[3] = 1.0;//R
		arr1[4] = 0.0;//G
		arr1[5] = 0.0;//B
		arr1[6] = 1.0;//A
		arr1[7] = 0.0;//S
		arr1[8] = 0.0;//T
		count++;
		n = sizeof(arr1) / sizeof(arr1[0]);
		std::copy(arr1, arr1 + n, buf+n*count);
	}
std::cout << "n"<<n<<"count" << count<<"buf"<< sizeof(GLfloat) * 197820 *9;
...
	f->glDrawArrays(GL_POINTS, 0, 197820);

в изначальной версии кода был отрезок для углов teta и fi [-2*pi,2*pi] и еще в функции copy одного массива в другой - перезаписывалось в начало массива, не добавляясь в конец

Понимаю.

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

А перезапись конечно важна. А для какой цели эта сфера рисуется в C?

Лучше для таких вычислений переходите к целочисленным параметрам, уже их переводя в углы. А результаты скидывайте в какой-то простой 3D-формат, например obj. Тогда сможете посмотреть результаты в любом 3D-визуализаторе или редакторе. В том же Блендере к примеру.

Результаты скидывайте в 3д формат.

Немного не понял как это сделать?

Да очень просто. Вот гляньте что такое obj https://ru.wikipedia.org/wiki/Obj

Это очень простой текстовый формат, в котором задаются координаты вершин и как вершины связываются в грани. Если Вы умеете писать в файл строку с числовыми параметрами вызовом fprintf(), разберетесь за 5 минут. При желании (хотя и сложнее) можно привязать туда текстуры и даже шейдеры. Понимают его абсолютно все 3D-редакторы

Бред какой-то, виндоус не может нормально открыть

import math
f = open('example.obj','w')
try:
	f.write("o sphere \n")
	x=float()
	y=float()
	z=float()
	r=0.5
	count = 0;
	i=float(0.0)
	while i<=3.14:
		j=float(0.0)
		while j<2.0 * 3.14:
			x = float(r) * float(math.sin(i)) * float(math.cos(j))
			y = float(r) * float(math.sin(i)) * float(math.sin(j))
			z = float(r) * float(math.cos(i))
			j+=0.1
			f.write("v "+str(x)+" "+str(y)+" "+str(z)+" 1.0 0.0 0.0\n")
		i+=0.1
finally:
	f.close()

Прошу прощения, это на плюсах, причем 23-х ??? Сужу по ключевому слову import. Мой Вам добрый совет. Не увлекайтесь особо этим. Хрень это галимая. Сам пишу практически на старом добром С времен отцов-основателей. Используя возможности плюсов лишь очень ограниченно, и лишь там где это уместно. У Вас не открывается файл для записи ??? Попробуйте так:

#include <stdio.h>
int main(int argc, char *argv[])
{
  FILE *f=fopen("sphere.obj", "wt");
  if(!f)
  {
    printf("Ошибка открытия файла\n");
    return -1;
  }
  for(int i=0; i<1000; i++)
  {
    fprintf(f, "Пишем i=%d\n", i);
  }
  fclose(f);
  return 0;
}

Сейчас попытаюсь найти и выложить свои эксперименты по генерации 3D-фигур на основе "суперформулы" https://ru.wikipedia.org/wiki/Суперформула_(уравнение) . Может это Вам поможет разобраться. Ещё раз, в этом нет абсолютно ничего сложного. Всё просто как мычание.

Это пайтон, не плюсы

Файл формируется, но встроенный просмотрщик 3D в винде и paint 3d не может открыть его

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

Говорю ж, файл сформирован, но встроенный просмотрщик 3D в винде и paint 3d не может открыть его

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

Спасибо за цикл, но вот тут я накрепко затупил. Поясните, пожалуйста: в чем все-таки разница между классами? Я пытался рассуждать так: поскольку сфера полностью симметрична, то два класса "появляются" только после того, как мы на этой сфере что-то пометим. Ок, я рисую на сфере "прямую" (=окружность), выбираю на ней произвольную точку и начинаю вращение относительно оси, проходящей через эту точку и центр сферы. Разве я не получу таким способом (меняя, естественно, точку=ось вращения), ЛЮБУЮ прямую на этой сфере? Если да, то в чем разница между ними? Как мне определить, что вот эта прямая относится к одному классу, а вот эта - к другому?

Или это как-то связано с выбором точки=оси вращения? Но тогда классов должно быть не два, а

бесконечное множество

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

Или все дело в том, что мы предварительно задали на сфере не только прямую, но также

экватор и полюса?

Я догадываюсь, одно из трех перечисленных однозначно задает остальные два, но я физик, мне проще через запятую :-((

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

Например, "проходящие через эту точку" и "не проходящие"

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

Или все-таки нет?

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

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

Спасибо, теперь понял. Я начал читать третью часть, не дожидаясь ответа (хотя материал правильнее изучать последовательно), и чуть-чуть разобрался.

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

Кстати, сейчас обнаружил интересный для себя нюанс: для прямых на обычной плоскости это условие эквивалентно нелокальному: расстояние от некоторой точки на прямой A до ортогональной ей прямой Б будет наименьшим в точке пересечения прямых А и Б (перпендикуляр короче любых других траекторий). Исходя из определения прямых, я сперва подумал, что то же самое будет и для других геометрий. Однако даже на сфере это, очевидно, не так (берем меридиан, выбираем точку на полюсе и ищем кратчайшее расстояние до экватора). Это как-то связано с требованием единственности параллельных прямых?

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

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

На сфере геодезические не очень хорошие, лучше рассматривать проективную плоскость, но я сейчас не готов про нее что-то написать

Sign up to leave a comment.

Articles