создать круг в трехмерном пространстве - PullRequest
3 голосов
/ 10 февраля 2010

Как оформить круг в трехмерном пространстве?

Для круга в двумерном пространстве достаточно двух членов.

1 центр;

2 радиус;

но в 3D, как я могу определить направление и положение круга?

Ответы [ 3 ]

3 голосов
/ 10 февраля 2010

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

2 голосов
/ 10 февраля 2010

Вы действительно хотите Круг (2D-фигуру) в 3D-пространстве? Тогда это может быть решением:

  1. x,y,z: координаты центра круга
  2. dx,dy,dz: Направление плоскости, в которой находится окружность
  3. r: радиус
1 голос
/ 10 февраля 2010

В зависимости от того, что вы хотите сделать с объектом - у меня есть другая альтернатива. Смоделируйте круг как единичный круг в плоскости xy с z = 0. с масштабированием, переводом и вращением операций, сделанных с ним. Если вы планируете выполнять много матричных операций над вашими объектами, это может быть правильным способом.

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

Circle() - Default Unit circle at (0,0,0), radius 1, xy plane at z=0
Circle(scale, translate, rotate) - my constructor
Circle(location, radius, normal) - the other proposed constructor
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...