开始看计算机图形学和OpenGL,挺有意思就自己随便写了一些效果。
以中间点坐标为圆心,计算每一点和圆心距离,根据距离算出一个RGB值,于是整体便呈现环形分布。
代码如下:
#include <math.h> #include <GL/glut.h> void init() { glClearColor(0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0, 600.0, 0.0, 600.0); } void lineSegment() { glClear(GL_COLOR_BUFFER_BIT); double r = 300.0; glBegin(GL_POINTS); ; i<=; ++i) ; j<=; ++j) { double dis = sqrt((i-r)*(i-r)+(j-r)*(j-r)); double diff = fabs(dis-r); - diff / r; depth *= depth; depth *= depth; depth *= depth; glColor3f(-depth, depth, depth); glVertex2i(i, j); } glEnd(); glFlush(); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(, ); glutInitWindowSize(, ); glutCreateWindow("OpenGL 3D View"); init(); glutDisplayFunc(lineSegment); glutMainLoop(); ; }
运行效果如下,具体参数懒得调了,随便调调就能出不同的效果。