[OpenGL]课后案例04:Marching-Square程序

该博客介绍了使用OpenGL实现Marching Squares算法的过程,通过生成等值线来描绘二维函数f(x, y)的轮廓。代码展示了如何构建数据数组、处理每个单元格并绘制线段,用于显示Cassini卵石的轮廓。" 53548090,5614969,使用Spring AMQP与Jackson序列化Java 8时间对象到JSON,"['spring', 'amqp', 'json', 'jackson', 'rabbitmq']
//A.4  Marching-Square程序
/* generates contours using marching squares */
/* region size */
#define X_MAX  1.0
#define Y_MAX  1.0
#define X_MIN  -1.0

#define Y_MIN  -1.0
/* number of cells */
#define N_X  50
#define N_Y  50
/* contour value */
#define THRESHOLD  0.0
#include<gl/glut.h>
void display()
{
    double f(double,double);
    int cell(double,double,double,double);
    void lines(int,int,int,double,double,double,double);
    double data[N_X][N_Y];
    int i,j;
    int c;
    glClear(GL_COLOR_BUFFER_BIT);
    /* form data array from function */
    for(i=0;i<N_X;i++)
        for(j=0;j<N_Y;j++)
            data[i][j]=f(X_MIN+i*(X_MAX-X_MIN) /(N_X-1.0),
            Y_MIN+j*(Y_MAX-Y_MIN)/(N_Y-1.0));
    /* process each cell */
    for(i=0;i<N_X;i++)
        for(j=0;j<N_Y;j++)
        {
            c=cell(data[i][j],data[i+1][j],data[i+1][j+1],data[i][j+1]);
            lines(c,i,j,data[i][j],data[i+1][j],data[i+1][j+1],data[i][j+1])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值