OpenGL与Visual C++实现图元变换操作指南

版权申诉
0 下载量 145 浏览量 更新于2024-12-13 收藏 84KB RAR 举报
资源摘要信息: "Q1.rar_OpenGL_Visual_C++_" 知识点: 1. OpenGL概述: OpenGL(Open Graphics Library)是一个跨语言、跨平台的编程接口,用于渲染2D和3D矢量图形。它用于处理计算机图形学中的图像渲染问题,广泛应用于图形设计、虚拟现实、游戏开发等领域。 2. Visual C++开发环境: Visual C++是微软公司推出的一款集成开发环境(IDE),它提供了一系列用于C++语言开发的工具和库,例如MFC、ATL和CLR等。它支持多种编程语言,并且具备代码编辑、调试、构建和发布应用程序的功能。 3. 压缩包子文件: Q1.rar是一个压缩文件,文件格式为RAR,通常用于打包和压缩数据。RAR格式提供了高压缩比和错误恢复能力,是Windows操作系统中常用的压缩文件格式之一。 4. 二维和三维图元变换: 在OpenGL中,图元是指构成图形的基本元素,比如点、线、多边形等。通过变换可以改变图元的位置、旋转方向和大小。变换通常涉及矩阵操作,比如平移(位移)、旋转和缩放。 - 平移变换: 平移是将图元沿着指定的方向移动一定的距离。在二维中,平移变换矩阵通常是3x3矩阵,而在三维中则扩展为4x4矩阵。平移矩阵乘以点的坐标向量可以实现平移操作。 - 旋转变换: 旋转是围绕原点或指定的轴旋转图形。二维图形的旋转矩阵可以由角度θ确定,而三维旋转更为复杂,涉及绕X轴、Y轴和Z轴的旋转矩阵,以及欧拉角或四元数等表示法。 - 缩放变换: 缩放是按照指定的比例因子放大或缩小图形。在二维中,通常有两个缩放因子,分别对应X轴和Y轴;在三维中,会包括Z轴。缩放矩阵同样可以与图形的坐标向量相乘来实现缩放操作。 5. 矩阵乘法: 矩阵乘法是实现图形变换的基础操作。在OpenGL中,变换矩阵是通过后乘的方式来应用的,即先定义一个变换矩阵,然后将其乘以当前的矩阵,以此来连续进行多个变换。这种后乘方法与数学中的矩阵乘法稍有不同,需要注意。 6. OpenGL中的变换矩阵: OpenGL使用4x4矩阵进行变换操作。这种矩阵被称为模型视图投影矩阵(Model-View-Projection, MVP),它结合了模型变换(物体自身的变换)、视图变换(相机的变换)和投影变换(透视效果的变换)。 7. OpenGL中的变换函数: OpenGL提供了许多函数来帮助进行图形变换,比如glTranslate、glRotate、glScale等。这些函数可以用来直接指定变换的参数,它们最终会构建对应的变换矩阵,并且可以通过glMultMatrix等函数将变换矩阵应用到图形上。 8. 位移、旋转、缩放的应用实例: 在OpenGL程序中,开发者会经常使用这些变换来实现各种图形效果,比如移动摄像机视角、旋转3D模型以便从各个角度观察、或者对物体进行缩放以便更好地适应视窗大小。对于初学者来说,理解这些变换是如何通过矩阵乘法实现的至关重要。 以上知识点为标题和描述中提及的内容提供了详细解释,涵盖了从OpenGL基础概念到具体图形变换操作的各个方面。掌握这些知识点对于进行OpenGL相关的图形编程工作是必不可少的。

以hive的角度检查语法: with cur_dim_comb as (SELECT DISTINCT t.dim_comb ,t.var_sub_class ,t.acc_value FROM gerp.cux_cst_data_alloc_his t WHERE t.top_var_type = '10' AND t.job_ver_id in (SELECT ver.job_ver_id AS p_job_ver_id FROM gerp.cux_cst_dist_jobs_all job INNER JOIN gerp.cux_cst_dist_jobs_vers_all ver ON job.job_id = ver.job_id )) select tp.bd_code --事业部编码 ,tp.bd_name --事业部名称 ,hp.ou_code --OU名称 ,hp.ou_name --OU编码 ,op.main_class_desc --差异大类 ,op.acc_value --科目代码 ,op.acc_desc --科目名称 ,op.dim_comb --区分维度 ,op.begin_amount --期初余额 ,op.accrual_amount --本期发生 ,op.balance_diff_alloc_amount --期末差异结存 ,op.var_sub_class ,op.main_class_value ,op.org_id ,op.period_name ,op.job_ver_id from (select up.* ,q1.* from (SELECT DISTINCT maincl.* ,t.* FROM t inner join (SELECT fv.flex_value ,fv.description FROM fv inner join fs on fv.flex_value_set_id = fs.flex_value_set_id AND fs.flex_value_set_name = 'CUX_CST_VARIANCE_TYPE' AND fv.enabled_flag = 'Y' AND fv.hierarchy_level = '2' AND fv.flex_value LIKE '10%' ) maincl on t.var_main_class = maincl.flex_value inner join cur_dim_comb on cur_dim_comb.var_sub_class = t.var_sub_class and cur_dim_comb.acc_value = t.acc_value WHERE 1 = 1 AND t.top_var_type = '10' AND t.job_ver_id in (SELECT ver.job_ver_id AS p_job_ver_id FROM gerp.cux_cst_dist_jobs_all job INNER JOIN gerp.cux_cst_dist_jobs_vers_all ver ON job.job_id = ver.job_id) ORDER BY maincl.description ,t.acc_value ,cur_dim_comb.dim_comb ) up inner join (SELECT t1.* ,SUM(t1.begin_amount) begin_amount ,SUM(t1.accrual_amount) accrual_amount ,SUM(t1.balance_diff_alloc_amount) balance_diff_alloc_amount FROM gerp.cux_cst_data_alloc_his t1 LEFT JOIN gerp.cux_cst_data_alloc_his t ON t1.top_var_type = '10' AND t1.var_sub_class = t.var_sub_class --p_var_sub_class AND t1.org_id = t.org_id --p_org_id AND t1.period_name = t.period_name --p_period_name AND t1.job_ver_id = t.job_ver_id --p_job_ver_id AND t1.acc_value = t.acc_value --p_acc_value WHERE t1.dim_comb in (select distinct dim_comb from cur_dim_comb) group by t1.org_id,t1.period_name,t1.job_ver_id,t1.var_sub_class,t1.acc_value ) q1 on q1.org_id = up.org_id --p_org_id AND q1.period_name = up.period_name --p_period_name AND q1.job_ver_id = up.job_ver_id --p_job_ver_id AND q1.var_sub_class = up.var_sub_class --p_var_sub_class AND q1.acc_value = up.acc_value --p_acc_value ) op

211 浏览量