gpt4 book ai didi

c++ - OpenGL - 绘图模式

转载 作者:行者123 更新时间:2023-11-30 02:14:21 25 4
gpt4 key购买 nike

附加图像是我想要做的:

Pattern I want

但是,我的代码给出了以下模式:

CODE PATTERN

谁能指导我正确的方向?

void drawPattern(float xPos, float yPos, float length){
glColor3f(0.0, 1.0, 0.0);
// Drawing Square
glBegin(GL_POLYGON);
glVertex2f(xPos + length, yPos);
glVertex2f(xPos, yPos);
glVertex2f(xPos , yPos + length);
glVertex2f(xPos + length , yPos + length);
glEnd();

glColor3f(0,0,1);
float halfPi = 0.5 * PI;
//Drawing Bottom Left Circle
glBegin(GL_LINE_LOOP);
for (float angle = 0.0; angle < 90 * 0.01745329; angle += 0.01745329){
glVertex2f( xPos + (length/2)*cos(angle), yPos + (length/2)*sin(angle));
}
glEnd();

//Drawing Top Right Circle
glBegin(GL_LINE_LOOP);
for (float angle = 0.0; angle < 90 * 0.01745329; angle += 0.01745329){
glVertex2f( xPos + length/2 + (length/2)*cos(angle), yPos + length/2 + (length/2)*sin(angle));
}
glEnd();
}

最佳答案

除此之外,您还必须使用 line primitive type GL_LINE_STRIP 而不是 GL_LINE_LOOP,答案中已经提到,右上角的圆弧方向错误。

这是因为圆弧的中心点必须是左上角(xPos + length, yPos + length)角,而不是四边形的中心.此外,必须在左下角部分绘制圆弧。这是通过减去正弦和余弦项来实现的:

glBegin(GL_LINE_STRIP);
for (float angle = 0.0; angle < 90 * 0.01745329; angle += 0.01745329) {
glVertex2f(
xPos + length - (length/2)*cos(angle),
yPos + length - (length/2)*sin(angle));
}
glEnd();

关于c++ - OpenGL - 绘图模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58194811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com