二次曲面的绘制

article/2025/10/25 19:26:54
#include "stdafx.h"
#include <GL/glut.h>   
#include <math.h>    
/*声明四个二次曲面物体*/   
GLUquadricObj *quadObj1;   
GLUquadricObj *quadObj2;   
GLUquadricObj *quadObj3;   
GLUquadricObj *quadObj4;  
GLUquadricObj *quadObj5;
   
static float light_ambient[] = {0.1,0.1,0.1,1.0};  
static float light_diffuse[] = {0.5,1.0,1.0,1.0}; 
static float light_specular[]={0.5,1.0,1.0,1.0};  
static float light_position[] = {90.0,90.0,150.0,0.0};   
   
static float front_mat_shininess[] = {60.0};   
static float front_mat_specular[] = {0.2,0.2,0.2,1.0};   
static float front_mat_diffuse[] = {0.5,0.5,0.28,1.0};   
   
static float back_mat_shininess[] = {60.0};   
static float back_mat_specular[] = {0.5,0.5,0.2,1.0};   
static float back_mat_diffuse[] = {1.0,0.9,0.2,1.0};   
   
static float Imodel_ambient[] = {1.0,1.0,1.0,1.0};   
static float Imodel_twoside[] = {GL_TRUE};   
static float Imodel_oneside[] = {GL_FALSE};   
   
void myInit(void)   
{   
/*设置背景色*/   
glClearColor(1.0,1.0,1.0,1.0);   
   
glEnable(GL_DEPTH_TEST);   
glDepthFunc(GL_LEQUAL);   
   
/*设置光照*/   
glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);    //设置环境光
glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);    //设置漫射光成分
glLightfv(GL_LIGHT0,GL_POSITION,light_position);  //设置光源的位置
   
/*设置材质*/   
glMaterialfv(GL_FRONT,GL_DIFFUSE,front_mat_diffuse);   
glMaterialfv(GL_FRONT,GL_SPECULAR,front_mat_specular);   
glMaterialfv(GL_FRONT,GL_SHININESS,front_mat_shininess);   
   
glMaterialfv(GL_BACK,GL_DIFFUSE,back_mat_diffuse);   
glMaterialfv(GL_BACK,GL_SPECULAR,back_mat_specular);   
glMaterialfv(GL_BACK,GL_SHININESS,back_mat_shininess);   
   
/*设置光照模型参数*/   
glLightModelfv(GL_LIGHT_MODEL_AMBIENT,Imodel_ambient);   
glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE,Imodel_twoside);   
   
/*激活关照*/   
glEnable(GL_LIGHTING);   
glEnable(GL_LIGHT0);   
glShadeModel(GL_SMOOTH);    
}   
   
void myDisplay(void)   
{   
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);   
   
/*创建四个二次曲面物体*/   
quadObj1 = gluNewQuadric();   
quadObj2 = gluNewQuadric();   
quadObj3 = gluNewQuadric();   
quadObj4 = gluNewQuadric(); 
quadObj5 = gluNewQuadric();
   
/*绘制一个圆柱体*/   
glPushMatrix();   
gluQuadricDrawStyle(quadObj1,GLU_FILL);   
gluQuadricNormals(quadObj1,GL_FLAT);   
gluQuadricOrientation(quadObj1,GLU_INSIDE);   
gluQuadricTexture(quadObj1,GL_TRUE);   
   
glColor3f(1.0,1.0,0.0);   
glRotatef(30,1.0,0.0,0.0);   
glRotatef(40,0.0,1.0,0.0);   
gluCylinder(quadObj1,2.0,2.0,9.0,20.0,8.0);   
glPopMatrix();   
 
/*绘制一个圆锥*/
glPushMatrix();
gluQuadricDrawStyle(quadObj5,GLU_FILL);   
gluQuadricNormals(quadObj5,GL_FLAT);   
gluQuadricOrientation(quadObj5,GLU_INSIDE);   
gluQuadricTexture(quadObj5,GL_TRUE);   
//glColor3f(1.0,0.0,0.0); 
glRotatef(30,1.0,0.0,0.0);   
glRotatef(40,0.0,1.0,0.0);
gluQuadricDrawStyle(quadObj5,GLU_FILL);
glTranslatef(5.0,5.0,0.0);
gluCylinder(quadObj5,3.0,0.0,5.0,20.0,8.0);
glPopMatrix();


/*绘制一个球体*/   
glPushMatrix();   
gluQuadricDrawStyle(quadObj2,GLU_SILHOUETTE);   
glTranslatef(-5.0,-1.0,0.0);   
gluSphere(quadObj2,3.0,20.0,20.0);   
glPopMatrix();   
   
/*绘制一个圆盘*/   
glPushMatrix();   
gluQuadricDrawStyle(quadObj3,GLU_LINE);   
glTranslatef(-2.0,4.0,0.0);   
gluDisk(quadObj3,2.0,5.0,15.0,10.0);   
glPopMatrix();   
   
/*绘制一个部分圆盘*/   
glPushMatrix();   
gluQuadricDrawStyle(quadObj4,GLU_POINT);   
glTranslatef(-3.0,-7.0,0.0);   
gluPartialDisk(quadObj4,2.0,5.0,15.0,10.0,10.0,100.0);   
glPopMatrix();   
   
/*删除四个二次曲面物体对象*/   
gluDeleteQuadric(quadObj1);   
gluDeleteQuadric(quadObj2);   
gluDeleteQuadric(quadObj3);   
gluDeleteQuadric(quadObj4);  
gluDeleteQuadric(quadObj5);
glFlush();   
}   
   
void myReshape(int w,int h)   
{   
glViewport(0,0,(GLsizei)w,(GLsizei)h);   
glMatrixMode(GL_PROJECTION);   
glLoadIdentity();   
gluPerspective(45.0,(GLfloat)w/(GLfloat)h,1.0,50.0);   
glMatrixMode(GL_MODELVIEW);   
glLoadIdentity();   
glTranslatef(0.0,0.0,-25.0);   
}   
   
int main(int argc,char ** argv)   
{   
/*初始化*/   
glutInit(&argc,argv);   
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);   
glutInitWindowSize(400,400);   
glutInitWindowPosition(100,100);   
   
/*创建窗口*/   
glutCreateWindow(" DRAW QUADRIC OBJECTS ");   
   
/*绘制与显示*/   
myInit();   
glutReshapeFunc(myReshape);   
glutDisplayFunc(myDisplay);   
   
glutMainLoop();   
return 0;   

}   



http://chatgpt.dhexx.cn/article/sOicOg7F.shtml

相关文章

【高等数学】二次曲面直观几何形态展示

一、圆柱面 二、椭圆柱面 三、 双曲柱面 四、抛物柱面 五、圆锥面 六、椭圆锥面 七、球面 八、椭球面 九、椭圆抛物面 十、单叶双曲面 十一、双叶双曲面 十二、双曲抛物面&#xff08;马鞍面&#xff09;

数分下第5讲(8.3节) 二次曲面方程和曲线方程

第3.1讲 二次曲面方程和曲线方程 本讲是空间解析几何中的曲面和曲线方程&#xff0c;要求掌握二次曲面的生成方法和画图。 文章目录 第3.1讲 二次曲面方程和曲线方程学习要点一、二次曲面方程1、球面方程2、柱面方程&#xff1a;缺少一个变量3、旋转曲面&#xff08;旋转&…

【学习记录】二次曲线、二次曲面、对偶二次曲线、对偶二次曲面

一、二次曲线与对偶二次曲线 最近在看基于椭球体的物体SLAM过程中&#xff0c;经常涉及到椭球体的空间几何知识&#xff0c;这里先补充一下一些空间几何相关的基础&#xff0c;参考链接。 椭球体本身属于二次曲面的一种&#xff0c;二次曲面是对空间形状的描述&#xff0c;属于…

空间二次曲面数据拟合算法推导及仿真分析

在上一篇的博客球面数据拟合算法简介中&#xff0c;笔者详细介绍了关于空间球面数据拟合的算法公式推导并给出了相应的Matlab代码及其仿真分析。本次笔者将上面这一情况进行更一般的推广&#xff0c;即取消了球面数据这一限制&#xff0c;数据可以是椭球面形式的&#xff0c;也…

通过Python绘制九种二次曲面

二次曲面 python中绘制三维图需要将坐标系声明为3d。 球面方程为 x 2 y 2 z 2 R 2 x^2y^2z^2R^2 x2y2z2R2 写为极坐标形式为 x R sin ⁡ θ cos ⁡ φ y R sin ⁡ θ sin ⁡ φ z R cos ⁡ θ \begin{aligned} x&R\sin\theta\cos\varphi\\ y&R\sin\theta\sin\…

解析几何:第六章 二次曲面(1)球面 椭球面 双曲面

1.球面 1.球面方程&#xff0c;球心与半径 图形 方程 球心和半径 1 标准方程&#xff1a; xyzR 2 参数方程 &#xff08;φ为经度&#xff0c;θ为纬度&#xff09; 3 球面坐标方程 rR 球心&#xff1a;G(0,0,0) 半径&#xff1a;R   1 (x-a)(y-b)(z-c)R 2 参数方程&a…

解析几何:第六章 二次曲面(2)抛物面 二次锥面 柱面 一般二次曲面

4 抛物面 1.椭圆抛物面 &#xff08;1&#xff09;标准方程 &#xff08;2&#xff09;基本元素 *顶点 O(0,0,0) *主轴 Z轴 *主平面 OYZ平面&#xff1a;x0&#xff1b;OZX平面&#xff1a;y0 &#xff08;3&#xff09;当ab时&#xff0c;椭圆抛物线面是由…

二次曲面标准方程和分类记忆方法(更新)

二次曲面标准方程和分类记忆方法 一类曲面-球面&#xff1a;圆球面&#xff0c;椭球面 1、球面 球面方程最简单。 描述&#xff1a;中心在(x0,y0,z0)&#xff0c;半径是r的所有点(x, y, z)的集合 令x00&#xff1b;y00&#xff1b;z00&#xff1b;得到中心在坐标原点的球面 …

MATLAB 画常见二次曲面汇总

一、螺旋线 1.静态螺旋线 a0:0.1:20*pi; hplot3(a.*cos(a),a.*sin(a),2.*a,b,linewidth,2); axis([-50,50,-50,50,0,150]); grid on set(h,erasemode,none,markersize,22); xlabel(x轴);ylabel(y轴);zlabel(z轴); title(静态螺旋线); 2.动态螺旋线 t0:0.1:10*pi; i1; hplo…

MATLAB-二次曲面

柱面&#xff1a;圆柱面&#xff1b;椭圆柱面&#xff1b;双曲柱面&#xff1b;抛物柱面 锥面&#xff1a;圆锥面&#xff1b;椭圆锥面 锥球面&#xff1b;球面 椭圆抛物面&#xff1b; 单叶双曲面&#xff1b;双叶双曲面 双曲抛物面&#xff1b; 旋转抛物面&#xff0c;…

二次曲面标准方程和分类记忆方法

二次曲面标准方程和分类记忆方法 一类曲面-球面&#xff1a;圆球面&#xff0c;椭球面 1、球面 球面方程最简单。 描述&#xff1a;中心在(x0,y0,z0)&#xff0c;半径是r的所有点(x, y, z)的集合 令x00&#xff1b;y00&#xff1b;z00&#xff1b;得到中心在坐标原点的球面 …

解析几何 曲线与二次曲面 二次曲面的分类(2.3)

一.二次曲面 二.二次曲面的旋转不变量 三.特征方程和特征根 1.特征根(特征值)与主方向(特征方向,特征向量): 2.不同直角坐标系下的主方向: 3.二次曲面的标准形式: 引理1:非零实对称矩阵 D D D的特征根全是实数 引理2:非零实对称矩阵 D D D的3个特征根至少有…

几何-九种二次曲面类型

&#xff08;一&#xff09;椭圆锥面 &#xff08;1&#xff09;把z平方看成一个一直变大的常数&#xff0c;那么可以看出延z方向&#xff0c;是一个一直变大的椭圆。 &#xff08;2&#xff09;把一个x或y赋予0&#xff0c;显然是一个两条关于原点对称的直线。 由上即可判断…

常见曲面及其方程

目录 &#xff08;1&#xff09;柱面①抛物柱面【z x^2^】②圆柱面【x^2^ y^2^ 1】③椭圆柱面【x^2^/a^2^ y^2^/b^2^ 1】④双曲柱面【x^2^/a^2^ - y^2^/b^2^ 1】 &#xff08;2&#xff09;旋转曲面①锥面【x^2^/a^2^ y^2^/b^2^ z^2^/c^2^】②圆锥面【a^2^(x^2^ y^2^)…

OIM同步OID(OID-Connector 9.0.4.12)

一、OIM与OID同步。 1.安装文件及需要的包。 OID-Connector 9.0.4.12.rar&#xff1a;OID连接器9.0版本。 jndi-1_2_1.zip&#xff1a;jndi包。&#xff08;貌似可以不要&#xff09; ldap-1_2_4.zip&#xff1a;ldap包。 2.准备工作。 1)解压ldap-1_2_4.zip&#xff0c;从解压…

对OIM Web(UI)层进行压力测试

Oracle IDM中的默认配置保留20个专用于服务前端&#xff08;UI&#xff09;请求的线程 。 从根本上讲&#xff0c;这意味着应用程序服务器具有20个线程池&#xff0c;可用于为通过Web控制台&#xff08;/ identity或/ sysadmin&#xff09;访问OIM的用户提供服务。 对于Weblog…

java仿qq思路_java仿QQ聊天软件OIM艰辛之路(开源项目)

既然QQ能仿ICQ, 咱java也来个仿QQ. 在我刚学完java后&#xff0c;就想做点什么项目锻炼下自己的技能。凑巧的是&#xff0c;我一个同样学java的朋友在做一个仿qq的项目&#xff0c;不过他做的实在太丑了。 然后他想让我也一块做这个&#xff0c;我心想&#xff0c;像qq这么高难…

Patching OIM 11.1.1.5.0 to 11.1.1.5.3

本指南也可以应用到OIM11.1.1.5.1或11.1.1.5.2。 获取修补程序您将需要以下补丁: 1. Patch Name: 13106312Product: Oracle SOA PlatformRelease: 11.1.1.5.0 2. Patch Name: 13704894Product: Oracle Identity ManagerRelease: 11.1.1.5.0 Initial SetupCreate a director…

使用OIM的Design Console配置

1、运行安装oim的文件&#xff08;我的是Oracle_IDM1/bin里面的config.sh&#xff09;,选择如下 next 第一个为主机名&#xff08;电脑名&#xff09; next...finish 2、启动designconsole 在Oracle_IDM2里面找到wlfullclient.jar拷贝到Oracle_IDM1/designconsole/ext里面。 运…

给oim_对OIM Web(UI)层进行压力测试

给oim Oracle IDM中的默认配置保留20个专用于服务前端&#xff08;UI&#xff09;请求的线程 。 这基本上意味着应用程序服务器具有20个线程池&#xff0c;可用于为通过Web控制台&#xff08;/ identity或/ sysadmin&#xff09;访问OIM的用户提供服务。 对于Weblogic &#x…