- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用鼠标实现橡皮筋技术(画多边形)改进
实验五 用鼠标实现橡皮筋技术
一、参照课本P63的例子,编程绘制一个正五边形。要求:
1 图形中心坐标和外接圆半径由鼠标指定。
2用鼠标实现橡皮筋技术。
3 五边形的其中一个顶点固定在x轴的某一点上。(即五边形的旋转方向不变)
二、程序代码
#includewindows.h
#include gl/glut.h
#define PI 3.14
int iPointNum = 0;
#include math.h //已确定点的数目
int x[5],y[5],x,y;
//x[0]=0;y[0]=0;x[1]=0;y[1]=0;
//int x1=0,x2=0,y1=0,y2=0; //确定的点坐标
int winWidth = 400, winHeight = 300; //窗口的宽度和高度
void Initial(void)
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
}
void ChangeSize(int w, int h)
{
winWidth = w; winHeight = h;
glViewport(0, 0, w, h); //指定窗口显示区域
glMatrixMode(GL_PROJECTION); //设置投影参数
glLoadIdentity();
gluOrtho2D(0.0,winWidth,0.0,winHeight);
}
void Display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 0.0f, 0.0f);
if(iPointNum = 1) {
y[0]=(x[0]-xc)*tan(0.1*PI)+yc;
float r=sqrt((x[0]-x)* (x[0]-x)+ (y[0]-y) (y[0]-y));
//float l=2*r*sin(0.2*PI);
//float radian=0.2*PI-atan((y[0]-y)/(x[0]-x))
x[4]=x-r*sin(0.3*PI-radian);
y[4]=y-r*cos(0.3*PI-radian);
x[1]=2*l*cos(PI/5)*cos(radian+PI*0.2)+x[4];
y[1]=2*l*cos(PI/5)*sin(radian+PI*0.2)+y[4];
x[2]=2*l*cos(PI/5)*cos(radian+PI*0.4)+x[4];
y[2]=2*l*cos(PI/5)*sin(radian+PI*0.4)+y[4];
x[3]=2*l*cos(radian+PI*0.8)+x[4];
y[3]=2*l*sin(radian+PI*0.8)+y[4];
glBegin(GL_LINE_LOOP); //绘制直线段
for(int j=0;j5;j++){
glVertex2i(x[j],y[j]);
}
glEnd();
}
glutSwapBuffers(); //交换缓冲区
}
void MousePlot(GLint button, GLint action, GLint xMouse, GLint yMouse)
{
if(button == GLUT_LEFT_BUTTON action == GLUT_DOWN) {
if(iPointNum == 0 || iPointNum == 2){
iPointNum = 1;
x = xMouse; y = winHeight - yMouse;
}
else {
iPointNum = 2;
x[0] = xMouse; //y[0] = winHeight - yMouse;
glutPostRedisplay(); //指定窗口重新绘制
}
}
if(button == GLUT_RIGHT_BUTTON action == GLUT_DOWN){
iPointNum = 0;
glutPostRedisplay();
}
}
void PassiveMouseMove (GLint xMouse, GLint yMouse)
{
if(iPointNum == 1) {
x[0] = xMouse;
您可能关注的文档
最近下载
- 教科版五年级上册小学科学第一单元《光》测试卷(含答案).pdf VIP
- 08K507-1~2、08R418-1~2 管道与设备绝热.pdf VIP
- UV固化灯.pdf VIP
- 第二单元 第5课《网络协议分层设》教学设计2024-2025学年人教版(2024)初中信息科技七年级上册.docx
- 竞选大学心理委员PPT模板.pptx VIP
- 《生态学》第5章 生态系统生态学-教学课件(非AI生成).ppt
- 新22J01 工程做法参考图集.docx VIP
- 外来施工人员的安全培训.pptx VIP
- 一种梁板式高桩码头上部结构的施工方法.pdf VIP
- 医用耗材集中采购对医疗资源配置优化与公平性的探讨.docx
文档评论(0)