STM32旋转立方体

STM32旋转立方体

用STM32F429实现LCD屏幕驱动,显示旋转立方体。不是显示一个动画,而是根据点的坐标实时运算,显示在屏幕上。

要把一个三维坐标进行旋转,可以采用旋转矩阵的方式,旋转矩阵的用途也有很多,在此不一一列举。

以下为对x坐标进行旋转变换,原坐标左乘绕X轴旋转矩阵即可得出旋转之后的坐标,下面三个变换同理。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一个点需要进行三次矩阵点乘,一个正方体一共有8个点。旋转之后再选择一个坐标平面投影显示即可简单实现三维图形旋转变换的效果。

代码如下

以下代码仅仅展示3D立方体显示的计算过程,STM32驱动LCD屏幕等代码就不列举了。
文末有工程下载链接。

因为用到了大量的浮点数运算以及三角函数和矩阵运算,所以使用了ST官方的DSP库来提升运算速度。

#include "3D.h"
#include "bsp_lcd.h"
#include "arm_math.h"//ARM官方的DSP库
#define PI 3.1415926
#define XX 0.05
#define YY 0.05
#define ZZ 0.01

float box[8][3]={
   
   {
   
   -80,-80,-80},{
   
   -80,80,-80},{
   
   80,80,-80},{
   
   80,-80,-80},
									{
   
   -80,-80,80},{
   
   -80,80,80},{
   
   80,80,80},{
   
   80,-80,80}};
float box_dis[8][3]={
   
   {
   
   0,0,0},{
   
   0,0,0},{
   
   0,0,0
摘要 现实的世界是一个拥有宽度、高度和深度的三维立体世界。在平面二维显示技术已经成熟的今天,三维立体显示技术首当其冲的成为了当今显示技术领域的研究热点。 本作品搭建了基于stm32f4的三维旋转显示平台,它的显示原理属于三维显示中的体三维显示一类。它是通过适当方式来激励位于透明显示体内的物质,利用可见辐射光的产生三维体像素。当体积内许多方位的物质都被激励后,便能形成由许多分散的体像素在三维空间内构成三维图像。 体三维显示又称为真三维显示,因为他所呈现的图像在真实的三维空间中,展示一个最接近真实物体的立体画面,可同时允许多人,多角度裸眼观看场景,无序任何辅助眼镜。 本作品的特点在于,利用stm32f4的浮点运算能力,实现了低成本的体三维显示数据的生产,并利用类似分布式处理的系统结构,满足了体三维显示所需要的巨大数据吞吐量,等效吞吐量可达约300Mb/s 系统方案如图1所示,整个系统由四个模块组成,其中数据获取单元主要由在PC上的上位机完成,利用3D-Max,OpenCV,OpenGL,将三维建模数据转化成三维矢量表述文件,传给由STM32F4Discovery开发板构成的控制单元,利用其上的角度传感器,结合wifi模块或以太网模块通过电力线模式传给LED旋转屏单元,其中的STM32F4负责将ASE文件解析成LED显示阵列所需的点云数据流,通过串行总线传输给由FPGA驱动的LED显示阵列,通过LED刷新速率与机械单元旋转速率相匹配,从而实现体三维显示的效果。 系统的机械部分如图2所示,显示面板的硬件结构如图3,图4所示。本系统的底部是直流电机和碳刷,直流电机主要负责带动上层的显示屏幕高速旋转,而碳刷则负责传递能量和通信信号。在显示屏幕的正面是由96*128构成的三色LED点阵,FPGA的PWM信号通过驱动芯片控制三色LED从而实现真彩显示。在屏幕背面由多块STM32F4,SD卡,FIFO构成,主要负责解析由控制单元传过来的ASE文件,并实时生成体三维显示数据,并传给LED灯板的驱动FPGA,并通过其实现最终的图像显示。 图2 图3 图4 关于实时生成体三维显示数据的讨论: 一个瓦片64*32 LED层FPGA*8:每个16*16LED 中间层stm32*2:每个4LED层的FPGA,也即32*32 由于经过压缩,一个led数据为4bits 所以一个stm32每一帧所要生成的数据为32*32*0.5bytes = 512bytes 转速800转,一帧1/800s = 1.25ms = 1250000ns stm32f4主频168Mhz,指令周期 = 5.93ns 约可执行20万多条指令 假设fsmc总线的速度为50Mhz,则每帧写入的时间大概在0.02ms内 系统创新: 其一,由于高效解析算法的提出,大幅简化了真三维显示器显示数据的获取难度,只需在PC端获得当前较为标准化的三维图形的三角面顶点数据流文件,即可在真三维显示平台上显示出来,使得真三维显示器的整体显示流程大为简化。 其二,由于显示体的结构分为并行的若干区块,各个区块只显示自身的部分,因此显示屏幕的扩大并不会造成数据计算量的大幅增加,这就使得本显示器的扩展性大大增强,可以适用于多种多样的显示范围与领域。 其三,由于高效算法的优化与区块化显示的优势,并行结构的计算量相对较少,这就使得实时控制得以实现,大大增强了真三维显示器的应用领域。 其四,高效算法与区块化显示使得本三维体显示器不需要如国内外其他同类产品的中所需的高速传输方式,因此大大减少了从产品研发到材料再到加工中各个环节的成本。 评测与结论在作品的过程中,我们发现本作品虽然还不是很成熟,也同样具备较大的应用前景与价值。价格成本的极大降低,使得真三维立体显示的门槛很低,那么在一些对清晰度要求不高,但是希望多层次全角度呈现三维图像的应用领域,我们的真三维立体显示器能发挥较大的作用。 不是我写的哦,只用于分享,如涉及版权可联系删除。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值