西工大CAGD大作业

合集下载

凸轮机构大作业___西工大机械原理要点

凸轮机构大作业___西工大机械原理要点

大作业(二)凸轮机构设计(题号:4-A)(一)题目及原始数据···············(二)推杆运动规律及凸轮廓线方程·········(三)程序框图·········(四)计算程序·················(五)程序计算结果及分析·············(六)凸轮机构图·················(七)心得体会··················(八)参考书···················一题目及原始数据试用计算机辅助设计完成偏置直动滚子推杆盘形凸轮机构的设计(1)推程运动规律为五次多项式运动规律,回程运动规律为余弦加速度运动规律;(2)打印出原始数据;(3)打印出理论轮廓和实际轮廓的坐标值;(4)打印出推程和回程的最大压力角,以及出现最大压力角时凸轮的相应转角;(5)打印出凸轮实际轮廓曲线的最小曲率半径,以及相应的凸轮转角;(6)打印最后所确定的凸轮的基圆半径。

大作业参考答案-稳恒电流的磁场 西北工业大学

大作业参考答案-稳恒电流的磁场 西北工业大学

恒定电流的磁场一.选择题⒈ A ; ⒉ B ; ⒊ D ; ⒋ B ; ⒌ B ; ⒍ B ; ⒎ A ; ⒏ C ; ⒐ D ;10. C 二.填空题⒈ N =4×1010; 2. 21I I - ; I 2- 。

3. B 2=R I πμ4/0 ;✞。

4. 204re B υπμ=; 2ev I rπ=; 012m P evr =5. R q B πωμ20= 。

6. F ab =IBR 、F ac =IBR ;F bc =0、∑F =0;I R p m 241π=,✞;IB R Mm241π=,↓。

7. 0.02J ;8.200/υμε=e m f f ; 10104/-⨯=e m f f 。

9. 磁化;磁滞回线; 矫顽力; 顺磁质、抗磁质、铁磁质 。

10. I ≈8A 。

11. IrNB r πμμ20=; Ra Rb NIΦr m +=ln20πμμ 。

三、问答题 1. 简答:等离子中正负离子在洛伦兹力作用下分别偏向不同极板。

四、计算证明1. 解:①将半圆柱分割成平行于轴线的无限长直导线 每个直导线的电流:d I =j d t其中 j =I /πR, d l =R d θ, 该直导线在圆心O 点处 产生的磁场: θπμπμd 22d 200RIRId B ==由对称性分析有: 磁场的x 分量会相互抵消,结果只有y 分量,故 RI RIB B 2020d s i n 2s i n d πμθθπμθ===⎰⎰②反向电流之间存在排斥力,该力为安培力: i RI dlB l Id dldF220πμ=⨯=2. 解:① ab 段:)(232102l d I lI ab B I F ab +==πμdI 1 F abFbc 段: r rI I l B I F d 2d d 2102πμ==dl d I I rr I I F ld dbc +==⎰+ln2d 2210210πμπμca 段:rlI I F d 2d 210πμ=, d l =2d rdl d I I r dr I I F ld dca +==⎰+ln210210πμπμ②取如图窄条作为面积元: drr d I dr d r r I dr d r B S d B d om)/1(23)(2360tan )(1010-=-=-=⋅=Φπμπμ)ln(23)(231010dl d d l I rdr d dr rI ld dld dm +-=-=Φ⎰⎰++πμπμ3. 解:采用补偿法,)(2221R R Ij -=π,①大圆柱中心:大圆柱本身引起的B 10=0 利用环路定理,可以得出小圆柱在该处 所激发的磁场B 20: j R a H 22202ππ=⋅, )(22222122022020R R a IR ajR B B -===μμ② 同理,在小圆柱中心,小圆柱本身激发的磁场B 20=0ja a H 2102'ππ=⋅, )(22''22210010R R aIajB B -===πμμ五. 附加题1. 解:①在圆盘上取如图一个宽度dr 的小环,盘转动时的等效电流:πω2/d /d d q T q I ==, 其中rr Rq q d 2πd 2π=4d d 232qR r r Rq I S P Rm ωω===⎰⎰, 方向垂直纸面向里。

西北工业大学C语言大作业实验报告

西北工业大学C语言大作业实验报告

学院*****************目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (4)2 详细设计 (4)2.1程序结构 (4)2.2主要功能 (10)2.3函数实现 (13)2.4开发日志 (18)3 程序调试及运行 (20)3.1程序运行结果 (20)3.2程序使用说明 (22)3.3程序开发总结 (22)4 附件(源程序) (22)1 摘要1.1 设计题目折半法查找演示程序1.2 设计内容本程序是一个演示折半查找算法的演示程序。

由用户输入查找的数据表列和查找的数据,系统在将数表排序后可以在屏幕上演示在排序后的表列中按折半查找法查找该数据的具体过程(通过每次查找的中间数据、下次查找表列等,具体效果见下图),支持多次演示、错误提醒,程序暂停演示功能。

1.3 开发工具Visual C++ 6.0和Win32。

1.4 应用平台Windows 2000/XP/Vista 32位2 详细设计2.1 程序结构程序功能模块:本程序主要由五大模块组成:程序说明模块、输入模块、排序模块、折半法查找及显示模块、进程选择模块。

各模块的主要功能如下:程序说明模块:给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。

此部分模块主函数源代码如下:int a[N];/*存储要查找的数表,用户输入*/int i,n,num,count;/*count为折半次数计数器,n为数表数据个数,num存储所查数据*/int top,bottom,mid;char c;/*存储选择函数中的输入的字符y或n*/int flag=1;/*折半法循环标志变量*/int loc=-1;/*存储所查找数据位置*/double k=0;p_s(76);puts("\n");/*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文)printf("****欢****迎****使****用****折****半****查****找****法****演****示****器****\n");puts("\n");/*程序欢迎语*/p_s(13);printf("制作者:***************** ");/*作者信息*/p_s(4);printf("Email:************************ ");/*电子邮件*/p_s(11);puts("\n");p_s(76);puts("\n");/*再次引用p_s函数,程序说明部分结束*/附:print_star.cpp文件源代码#include<stdio.h>void p_s(int k){int i;for(i=1;i<=k;i++)/*连续输出ka个'*'*/printf("*");}输入模块:引导使用者输入要在其中查找数据的数表的数据个数和数表数据。

西北工业大学C语言大作业2

西北工业大学C语言大作业2

学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (4)2.3函数实现 (4)2.4开发日志 (5)3 程序调试及运行 (6)3.1程序运行结果 (6)3.2程序使用说明 (7)3.3程序开发总结 (7)4 附件(源程序) (8)1 摘要1.1 设计题目界面编程——简谐运动1.2 设计内容基于Windows界面编程下的SDK编程框架,设计一个带有对话框、GDI图形输出的Windows窗口的程序,实现求解简谐运动方程,能流密度,绘制简谐振动曲线。

运行程序,初始化,X0=V0=W=1时的简谐运动方程和简谐振动曲线。

当点击“运行|计算绘图”时,弹出对话框对简谐运动初相位X0,初速度V0和角频率W进行修改,点击“确认”,就能计算出简谐运动方程,能流密度,绘制简谐振动曲线,这些结果在窗口显示。

1.3 开发工具Visual C++ 6.0和Win32SDKApp1.4 应用平台Windows 2000/XP/Vista 32位2 详细设计2.1 程序结构一、程序的整体结构首先定义资源头文件resource.h;在进行资源描述文件,此过程可通过可视化操作;正式进入编写程序代码:1、由Win32SDKApp自动生成的SDK编程框架:头文件包含所有头文件或链接库文件全局定义应用实例、主窗口变量、数据结构等全局定义,固定不变消息处理函数原型给出所有消息处理函数的原型,增加/删除消息处理时变动消息映射表宏定义定义消息映射表,增加/删除消息处理时变动窗口过程窗口过程函数的实现,固定不变注册窗口类注册窗口类函数的实现,除非修改窗口属性,一般不动初始化窗口初始化窗口函数的实现,除非修改窗口初始化值,一般不动消息循环Windows应用程序主消息循环,一般不动主函数Windows应用程序基本结构,一般不动消息处理函数实现在这编写消息处理函数2、再对SDK编程框架进行修改:设置了快捷键就必须对消息循环函数修改在编写消息处理函数之前:在消息处理函数原型模块中加入要添加的消息处理函数(如WM_COMMAND、WM_ONPAIT)在消息映射表模块增加该消息映射在消息处理函数实现模块中给出该消息处理函数的实现如果消息处理函数之间有共享使用的变量,则将它定义为全局变量。

2025届陕西省西安市西北工大附中九级九年级英语第一学期期末学业质量监测试题含解析

2025届陕西省西安市西北工大附中九级九年级英语第一学期期末学业质量监测试题含解析

2025届陕西省西安市西北工大附中九级九年级英语第一学期期末学业质量监测试题考生须知:1.全卷分选择题和非选择题两部分,全部在答题纸上作答。

选择题必须用2B铅笔填涂;非选择题的答案必须用黑色字迹的钢笔或答字笔写在“答题纸”相应位置上。

2.请用黑色字迹的钢笔或答字笔在“答题纸”上先填写姓名和准考证号。

3.保持卡面清洁,不要折叠,不要弄破、弄皱,在草稿纸、试题卷上答题无效。

Ⅰ. 单项选择1、–What’s your father doing now? –He ______ the room.A.cleaned B.cleans C.has cleaned D.is cleaning2、—________ more and more foreigners coming to our country to learn Chinese?—Of course. Because of the fast development, many foreign countries pay more attention to China.A.will there be B.will be there C.Are there going to have3、You won’t want to visit any other mountain if you have seen wu yue, but you won’t wish to see even wuyue_______you return from Mount Huangshan.A.though B.unless C.until D.after4、— What do you think of your junior middle school life?— I think it is colorful, I’m always busy.A.though B.while C.until D.because5、The mark of PE was increased to 60 points in Hefei in order to _____students' physical quality(身体素质) A.Produce B.improve C.make D.achieve6、Stephen Hawking was known a scientist. He made a great contributions to the world, and he died March 14th, 2018.A.for; on B.as; in C.as; on D.for; in7、Another new road ______ near my school next year.A.builds B.will build C.is built D.will be built8、---What took you so long?---I got lost. I have no ________ of direction.A.feeling B.abilityC.knowledge D.sense9、She was happy to get a gift from her friend, _________it was only a card.A.if . B.unless C.though D.because10、In our school, we have early morning and afternoon self-study in total for 40 minutes every day. Here’s our school’s self-study class schedule. According to the form below, we spend ______ minutes on tests from Monday to Friday every week.A.20 B.50 C.100Ⅱ. 完形填空11、Houdini was not only a magician but also a locksmith(开锁匠) with excellent skills. He boasted that he could escape from any 1 cell in the world in less than an hour, if he could go into the cell dressed in his street clothes. A small town in the British Isles built a new prison they were extremely proud of. They issued Houdini a challenge.“Come and give it a 2 ?” they said.Houdini loved the publicity and the money, so he accepted.By the time he arrived, the crowd was so excited. He rode 3 into town and walked into the cell. As the door was closed, he still felt full of confidence. Houdini 4 his coat and went to work.He secretly hid a flexible and tough 10-inch piece of steel which he used to work on the lock. He got it out and started his magic.At the end of 30 minutes, his 5 expression had disappeared. At the end of an hour he was all of a sweat. After two hours, Houdini collapsed against the door. The door just opened.Houdini was so 6 that tears almost fell, “What just happened? It 7 itself!” he cried.You see, it had never been locked--except in his own 8 --which meant that it was as firmly locked as if a thousand locksmiths had put their best locks on it. One little push and Houdini could have 9 opened the door but he never tried that.You don’t get opportunities, you need to 10 . Many times a little extra push is all you need to open your opportunity door.1.A.town B.street C.prison D.country2.A.chance B.hand C.hope D.try3.A.proudly B.quietly C.sadly D.luckily4.A.took out B.took off C.took away D.took in5.A.excited B.worried C.confident D.foolish6.A.frightened B.relaxed C.disappointed D.satisfied7.A.fell B.locked C.opened D.broke8.A.mind B.eyes C.business D.place9.A.carefully B.easily C.heavily D.greatly10.A.give B.want C.keep D.makⅢ. 语法填空12、This is Tammela School, a primary school in Finland. The students are having a math class with their robot teacher.The “teacher” is1.small, blue machine about 25cm high, Reuters reported.Whenever students have problems, it helps them very2.(patient) and never gets bored.“The robot can make students3.(active) in class than usual. I see Eliasas one of the 4.(tool) to get different kinds of practice and activities into the classroom,” a teacher told Reuters.So far the school5.(introduce) four robot teachers, one of whom is a language teacher that can speak 23 languages and dance to music." 6.is necessary to encourage kids to come up7.new ways to make use of technology in school life," the head of the school 8.(add) in the interview.The robot teachers are used9.(help) improve learning. This doesn't mean that human teachers will lose their jobs. The robots can teach well,10.they are not able to keep class in order. The school still needs human teachers.Ⅳ. 阅读理解A13、It is well known that Albert Einstein was one of the greatest scientists of all time and he was also a really great person. Here are some interesting things about him.When Einstein started to work in America, someone asked him what he needed. He said he needed a desk, some paper and a pencil. He also asked for a big waste-paper basket to hold all of his mistakes. This shows that he knew even the cleverest man in the world can only learn by making mistakes.Einstein regarded time as very important. He never wore socks and he thought putting on socks was a waste of time as people already wore shoes. He also thought it was a waste of time remembering things that could quickly be found in a book. That's why he never remembered his own phone number, which was in the phone book. He knew what was worth remembering. It is true that if we are going to do great things in our lives, we can not waste our time.Einstein liked to joke too. Once in an exam a student asked him why all the questions were the same as last year's. Einstein replied the questions were the same but the answers were different!根据短文内容,从题中所给的A、B、C、D四个选项中,选出正确选项,并将所选答案涂到答题卡的相应位置上。

2025年陕西西西安地区西工大附中高三下学期第五次半月练物理试题试卷含解析

2025年陕西西西安地区西工大附中高三下学期第五次半月练物理试题试卷含解析

2025年陕西西西安地区西工大附中高三下学期第五次半月练物理试题试卷注意事项:1.答卷前,考生务必将自己的姓名、准考证号、考场号和座位号填写在试题卷和答题卡上。

用2B铅笔将试卷类型(B)填涂在答题卡相应位置上。

将条形码粘贴在答题卡右上角"条形码粘贴处"。

2.作答选择题时,选出每小题答案后,用2B铅笔把答题卡上对应题目选项的答案信息点涂黑;如需改动,用橡皮擦干净后,再选涂其他答案。

答案不能答在试题卷上。

3.非选择题必须用黑色字迹的钢笔或签字笔作答,答案必须写在答题卡各题目指定区域内相应位置上;如需改动,先划掉原来的答案,然后再写上新答案;不准使用铅笔和涂改液。

不按以上要求作答无效。

4.考生必须保证答题卡的整洁。

考试结束后,请将本试卷和答题卡一并交回。

一、单项选择题:本题共6小题,每小题4分,共24分。

在每小题给出的四个选项中,只有一项是符合题目要求的。

1、如图所示,小球被轻绳系住,静止在光滑斜面上.若按力的实际作用效果来分解小球受到的重力G,则G的两个分力的方向分别是图中的( )A.1和2 B.1和3C.2和3 D.1和42、如图所示为单摆的振动图像,根据此振动图像不能确定的物理量是()A.摆长B.回复力C.频率D.振幅3、如图所示,两根不可伸长的轻绳一端与一个质量为m的小球相连于O点,另一端分别固定在小车天花板上的A、B两点,OA绳与天花板的夹角为30°,OB绳与天花板的夹角为60°,重力加速度为g.当小车以速度ν向右做匀速直线运动,小球与车保持相对静止时,下列说法正确的是A.OA绳对小球的拉力大小为32mgB.OB绳对小球的拉力大小为12 mgC.OA绳对小球拉力做功的功率为34mgvD.重力对小球做功的功率为mgv4、如图所示,轻弹簧的下端固定在水平桌面上,上端放有物块P,系统处于静止状态,现用竖直向下的力F作用在P 上,使其向下做匀加速直线运动,在弹簧的弹性限度内,下列是力F和运动时间t之间关系的图象,正确的是()A.B.C.D.5、下列说法正确的是____________A.β射线为原子的核外电子电离后形成的电子流B.一个氢原子从n=3的激发态跃迁到基态时,最多能产生3个不同频率的光子C.用加温、加压或改变其化学状态的方法都不能改变原子核衰变的半衰期D.原子核经过衰变生成新核,则新核的质量总等于原核的质量6、如图,水平放置的圆环形窄槽固定在桌面上,槽内有两个大小相同的小球a、b,球b静止在槽中位置P。

西北工业大学c++大作业

西北工业大学c++大作业

程序设计挑战式课程设计极限挑战挑战,不是为着征服自然,而是为着突破自我,超越自我生命有极限,思想无极限,高度有极限,境界无极限作业名称:利用OpenGL 实现有色立体茶壶旋转图形 学 院:航海学院 班 级:03021301 学 号:2013300749 姓 名:刘德柱 团队组成: 刘德柱主要负责茶壶形态构建函数模块、潘峰主要负责旋转实现函数,调试、完善、报告等共同完成。

西北工业大学2022年4月26日请填写以下十项内容,将表格按页对齐(插入空行),勿删除任何部分。

1、问题与背景(描述程序所要解决的问题或应用背景)2、开发工具(列出所使用的开发工具和第3方开发库)3、主要功能(详细说明程序的功能)4、设计内容(详细描述解决问题的原理和方法、算法、数据结构等)至此,程序的大体内容以及机构已经构造成型OPENGL的主体绘制工作:首先使用glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 清除屏幕和深度缓存,然后使用glLoadIdentity();重置当前的模型观察矩阵,确定绘制好图形的位置glTranslatef(0.0f,0.0f,z); 移入屏幕 z 个单位。

函数glTranslatef(x, y, z)作用为沿着 X, Y 和 Z 轴移动;现在是本程序中最重要的语句:glRotatef(angle,0.0f,0.0f,0.0f),其中angle为每次旋转的角度,之后分别是XYZ三个轴的旋转分量,这三个旋转分量构成了三维坐标轴中的旋转法向量。

绘制:void COPENGLActView::OnDraw(CDC* pDC){5、程序文件与工程名称(标出程序中所有文件名、工程名称及其说明)6、函数模块(程序中各个函数的原型声明及其说明)7、使用说明(运行程序的小型说明书)8、程序开发总结(简要叙述编写本作业的收获与思考)的功能十分强大,需要我们学习的地方还有很多。

西北工业大学-算法设计大作业

西北工业大学-算法设计大作业

目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (10)2.4开发日志 (11)3 程序调试及运行 (11)3.1程序运行结果 (11)3.2程序使用说明 (13)3.3程序开发总结 (13)1 摘要1.1 设计题目(1)阶乘求和(2)数组排序(3)图形绘制1.2 设计内容(1)求1!+2!+3!+4!+5!(2)有一个数组中有10个数组元素,输入所有数组元素的值,对数组进行从大到小排序(3)绘制图形1.3 开发工具Raptor是一种基于流程图的可视化编程开发环境。

流程图是一系列相互连接的图形符号的集合,其中每个符号代表要执行的特定类型的指令。

符号之间的连接决定了指令的执行顺序。

一旦开始使用Raptor 解决问题,这样的理念将会变得更加清晰。

1.4 应用平台Windows XP / 7/Vista 32位2 详细设计2.1 程序结构(1)(2)(3)2.2 主要功能(1)通过调用子程序,利用循环思想,实现阶乘求和;(2)先输入十个数组元素,再利用冒泡法,使它们按照由大到小的顺序排列;(3)通过过程调用,进行图形编程,计算坐标,合理排布线段、矩形、圆等图形,最后绘制出优美的图形。

2.4 开发日志按照题目要求设计程序,运用各种工具把程序编写好,然后进行试运行,找出错误进行改正后,继续运行,知道运行结果正确。

3 程序调试及运行3.1 程序运行结果(1)(2)(3)3.2 程序使用说明(1)先切换至中级模式,再开始运行程序,最后可得到结果;(2)开始运行后,按照程序提示,依次输入10个数组元素,程序运行后即可使其按从大到小排列;(3)直接运行程序,即可得到预先设计好的美丽的图形。

3.3 程序开发总结(1)了解了如何调用子程序,切实感受到了利用子程序可以使程序更为简捷,运行更为迅速,十分方便;(2)实际体会了循环,判断等思想在数组排序中的应用,受益匪浅;(3)体会到了raptor的强大功能,可以快速而准确地绘制图形。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
栈的引入
C++代码中,可以直接用下面的代码来导入
#include <stack>
using namespace std;
栈的定义
引入了栈之后,我们就可以直接来声明一个栈了
stack<Point> pixelStack;
其中,需要加一个尖括号,尖括号中声明了 Point 类型,这样我们就可以使用它了
取栈顶元素
#define radian 0.10471975 //旋转变换中的三角形旋转角度(弧度单位)6度
#include <stack>
using namespace std;
struct Point
{
int x;
int y;
};
int halfWidth=300;
int halfHeight=300;
GLubyte iPixel[3];
上面曲线的四个控制顶点已经得到,运用Casteljau算法绘制三次Bezier曲线,得到李宁商标曲线的上半部分的,同理,即得到下半部分。
Casteljau算法的具体过程:
对于控制顶点A(x,y),B(x,y),C(x,y),D(x,y),任取 ,计算:
,
同理可求得 ,从而得到K(x,y),则得到三次Bezier曲线上一点K、
//容差度
int dis = 10;
if(abs(r1-r2)<=dis&&abs(g1-g2)<=dis&&abs(b1-b2)<=dis){
return true;
}else{
return false;
}
}
那么我们的判定件就改为
!sameColor(iPixel[0],iPixel[1],iPixel[2],borderColor[0],borderColor[1],borderColor[2])
步骤:
确定上面Bezier曲线除 , ,之外的控制点及下面Bezier曲线除 , 之外的控制顶点
先改造第一次作业的交互式画曲线程序,同时绘制出上下两条Bezier曲线,之后用鼠标拖动控制点,动态绘制曲线的外形,得到李宁图标最佳形状后,在窗口中读出控制顶点的最佳坐标
用上面得到的控制顶点绘制李宁商标的曲线部分
这里我们依次比较了三个RGB值是否与边界的RGB值相等,不过,识别颜色的这个方法,黑色的RGB值会识别成1,1,1,而有时候在调试的时候会识别为0,1,1。关于该误差,我们在这里就定义了一个方法,允许一定的误差,这个误差称为PS里面的容差。
传入两个颜色的RGB值,比较是否相同,容差为dis
bool sameColor(int r1,int g1,int b1,int r2,int g2,int b2){
第六个参数表示读取的内容保存到内存时所使用的格式,例如:GL_UNSIGNED_BYTE会把各种数据保存为GLubyte,GL_FLOAT会把各种数据保存为GLfloat等。
第七个参数表示一个指针,像素数据被读取后,将被保存到这个指针所表示的地址。需要保证该地址有足够的可以使用的空间,以容纳读取的像素数据。例如一幅大小为256*256的图象,如果读取其RGB数据,且每一数据被保存为GLubyte。
所以在调用这个方法之后,iPixel数组里面的三个值就已经赋值了该点的RGB值,可以拿来做下一步的判断。
比如边界可以定义为:
GLubyte oldColor[3]={255,255,255};
在比较的时候就可以用下面的判别式
iPixel[0]!=borderColor[0]&&iPixel[1]!=borderColor[1]&&iPixel[2]!=borderColor[2]
①输入直线的两端点 和
②计算 初值
③绘制点 ,判断 的符号:若 ,则 更新为 , 点更新为 ,否则 更新为 , 点更新为
④当 时,重复步骤3,否则结束
当 时
由于直线斜率大于1,故当 每增加一个单元,即 时,
只可能选择 或者 +1
记 =
其中 =
作 - = =2 ( 1) 2 +2b 1
可得
由于仅用到 - 的符号,为避免除法运算,作 =( - ) ,则 与 - 符号一致,即
李宁商标的直线部分为: , , , ,斜率分别为:0,2,2,0。因此用斜率为 的Bresenham算法绘制曲线 , ;用斜率 的Bresenham算法绘制曲线 , 。
, , ,
, ,
效果图
Bresenham算法的具体过程:
当 时
yi
y
yi-1
xixi+1
由于直线斜率在-1,0之间,故当 每增加一个单元,即 = +1时,
第五个参数表示读取的内容,例如:GL_RGB就会依次读取像素的红、绿、蓝三种数据,GL_RGBA则会依次读取像素的红、绿、蓝、alpha四种数据,GL_RED则只读取像素的红色数据(类似的还有GL_GREEN,GL_BLUE,以及GL_ALPHA)。如果采用的不是RGBA颜色模式,而是采用颜色索引模式,则也可以使用GL_COLOR_INDEX来读取像素的颜色索引。
}
如果栈不为空,就一直取元素,直到把它置空
3.关于glColor3b和glColor3ub
glColor3b()需要传入的是byte类型,它的数值范围是-128-127,也就是有符号数
glColor3ub()需要传入的是unsigned byte类型,范围是0-255,无符号数
4.取得某像素颜色
获取某个像素的函数是
(4)程序代码---------------------------------------------------------
一、绘制“李宁”图标
商标轮廓线的设计与绘制
1、Bresenham算法绘制直线部分(第二次作业)
我们在第二次作业的基础上,针对李宁商标进行一些坐标变化,即可顺利画出直线部分。
int halfWidth,halfHeight;
我们可以调用如下的方法来获取(x,y)这个点像素的值
glReadPixels(x+halfWidth,y+halfHeight,1,1,GL_RGB,GL_UNSIGNED_BYTE,&iPixel);
在这里第五个参数我们定义了 GL_RGB,第六个参数我们定义了 GL_UNSIGNED_BYTE,最后是传入了数组的引用。
用红色填充商标
③种子填充算法(新知识)--------------------------------------
(2)按比例变小+旋转(第三次作业)----------------------
重新计算变换矩阵,改变第三次作业的比例旋转程序实现
(3)心得体会---------------------------------------------------------
在这里我们用到了glPoint画点的方法,方法如下,为了便于调试,每画一个点刷新一下,这样我们就可以看到绘制的全部动态效果。
画点:
void glPoint(int x,int y,int r,int g,int b){
glColor3ub (r,g,b);
glPointSize(1);
glBegin(GL_POINTS);
这样系统误差便不会影响了。
5.下一个种子点的选取
思路大体上为:
在填充完一行后,这一行最左边的像素点我们定义为(xLeft,y),最右边的像素我们定义为(xRight,y),扫描上一行找寻下一个种子点,这里y就要增加1,如果(xRight,y+1)这个点不是边界不是已经填充的点,那么这个点就可以作为种子点放入堆栈。如果这个点是边界或者是已经填充的点,那么就继续往左搜索,如果找到既不是边界又未填充的点,那么这个点就是种子点,放入堆栈。如果一直往左找到xLeft还是没有找到的话,就不存在下一个种子点了。下一行扫描线也是同样的原理,y要在这个基础上减去2即可。
#define GLUT_DISABLE_ATEXIT_HACK
#include<GL/glut.h> //OpenGL实用工具库,可以简化打开窗口、检测输入等任务,创建复杂三维物体
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#define N 100000 //单条曲线的Bezier点总数,也即曲线的精细程度
C++中取栈顶元素有两种方法,一个是top方法,另一个是pop方法。
其中top方法是只取得栈顶的元素而不移除它,pop方法是直接移除栈顶元素,没有返回值
所以我们要想取出栈顶元素并移除的话,就要分别调用这两个方法来获取最顶端的元素
Point tempPoint=pixelStack.top();//删除最顶端的元素
=2 2 2 (2b 1)
为提高效率,对 采用增量计算
初值 的表达式: =
· 时的Bresenham算法的算法步骤为:
①输入直线的两端点 和
②计算 初值
③绘制点 ,判断 的符号:若 ,则 更新为 , 点更新为 ,否则 更新为 , 点更新为
④当 时,重复步骤3,否则结束
2、用三次Bezier曲线的Casteljau算法画李宁商标曲线部分
只可能选择 或者 -1
记 =
=
其中y=k( +1)+b
作 - =2 -2 -1=2 -2 ( +1)-1-2b
可得
由于仅用到 - 的符号,为避免出发运算,作 =( - ) ,则 与 - 符号一致,即
=2 -2 -2 -(2b+1)
相关文档
最新文档