首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >像真实的风力涡轮机一样旋转物体

像真实的风力涡轮机一样旋转物体
EN

Stack Overflow用户
提问于 2018-12-23 13:23:01
回答 1查看 1.3K关注 0票数 4
代码语言:javascript
运行
AI代码解释
复制
#include <stdio.h>
#include <math.h>
#include "glut.h"

void init() {
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0, 400, 0.0, 300.0);
}

void drawTurbine() {
    // draw the tower
    glBegin(GL_LINES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2f(160, 40);
    glVertex2f(163, 180);
    glVertex2f(160, 40);
    glVertex2f(175, 40); 
    glVertex2f(175, 40);
    glVertex2f(172, 180);
    glEnd();
    // Rotate object
    glPushMatrix();
    glRotatef(100, 0, 1, 0);
    // draw first rotor blade
    glBegin(GL_TRIANGLES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2f(173, 180);
    glVertex2f(163, 180);
    glVertex2f(168, 270);
    glEnd();
    // draw second rotor blade
    glBegin(GL_TRIANGLES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2f(170, 174);
    glVertex2f(175, 180);
    glVertex2f(247, 140);
    glEnd();
    // draw third rotor blade
    glBegin(GL_TRIANGLES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2f(162, 180);
    glVertex2f(167, 174);
    glVertex2f(88, 140);
    glEnd();
    // circle in the middle
    float theta;
    glBegin(GL_POLYGON);
    glColor3f(1.0, 1.0, 1.0);
    for (int i = 0; i <= 360; i++) {
           theta = i * 3.142 / 180;
           glVertex2f(168 + 7 * cos(theta), 180 + 6.5 * sin(theta));
    }
    glEnd();
    glPopMatrix();
}

void display() {
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    drawTurbine();
    glFlush();
    glutSwapBuffers();
    glutPostRedisplay();
}

void idle() {
    display();
}

int main(int argc, char** argv) {
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(700, 600);
    glutInitWindowPosition(10, 10); 
    glutCreateWindow("Wind Turbine");
    init(); 
    glutIdleFunc(idle);
    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}

我已经创建了一个风力涡轮机,我试图旋转转子叶片,但代码只是让它消失了。我想让它顺时针旋转。我只想知道怎样才能让它像真正的风力涡轮机一样旋转。我刚开始使用glRotatef,这将是我第一次使用OpenGL旋转对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-23 14:07:06

您需要一个变量来表示风力涡轮机的当前角度(current_angle)和每帧的旋转角度(step_angle)。此外,您还需要知道风力涡轮机的中心(center_xcenter_y):

代码语言:javascript
运行
AI代码解释
复制
float current_angle = 0.0f;
float step_angle = 0.2f;
float center_x = 168.0f;
float center_y = 180.0f;

要围绕轴心旋转,必须定义一个模型矩阵,该矩阵通过倒转的轴心进行位移,然后旋转并最终变换回轴心。旋转轴是z轴(0,0,1),因为几何图形是在xy平面中绘制的:

代码语言:javascript
运行
AI代码解释
复制
glTranslatef( center_x, center_y, 0.0f );
glRotatef(current_angle, 0, 0, 1);
current_angle += step_angle;
glTranslatef(-center_x, -center_y, 0.0f );

预览:

函数drawTurbine的完整代码

代码语言:javascript
运行
AI代码解释
复制
void drawTurbine() {
    // draw the tower
    glBegin(GL_LINES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2f(160, 40);
    glVertex2f(163, 180);
    glVertex2f(160, 40);
    glVertex2f(175, 40); 
    glVertex2f(175, 40);
    glVertex2f(172, 180);
    glEnd();
    // Rotate object
    glPushMatrix();

    glTranslatef( center_x, center_y, 0.0f );
    glRotatef(current_angle, 0, 0, 1);
    current_angle += step_angle;
    glTranslatef(-center_x, -center_y, 0.0f );

    // draw first rotor blade
    glBegin(GL_TRIANGLES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2f(173, 180);
    glVertex2f(163, 180);
    glVertex2f(168, 270);
    glEnd();
    // draw second rotor blade
    glBegin(GL_TRIANGLES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2f(170, 174);
    glVertex2f(175, 180);
    glVertex2f(247, 140);
    glEnd();
    // draw third rotor blade
    glBegin(GL_TRIANGLES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2f(162, 180);
    glVertex2f(167, 174);
    glVertex2f(88, 140);
    glEnd();
    // circle in the middle
    float theta;
    glBegin(GL_POLYGON);
    glColor3f(1.0, 1.0, 1.0);
    for (int i = 0; i <= 360; i++) {
           theta = i * 3.142 / 180;
           glVertex2f(168 + 7 * cos(theta), 180 + 6.5 * sin(theta));
    }
    glEnd();
    glPopMatrix();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53903978

复制
相关文章
工业无人机的新应用:为风力涡轮机除冰
据外媒The Verge报道,不少公司都梦想着将无人机应用于各个领域。但是这种用途你可能从未见过:使用巨型系绳式无人机来为风力涡轮机除冰。该无人机本身由拉脱维亚的Aerones公司制造,该公司专门研发巨型无人机。 这款强大的无人机拥有多达36个螺旋桨,可以携带100千克重的物体。Aerones表示这种无人机有一系列的潜在用途,包括为救援提供帮助,高层建筑的消防,交付和工业清洁等。 (优酷视频查看-点击下方阅读原文) 而在视频中可以看到一架无人机正在除去风力涡轮机叶片上的雪和冰。该无人机配备了一条供水
机器人网
2018/04/12
9250
工业无人机的新应用:为风力涡轮机除冰
[Cocos Creator] 围绕物体旋转
在游戏开发过程中,可能会有让一个物体围绕另一个物体旋转的需求,就比如月球围绕着地球旋转,同时地球也在围绕着太阳旋转。
陈皮皮
2020/07/10
3.8K0
[Cocos Creator] 围绕物体旋转
Android 天气APP(六)旋转风车显示风力、风向
这个时候就要用到自定义View了,这个工具类的代码也并不是我自己写的,而是网络上找的,
晨曦_LLW
2022/05/10
6430
Android 天气APP(六)旋转风车显示风力、风向
Android 天气APP(六)旋转风车显示风力、风向
这个时候就要用到自定义View了,这个工具类的代码也并不是我自己写的,而是网络上找的,
晨曦_LLW
2020/09/25
9540
Android  天气APP(六)旋转风车显示风力、风向
旋转物体上的增强现实
1 导读 增强现实(augmentedreality,AR)技术是一种既包括真实世界要素也包括虚拟世界要素的环境,其通过将计算机系统生成的虚拟物体或其他信息叠加到真实场景中,从而实现对
WolframChina
2018/05/31
6800
机器手像人手一样转动魔方,旋转成功率达到95.2%
人类可以相对轻松地操纵魔方,但机器人则难以操作。经典的2 x 2 x 2魔方有3674160种配置。那么能够自由操控魔方的机器手意味着更灵活。
AiTechYun
2019/08/01
4970
机器手像人手一样转动魔方,旋转成功率达到95.2%
[学习笔记]三维数学(4)-物体的旋转
欧拉角 什么是欧拉角 用三个数去存储物体在x、y、z轴的旋转角度。 补充: 为了避免万向节死锁,y和z轴取值范围都是0~360°,x轴是-90°~90°。 x和z轴是旋转是相对于自身坐标轴的,y轴旋转永远是相对于世界坐标轴的。 优点 好理解,使用方便 只用三个数表示,占用空间少,在表示方位的数据结构中是占用最少的 缺点 万向节死锁 四元数 什么是四元数 Quaternion在3D图形学中表示旋转,由一个三维向量(X/Y/Z)和一个标量(W)组成。 旋转轴为V,
六月丶
2022/12/26
5110
像高手一样行动
像高手一样行动 原则1 盯住你想成为的那个人 我们每个人的面前都有一个『超级偶像』,点燃你内心激情的关键之一在于用你对未来生活的憧憬去充裕你的『超级偶像』的形象,并且每天不断回放这些画面 原则2 每天花15分钟『铭刻』技能 有效铭记的关键在于创造一层强烈的连接关系:通过密集的观察和聆听,你可以想象自己掌握这项技能时的感觉。涉及身体技能时,把你自己投射到表演者的体内,你要对动作、节奏保持高度敏感,试着去感受这些动作的内部形状。涉及思维技能时,你可以通过重塑专家的决策模式来模拟这些技能。 棋手们通过一步一步地复
yeedomliu
2021/07/19
5740
GE主打:数字镜像Digital Twin概念及Predix落地 | 智能制造案例 | 解读技术
|懒人阅读:Digital Twin作为一种虚拟实体映射概念,在工业领域将率先构建并用于定制化生产、虚拟生产、工业知识传承,让冷冰冰的工业也有其灵魂。极大增加设计效率、制造质量,提高运行费效比。
用户7623498
2020/08/04
9190
GE主打:数字镜像Digital Twin概念及Predix落地 | 智能制造案例 | 解读技术
three.js鼠标控制物体旋转
当我们需要固定场景背景,固定摄像机的时候。移动旋转物体可以使用Three.js提供的OrbitControls.js,也可以手动写控制器。
tianyawhl
2019/06/11
15.7K0
【Wolfram|Alpha Notebook Edition】像W|A一样简单易用,像Mathematica一样强大
Wolfram|Alpha 在学生群体中深受欢迎,是很多在校大学生和高中生探索未知的一大法宝。通常,学生每输入一个问题,Wolfram|Alpha 给出一个(通常具有丰富情境化的)答案。这是个一问一答的过程,能解决很多实际问题,尤其是当与它的分步求解功能相结合的时候。
WolframChina
2019/11/21
1.9K0
【Wolfram|Alpha Notebook Edition】像W|A一样简单易用,像Mathematica一样强大
像TransactionScope一样使用DbTransaction
System.Transactions.TransactionScope为了提供一种非常方便的实现分布式事务的方式,但是在某些情况下为了阻止本地事务向分布式事务提升,我们只能通过DbTransaction进行事务控制。在进行数据库操作的时候,我们经常会遇到这样的事务场景:当某个方法单独执行的时候,它应该在一个单一的DbTransaction中执行;当多个方法一起执行的时候,它们应用共同在DbTransaction中执行。在本篇文章中我们通过对DbTransaction进行封装,提供一种类似于Transact
蒋金楠
2018/01/15
1.6K0
像对象一样对待数据
咱们编程教室有不少同学,学完了基础课程,掌握了一定的编程能力,开始做项目了。然后很可能遇到一个问题:管理数据。课程里有讲过用文件保存数据,还有 pickle、csv 等模块辅助。但对于稍微复杂一点的数据,往往不够方便。成熟的解决方案就是使用数据库。
Crossin先生
2018/07/24
7270
像对象一样对待数据
[转自blueidea]像table一样布局div Ⅰ
翻译自:Equal height boxes with CSS 原文:http://www.456bereastreet.com/archive/200405/equal_height_boxes_with_css/ 下面是我翻译的内容,是根据我对文章的理解意译的,你就别挑哪里翻译的不对了,我的目的只是传达这个CSS技巧 许多网页设计师都喜欢,将两个或者多个容器等高的并排放置,并在里面展示每个容器的内容,就象经典表格布局中的单元格控制几个栏目的位置,也喜欢容器的内容居中或顶部对齐显示。 但是你又不喜欢用
菩提树下的杨过
2018/01/22
1.4K0
算法比赛 | 百度主办风力发电预测赛题及解析
空间动态风力发电预测这项任务对风能的利用具有实际意义。参与者应准确估计风电场的风能供应。
郭好奇同学
2022/04/12
2.1K0
算法比赛 | 百度主办风力发电预测赛题及解析
像人一样思考的教学芯片
这个被称为水库计算系统的网络能够在对话之前对其进行预测,并帮助预测未来的结果。 由密歇根大学电气工程和计算机科学教授魏璐率领的油藏计算系统研究小组最近在Nature Communications上发表了他们的研究成果。 教学芯片 过去用较大的光学元件创建了能改进典型神经网络容量并减少所需训练时间的水库计算系统。然而,UM集团使用忆阻器创造了他们的系统,这种系统所需空间较小,可以更容易地集成到现有的基于硅的电子器件中。 忆阻器是可以执行逻辑和存储数据的特殊类型的电阻设备。这与典型的计算机系统形成了对比,处
企鹅号小编
2018/01/10
5930
像人一样思考的教学芯片
ProxySQL!像C罗一样的强大!
作者 | 张甦, 数据库领域的专家和知名人士、图书《MySQL王者晋级之路》作者,51CTO 专家博主。近10年互联网线上处理及培训经验,专注于 MySQL 数据库,对 MongoDB、Redis 等 NoSQL 数据库以及 Hadoop 生态圈相关技术有深入研究,具备非常丰富的理论与实战经验。
数据和云
2018/07/27
1.3K0
ProxySQL!像C罗一样的强大!
2014年全球十大突破技术之智能风能和太阳能
在科罗拉多州东部开阔的平原上,风力发电正在蓬勃发展。从利蒙镇出发,沿着71号高速公路向北行驶7英里,之后向东转,上郡道,沿着新铺设的输电线路能看到大片覆盖着尘土的碎石,而在几分钟内,你就会被一列列绵延
大数据文摘
2018/05/22
4220
像高手一样重置Vuex的state
Vuex对于管理你的Vue应用很有用,但是如果你的应用很大,同时又把所有的应用状态放到单个状态对象上则会变的低效且难以维护。这种情况下,则需要分割到多个小的modules中。
前端黑板报
2019/09/25
4.3K0
像高手一样重置Vuex的state
OpenCV轮廓检测,计算物体旋转角度
http://blog.csdn.net/wangyaninglm/article/details/41864251
流川疯
2019/01/18
4.2K0

相似问题

从拍摄的真实物体中旋转360度的物体

15

像物体一样获取图像

21

当偏航改变时,如何找出风力涡轮机叶片所形成的角度?

13

像旋转瓶子一样旋转UIImage

21

在ImpressJs中像旋转一样旋转

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文