2014-10-20 4 views
2

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

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

enter image description here

Creating a sphere легко благодаря threejs, но как я могу нарисовать треугольник?

Нужно ли рисовать несколько небольших треугольников для подделки сферического треугольника? Или есть еще один более простой способ?

Спасибо.

+1

Есть ли текстура для отображения опции? Хотя вы, вероятно, получите некоторое растяжение вблизи полюсов сфер? Вам нужно, чтобы это было статичным? Вы можете создать это как статическую геометрию, используя 3D-пакет по вашему выбору. – GuyGood

+0

Предполагается, что он будет ** динамическим **: пользователь вводит значение, например. для диаметра сферы, то должны быть созданы некоторые углы для треугольника и сферы в соответствии со всеми заданными значениями. Затем значения изменятся позже. Посмотрите здесь пример [что я имею в виду (пирамида)] (http://www.echteinfach.tv/formeln/geometrie/pyramide/). –

ответ

1

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

Выполнение геометрического маршрута потребует построения набора вершин, соответствующих вашим требованиям. Лучшим способом сделать это, вероятно, будет создание сферы с вашим предпочтительным количеством сегментов, а затем удаление нежелательных вершин из мест, где ваш треугольник не существует. Вы можете сделать это проще для себя, используя свойства конструктора phiStart, phiLength, thetaStart, thetaLength для SphereGeometry.

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

Цветовое решение (и ваш лучший IMHO решение) было бы создать целую сферу какой-то сплошной цвет, и удалить соответствующие куски из него с помощью SubtractiveBlending в вашем материале, как так:

blending: THREE.SubtractiveBlending, 

Вот пример того, что я имею в виду: http://jsfiddle.net/Angrypickle/8pwLca8p/59/

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

Редактировать Вот еще один вариант геометрии: http://jsfiddle.net/Angrypickle/oax054wL/23/

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

+0

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

Смежные вопросы