Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在OpenGL中绘制圆弧 虽然在C++ OpenGL中做了一个小乒乓游戏,但我觉得当弹跳时创建弧线(半圆形)会很有趣。我决定暂时跳过贝塞尔曲线,只使用直线代数,但我没走多远。我的代数遵循一个简单的二次函数(y=+-sqrt(mx+c))_C++_Opengl - Fatal编程技术网

如何在OpenGL中绘制圆弧 虽然在C++ OpenGL中做了一个小乒乓游戏,但我觉得当弹跳时创建弧线(半圆形)会很有趣。我决定暂时跳过贝塞尔曲线,只使用直线代数,但我没走多远。我的代数遵循一个简单的二次函数(y=+-sqrt(mx+c))

如何在OpenGL中绘制圆弧 虽然在C++ OpenGL中做了一个小乒乓游戏,但我觉得当弹跳时创建弧线(半圆形)会很有趣。我决定暂时跳过贝塞尔曲线,只使用直线代数,但我没走多远。我的代数遵循一个简单的二次函数(y=+-sqrt(mx+c)),c++,opengl,C++,Opengl,这个小摘录只是一个我还没有完全参数化的例子,我只是想看看它会是什么样子。然而,当我画这个的时候,它给了我一条直线,直线的切线接近-1.0/1.0 这是GL_LINE_STRIP样式的限制还是有更简单的方法来绘制半圆/圆弧?还是我完全错过了一些显而易见的东西 void Ball::drawBounce() { float piecesToDraw = 100.0f; float arcWidth = 10.0f; float arcAngle = 4.0f; glBe

这个小摘录只是一个我还没有完全参数化的例子,我只是想看看它会是什么样子。然而,当我画这个的时候,它给了我一条直线,直线的切线接近-1.0/1.0

这是GL_LINE_STRIP样式的限制还是有更简单的方法来绘制半圆/圆弧?还是我完全错过了一些显而易见的东西

void Ball::drawBounce()
{   float piecesToDraw = 100.0f;
    float arcWidth = 10.0f;
    float arcAngle = 4.0f;

    glBegin(GL_LINE_STRIP);
        for (float i = 0.0f; i < piecesToDraw; i += 1.0f)  // Positive Half
        {   float currentX = (i / piecesToDraw) * arcWidth;
            glVertex2f(currentX, sqrtf((-currentX * arcAngle)+ arcWidth));
        }
        for (float j = piecesToDraw; j > 0.0f; j -= 1.0f) // Negative half (go backwards in X direction now)
        {   float currentX = (j / piecesToDraw) * arcWidth;
            glVertex2f(currentX, -sqrtf((-currentX * arcAngle) + arcWidth));
        }
    glEnd();
}
void Ball::drawBounce()
{float partiesToDraw=100.0f;
浮弧宽度=10.0f;
浮动弧角=4.0f;
glBegin(GL_线_带);
对于(浮点i=0.0f;i0.0f;j-=1.0f)//负一半(现在沿X方向后退)
{float currentX=(j/piecesToDraw)*弧宽;
glVertex2f(电流X,-sqrtf((-currentX*弧角)+弧宽));
}
格伦德();
}

提前感谢。

sqrtf((-currentX*arcAngle)+arcWidth)的作用是什么?当i>25时,该表达式变为虚构。正确的方法是使用sin()/cos()生成问题中所述的半圆的X和Y坐标。如果你想用抛物线代替,更简洁的方法是计算y=H-H(x/W)^2是的,这是白痴。我不知道为什么我决定用抛物线代替回想我的单位圆。我想我被挂断了为什么有一条垂直线穿过我的画线。谢谢