MusicSpectrum  1.0.0
Referência da Classe MobiusStrip

#include <mobius_strip.hpp>

Membros Públicos

std::vector< GLuint > genIndices ()
 
std::vector< glm::vec3 > genVertices ()
 
 MobiusStrip (GLfloat radius, GLfloat width, GLint num_seg)
 

Atributos Privados

GLfloat diameter
 
GLfloat width
 
GLint num_segments
 

Descrição detalhada

A classe MobiusStrip representa uma fita de Möbius no espaço 3D.

Esta classe gera a forma geométrica de uma fita de Möbius com raio e número de segmentos dados. Ela fornece funções para gerar índices e vértices para renderizar a fita usando o OpenGL.

Construtores e Destrutores

◆ MobiusStrip()

MobiusStrip::MobiusStrip ( GLfloat  diameter,
GLfloat  width,
GLint  num_segments 
)

Construtor da classe MobiusStrip com as dimensões e número de segmentos especificados.

diameter: Diâmetro da fita.

width: A largura da fita.

num_segments: O número de segmentos (subdivisões) ao longo de cada lado da fita.

GLfloat diameter
Definition: mobius_strip.hpp:17
GLfloat width
Definition: mobius_strip.hpp:18
GLint num_segments
Definition: mobius_strip.hpp:19

Funções membros

◆ genIndices()

std::vector< GLuint > MobiusStrip::genIndices ( )

Gera índices para renderizar da fita de Möbius.

Esta função gera um vetor de índices representando a ordem em que os vértices devem ser renderizados para construir a geometria da fita.

std::vector<GLuint>: Um vetor de índices para renderizar da fita.

25  {
26  std::vector<GLuint> indices;
27  indices.reserve(2 * num_segments * (num_segments + 1));
28  for (GLint i = 0; i < num_segments; ++i) {
29  for (GLint j = 0; j < num_segments; ++j) {
30  int p0 = i * (num_segments + 1) + j;
31  int p1 = p0 + 1;
32  int p2 = (i + 1) * (num_segments + 1) + j;
33  int p3 = p2 + 1;
34 
35  indices.push_back(p0);
36  indices.push_back(p1);
37  indices.push_back(p2);
38  indices.push_back(p3);
39  }
40  }
41  return indices;
42 }

◆ genVertices()

std::vector< glm::vec3 > MobiusStrip::genVertices ( )

Gera vértices para renderizar a fita de Möbius.

Esta função gera um vetor de vértices representando a geometria da fita com base em suas dimensões e número de segmentos.

std::vector<glm::vec3>: Um vetor de vértices para renderizar o fita.

53  {
54  const double stepU = 2 * M_PI / num_segments;
55  const double stepV = 2.0 / num_segments;
56 
57  std::vector<glm::vec3> vertices;
58  for (int i = 0; i <= num_segments; ++i) {
59  double u = i * stepU;
60  double cosU = std::cos(u);
61  double sinU = std::sin(u);
62  for (int j = 0; j <= num_segments; ++j) {
63  double v = -1.0 + j * stepV;
64  double cosU2 = std::cos(u / 2.0);
65  double sinU2 = std::sin(u / 2.0);
66  double L = v * width;
67  double x = (diameter + (L / 2.0) * cosU2) * cosU;
68  double y = (L / 2.0) * sinU2;
69  double z = (diameter + (L / 2.0) * cosU2) * sinU;
70  vertices.push_back(glm::vec3(x, y, z));
71  }
72  }
73  return vertices;
74 }

Atributos

◆ diameter

GLfloat MobiusStrip::diameter
private

◆ num_segments

GLint MobiusStrip::num_segments
private

◆ width

GLfloat MobiusStrip::width
private

A documentação para essa classe foi gerada a partir dos seguintes arquivos: