在OpenGL中绘制圆

通过对代码进行调整,使用GL_LINE_STRIP,成功实现绘制圆的线框。此外,还介绍了如何利用displayStar函数来绘制五角星,展示了OpenGL在图形绘制上的灵活性。
摘要由CSDN通过智能技术生成
#include<GL/glut.h>
#include<math.h>
const double PI = acos(-1.0);
void myDisplay()
{
    glClear(GL_COLOR_BUFFER_BIT);       //清除。GL_COLOR_BUFFER_BIT表示清除颜色
    float R = 0.5f;
    int n = 80;     //这里的n表示用多边形绘制圆的精度,可以考虑增大精度
    glBegin(GL_POLYGON);
    /*
        表示对以下画出的点进行的操作,这里是形成多边形
        类似的还有GL_LINE_STRIP、GL_LINE_LOOP、GL_POINT等
    */
    for (int i = 0; i < n; i++)     //通过数学计算来画多边形的点
    {
        glVertex2f(R*cos(2 * PI*i / n), R*sin(2 * PI*i / n));
    }
    glEnd();
    glFlush();
}
int main(int argc, char *argv[])

{
    glutInit(&argc, argv);
    
在Java使用OpenGL绘制平面空心可以通过以下步骤实现: 1. 创建OpenGL窗口和上下文,初始化OpenGL环境。 2. 在绘制之前,设置绘制属性,例如绘制颜色、线宽等。 3. 在绘制之前,设置投影矩阵和模型视图矩阵,以确定绘制的位置和大小。 4. 使用OpenGL提供的绘制函数绘制平面空心,例如使用glBegin(GL_LINE_LOOP)函数绘制形的边缘线。 以下是一份基本的Java代码,可以用来绘制平面空心: ```java import java.awt.*; import java.awt.event.*; import java.nio.FloatBuffer; import javax.swing.*; import javax.media.opengl.*; import javax.media.opengl.glu.*; public class Circle implements GLEventListener { private GLU glu = new GLU(); public static void main(String[] args) { JFrame frame = new JFrame("Circle"); GLCanvas canvas = new GLCanvas(); canvas.addGLEventListener(new Circle()); frame.add(canvas); frame.setSize(300, 300); final Animator animator = new Animator(canvas); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { new Thread(new Runnable() { public void run() { animator.stop(); System.exit(0); } }).start(); } }); frame.setVisible(true); animator.start(); } public void init(GLAutoDrawable drawable) { GL gl = drawable.getGL(); gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); gl.glShadeModel(GL.GL_FLAT); } public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { GL gl = drawable.getGL(); gl.glViewport(0, 0, width, height); gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); glu.gluOrtho2D(0.0, width, 0.0, height); } public void display(GLAutoDrawable drawable) { GL gl = drawable.getGL(); gl.glClear(GL.GL_COLOR_BUFFER_BIT); gl.glColor3f(1.0f, 1.0f, 1.0f); gl.glLineWidth(2.0f); double r = 100.0; double cx = 150.0; double cy = 150.0; double theta = 0.0; double dtheta = Math.PI / 20.0; gl.glBegin(GL.GL_LINE_LOOP); for (int i = 0; i < 40; i++) { double x = r * Math.cos(theta) + cx; double y = r * Math.sin(theta) + cy; gl.glVertex2d(x, y); theta += dtheta; } gl.glEnd(); } public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} } ``` 在这个例子,我们使用了OpenGL的基本函数来绘制平面空心。我们首先在init()方法设置绘制属性,然后在reshape()方法设置投影矩阵和模型视图矩阵,最后在display()方法使用glBegin()和glEnd()函数绘制形的边缘线。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值