Мне нужна икосфера со всеми краями одинаковой длины. В настоящее время я генерирую один, начиная с икосаэдра, а затем линейно интерполирую каждый треугольник. Во всех учебных пособиях, которые мне удалось найти, использовалась одна и та же линейная интерполяция. Кто-то позже предложил просто использовать икосферу из блендера, которая работает, хотя также использует линейную интерполяцию ...
Итак, у кого-нибудь есть хороший урок о том, как создать икосферу и убедиться, что все стороны равны? (Было бы также хорошо, если бы вы знали программу, которая может это сделать и экспортировать как .obj или что-то в этом роде.)
1 ответ
Невозможно получить произвольно точную сферу из равносторонних треугольников. Если вам нужны равносторонние треугольники, лучшее, что вы можете получить, - это икосаэдр (который, вероятно, у вас уже есть). Причина называется "угловой дефект":
Угловой дефект составляет 360 градусов как сумму углов при вершине вокруг вершины. Любой многогранник должен иметь общий дефект вершин, равный 720 градусам:
- тетраэдр: 4 * 180 градусов
- октаэдр: 6 * 120 градусов
- куб: 8 * 90 градусов
- икосаэдр: 12 * 60 градусов
- додекаэдр: 20 * 36 градусов
Если пять равносторонних треугольников встречаются в вершине, они накапливают 36 градусов дефекта. Если шесть равносторонних треугольников встречаются в вершине, они не вносят никакого вклада в дефект.
Если шесть равносторонних треугольников пересекаются в вершине, они должны образовывать либо
- самолет или
- складка (край) или
- седло.
Существует многогранник под названием пентакис икосаэдр с 32 вершинами, но если вы сделаете его из равносторонних треугольников, вы получите невыпуклый многогранник.
Итак, если вам нужна сфера произвольной точности, вам нужно разрешить края разной длины, чтобы угловой дефект мог равномерно распределяться по поверхности. Равные стороны с произвольной точностью невозможны.
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.
[algorithm]