coder

本文介绍了一个使用OpenGL和GLUT库进行图形绘制的示例程序。通过键盘操作,可以移动屏幕上的矩形,同时鼠标操作能改变矩形位置,并提供全屏和窗口模式切换。文章展示了如何设置OpenGL投影和视图矩阵,以及如何响应键盘和鼠标事件。

#include <iostream>
#include <GL/glut.h>
using std::cout;
using std::endl;
float windowWidth=0;
float windowHeight=0;
float curX=0.0;
float curY=0.0;
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0,1.0,1.0);

    glBegin(GL_POLYGON);
    glVertex3f(curX,curY,0.0);
    glVertex3f(curX+50,curY,0.0);
    glVertex3f(curX+50,curY+50,0.0);
    glVertex3f(curX,curY+50,0.0);
    glEnd();

//    glutSwapBuffers();
    glFlush();
}
void reshape(int w,int h)
{
    windowWidth=(float)w;
    windowHeight=(float)h;
    cout<<"cur width is :"<<w<<endl;
    cout<<"cur height is :"<<h<<endl;
    glViewport(0,0,(GLsizei)w,(GLsizei)h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0,(float)w,0.0,(float)h,-1.0,1.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}
void keyboard(unsigned char key, int x, int y)
{
    cout<<"you pressed the key is :"<<key<<endl;
    switch(key)
    {
    case 'w':
        curY+=20;
        break;
    case 's':
        curY-=20;
        break;
    case 'a':
        curX-=20;
        break;
    case 'd':
        curX+=20;
        break;
    default:
        break;
    }
    if(key=='q'||key=='Q')
        exit(0);
    glutPostRedisplay();
}
void motion(int x, int y)
{
    cout<<"mouse position :"<< "("<<x<<","<<y<<")"<<endl;
    curX=(float)x;
    curY=(float)(windowHeight-y);
    glutPostRedisplay();
}
void mouse(int button,int state,int x,int y)
{
    cout<<"come here yet"<<endl;
    switch(button)
    {
    case GLUT_LEFT_BUTTON:
        if(state==GLUT_DOWN)
            glutFullScreen();
        break;
    case GLUT_RIGHT_BUTTON:
        if(state==GLUT_DOWN)
        {
            glutInitWindowSize(800,600);
            glutInitWindowPosition(0.0,0.0);
        }
        break;
    default:
        break;
    }
    glutPostRedisplay();
}
void idler()
{
    cout<<"i am a idle"<<endl;
}
void init()
{
    glClearColor(0.0,0.0,0.0,0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-300.0,300.0,-300.0,300.0,-1.0,1.0);
}
int main(int argc,char **argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowSize(250,250);
    glutInitWindowPosition(0.0,0.0);
    glutCreateWindow("hello,gl Master");
//    glutFullScreen();
    init();
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutKeyboardFunc(keyboard);
    glutMotionFunc(motion);
    glutMouseFunc(mouse);
    //  glutIdleFunc(idler);
    glutMainLoop();
    return 0;
}

转载于:https://www.cnblogs.com/L-Arikes/p/4678678.html

### Simulink Coder介绍 Simulink Coder是MathWorks公司推出的一款用于自动生成代码的工具,它可以将Simulink模型转换为可移植的、高效的C或C++代码。这一工具极大地提高了开发效率,减少了手动编写代码的工作量和出错概率。通过Simulink Coder生成的代码具有较高的可读性和可维护性,并且可以方便地集成到各种嵌入式系统和实时应用中。它支持多种目标硬件平台,如微控制器、FPGA等,使得开发人员可以快速将仿真模型部署到实际硬件上进行验证和测试。 ### Simulink Coder使用方法 - **配置目标平台**:在Simulink中打开要生成代码的模型,选择“配置参数”,在“代码生成”选项卡中选择目标硬件平台,如ARM、Intel等。根据所选平台,设置相应的编译器、链接器等参数。 - **设置代码生成选项**:在“代码生成”选项卡中,还可以设置代码生成的其他选项,如代码风格、优化级别、代码接口等。例如,可以选择生成可读性高的代码或者生成经过优化的紧凑代码。 - **生成代码**:完成配置后,选择“生成代码”命令,Simulink Coder将根据模型和配置选项自动生成C或C++代码。生成的代码将保存在指定的文件夹中。 - **集成代码到目标系统**:将生成的代码集成到目标系统的开发环境中,进行编译、链接和下载。在集成过程中,可能需要根据目标系统的要求进行一些额外的配置和调整。 ### Simulink Coder应用案例 - **汽车电子控制系统**:在汽车电子控制系统的开发中,Simulink Coder可以将发动机控制、制动系统控制等模型转换为代码,直接部署到汽车的电子控制单元(ECU)中。这样可以加快开发周期,提高系统的可靠性和性能。 - **航空航天领域**:在航空航天领域,对于飞行控制系统、导航系统等复杂系统的开发,Simulink Coder可以帮助开发人员快速将仿真模型转换为可在嵌入式硬件上运行的代码,减少开发成本和时间。 - **工业自动化**:在工业自动化中,Simulink Coder可以将工业机器人的运动控制模型、生产线的监控和控制系统模型等转换为代码,实现自动化生产过程的高效控制。 ```matlab % 以下是一个简单的Simulink模型生成代码的示例 % 假设已经有一个名为'myModel'的Simulink模型 open_system('myModel'); % 打开Simulink模型 set_param('myModel', 'CodeGenTool', 'ert'); % 设置代码生成工具为Embedded Coder set_param('myModel', 'RTWSystemTargetFile', 'ert.tlc'); % 设置目标文件 rtwbuild('myModel'); % 生成代码 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值