【发布时间】:2021-10-28 13:20:33
【问题描述】:
我有一组点,它们是一条线的形状。
我们如何创建与当前点集有偏移距离的新点集,并使用 GL_TRIANGLE_STRIP 我们可以创建多边形形状。
这是我当前的代码,但我无法从中得到任何有意义的结果。
// outlineVertices are existing set of points from which we would generate the offsetPoints
for (int i = 0; i < outlineVertices.size() - 3 ; i += 3) {
finalVertices.push_back(outlineVertices[i]);
finalVertices.push_back(outlineVertices[i + 1]);
finalVertices.push_back(outlineVertices[i + 2]);
glm::vec3 point1 = glm::vec3(outlineVertices[i], outlineVertices[i + 1], outlineVertices[i + 2]);
glm::vec3 point2 = glm::vec3(outlineVertices[i + 7], outlineVertices[i + 1 + 7], outlineVertices[i + 2 + 7]);
glm::vec4 directionVector = GetPerpendicularVectorDirection(point1, point2);
finalVertices.push_back(outlineVertices[i] - (directionVector.x * outlineWidth ));
finalVertices.push_back(outlineVertices[i + 1] + (directionVector.y * outlineWidth));
finalVertices.push_back(outlineVertices[i + 2]);
finalVertices.push_back(outlineVertices[i + 3]);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
glm::vec4 RectangleOutline::GetPerpendicularVectorDirection(glm::vec3 point1, glm::vec3 point2) {
glm::vec3 Direction = glm::normalize(point1 - point2);
float x, y;
x = Direction.x;
Direction.x = -y;
Direction.y = x;
return glm::vec4(Direction, 0);
}
【问题讨论】: