MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ generate_rectangle()

MAYAFLUX_API std::vector< glm::vec3 > MayaFlux::Kinesis::generate_rectangle ( const glm::vec3 &  center,
float  width,
float  height,
const glm::vec3 &  normal = glm::vec3(0, 0, 1) 
)

Generate vertices of an axis-aligned rectangular path.

Parameters
centerRectangle centroid
widthExtent along local X axis
heightExtent along local Y axis
normalRectangle plane normal
Returns
5 vertices (closed rectangular path for LINE_STRIP)

Definition at line 101 of file GeometryPrimitives.cpp.

106{
107 glm::vec3 n = glm::normalize(normal);
108 glm::vec3 u;
109
110 if (std::abs(n.z) < 0.9F) {
111 u = glm::normalize(glm::cross(n, glm::vec3(0, 0, 1)));
112 } else {
113 u = glm::normalize(glm::cross(n, glm::vec3(1, 0, 0)));
114 }
115
116 glm::vec3 v = glm::cross(n, u);
117
118 float half_width = width * 0.5F;
119 float half_height = height * 0.5F;
120
121 std::vector<glm::vec3> vertices;
122 vertices.reserve(5);
123
124 vertices.push_back(center - half_width * u - half_height * v);
125
126 vertices.push_back(center + half_width * u - half_height * v);
127
128 vertices.push_back(center + half_width * u + half_height * v);
129
130 vertices.push_back(center - half_width * u + half_height * v);
131
132 vertices.push_back(vertices[0]);
133
134 return vertices;
135}
uint32_t width
Definition Decoder.cpp:59

References width.