摘要: 共轭梯度法最初由Hesteness和Stiefel于1952年为求解线性方程组而提出的。后来,人们把这种方法用于求解无约束最优化问题,使之成为一种重要的最优化方法。 阅读全文
posted @ 2011-10-20 21:17 杨溪 阅读(32652) 评论(4) 推荐(3) 编辑
摘要: 最近足球赛啊,踢了好几场,累死了 阅读全文
posted @ 2011-10-18 10:37 杨溪 阅读(829) 评论(0) 推荐(0) 编辑
摘要: 这个问题属于非常初级的问题,但是对于初学不知道的人可能会比较头疼。C++中函数是不能直接返回一个数组的,但是数组其实就是指针,所以可以让函数返回指针来实现。比如一个矩阵相乘的函数,很容易地我们就写成: 1 #include <iostream> 2 3 using namespace std; 4 5 float* MultMatrix(float A[4], float B[4]) 6 { 7 float M[4]; 8 M[0] = A[0]*B[0] + A[1]*B[2]; 9 M[1] = A[0]*B[1] + A[1]*B[3];10 M[... 阅读全文
posted @ 2011-09-18 22:57 杨溪 阅读(88643) 评论(25) 推荐(7) 编辑
摘要: 转自:http://blog.csdn.net/xie_zi/article/details/1963461前一章我们知道了怎么建立简单的菜单,现在我们来看看怎样来添加一个级联的子菜单。子菜单的建立和我们前面用的建立菜单的函数一样。建立菜单后我们把子菜单作为一个条目添加进去。使用函数glutAddSubMenu来完成这项工作:void glutAddSubMenu(char *entryName,int menuIndex);参数:entryName:子菜单名称。menuIndex:子菜单索引,这个就是我们调用glutCreateMenu来创建子菜单返回的值。上面就是添加子菜单的函数。(我想子 阅读全文
posted @ 2011-09-16 11:29 杨溪 阅读(1842) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/xie_zi/article/details/1963383弹出式菜单(像点鼠标右键出来的菜单那样的)也是GLUT的一部分,虽然它不能实现我们经常看到的windows系统弹出式菜单的所有的功能,但是它也有很大的作用。给一个程序增加菜单提供了一个比键盘更简单的方法来和程序交互,选择不同选项,而不用去记那些按键。我们首先要做的是创建菜单,创建菜单函数glutCreateMenu的原型如下:int glutCreateMenu(void (*func)(int value));参数:func:为新建的菜单处理菜单事件的函数名。这个函数的返回值是菜单的标 阅读全文
posted @ 2011-09-16 11:28 杨溪 阅读(3915) 评论(0) 推荐(1) 编辑
摘要: 转自:http://blog.csdn.net/xie_zi/article/details/1925778在前几节,我们看了怎么使用GLUT的keyboard函数,来增加一个OpenGL程序的交互性。现在,是时候研究下鼠标了。GLUT的鼠标接口提供一些列的选项来增加鼠标的交互性。也就是检测鼠标单击,和鼠标移动。检测鼠标Clicks和键盘处理一样,GLUT为你的注册函数(也就是处理鼠标clicks事件的函数)提供了一个方法。函数glutMouseFunc,这个函数一般在程序初始化阶段被调用。函数原型如下:void glutMouseFunc(void(*func)(int button,int 阅读全文
posted @ 2011-09-16 11:26 杨溪 阅读(2406) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/xie_zi/article/details/1925696这一节里,我们再来看看上次的例子,这次我们讲使用高级的键盘控制。在初始化那部分,我们有两个变量:deltaAngle和deltaMode。这些变量控制旋转和移动照相机。当为非0时,照相机执行一些动作,当为0时,照相机就不动,这两个变量的初始值是0,也就是说,照相机初始状态是不动的。#include <math.h>#include <GL/glut.h>float angle=0.0,deltaAngle = 0.0,ratio;float x=0.0f,y=1. 阅读全文
posted @ 2011-09-16 11:25 杨溪 阅读(1771) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/xie_zi/article/details/1925667这节我们将去介绍4个新的处理键盘输入的函数。第一个函数允许我们去禁止keyboard repeat。函数原型如下:int glutSetKeyRepeat(int repeatMode);参数:repeatMode:开启,禁用,或恢复auto repeat模式,下面是它可能的取值。RepeatMode的可能取值如下:GLUT_KEY_REPEAT_OFF:关闭auto repeat模式。GLUT_KEY_REPEAT_ON:开启auto repeat模式。GLUT_KEY_REPEAT_ 阅读全文
posted @ 2011-09-16 11:24 杨溪 阅读(1924) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/xie_zi/article/details/1911997让我们看一个比较好的使用键盘控制的例子。这一章我们将建立一个应用程序。这个程序绘制了一个小的居住着雪人的世界。并且我们将用方向键来移动照相机(即移动视点在场景中漫游)。左右方向键,将照相机绕y轴旋转,上下方向键,将前后方向移动照相机。这个例子的代码放在下面。首先我们处理初始状态。#include <math.h>#include <GL/glut.h>#include <stdlib.h>static float angle=0.0,ratio;sta 阅读全文
posted @ 2011-09-16 11:23 杨溪 阅读(3808) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/xie_zi/article/details/1911891GLUT允许我们编写程序,在里面加入键盘输入控制,包括了普通键,和其他特殊键(如F1,UP)。在这一章里我们将学习如何去检测哪个键被按下,可以从GLUT里得到些什么信息,和如何处理键盘输入。到现在,你应该注意到了,只要你想控制一个事件的处理,你就必须提前告诉GLUT,哪个函数将完成这个任务。到现在为止,我们已经使用GLUT告诉窗口系统,当窗口重绘时我们想调用哪个渲染函数,但系统空闲时,哪个函数被调用。和当窗口大小改变时,哪个函数又将被调用。相似的,我们必须做同样的事来处理按键消息。我们必 阅读全文
posted @ 2011-09-16 11:22 杨溪 阅读(4958) 评论(0) 推荐(0) 编辑