找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2400|回复: 2
打印 上一主题 下一主题
收起左侧

stm32+oled组成旋转3d图(例如纸飞机)

[复制链接]
跳转到指定楼层
楼主
ID:244158 发表于 2019-4-1 16:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提到3d渲染引,通常只会用,现在呢把这东西移植到了stm32上,大家可以学习下,不光能旋转立方体,只要是简单的3d图(例如纸飞机)都能显示


视频:https://v.youku.com/v_show/id_XMzc0NDEyNzc4NA==.html

贴上源码

  1. float cube[8][3]={{-15,-15,-15},{-15,15,-15},{15,15,-15},{15,-15,-15},{-15,-15,15},{-15,15,15},{15,15,15},{15,-15,15}};//立方体坐标
  2. int lineid[25]={1,2,2,3,3,4,4,1,5,6,6,7,7,8,8,5,8,4,7,3,6,2,5,1};//记录点之间连接顺序
  3. float *matconv(float *a,float b[3][3]){//计算矩阵算法
  4. float res[3];
  5.         int i;
  6.         for(i=0;i<3;i++){
  7.          res[i]=b[i][0]*a[0]+b[i][1]*a[1]+b[i][2]*a[2];
  8.         }
  9.         for(i=0;i<3;i++){
  10.          a[i]=res[i];
  11.         }
  12.         return a;
  13. }
  14. void rotate(float *obj,float x,float y,float z){//旋转这个向量

  15.         float rz[3][3]={{cos(z),sin(z),0},{sin(z),cos(z),0},{0,0,0}};
  16.         float ry[3][3]={{0,0,0},{0,cos(y),sin(y)},{0,sin(y),cos(y)}};
  17.         float rx[3][3]={{cos(x),0,sin(x)},{0,0,0},{sin(x),0,cos(x)}};
  18.         matconv(matconv(matconv(obj,rz),ry),rx);
  19. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2019-4-1 18:30 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

板凳
ID:519106 发表于 2019-7-15 09:13 | 只看该作者
想问问大佬3d渲染引是啥
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表