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,