查看: 790|回复: 6
打印 上一主题 下一主题

在STM32F746DISC上显示分形

[复制链接] qrcode

37

主题

41

帖子

123

积分

注册会员

Rank: 2

积分
123
楼主
跳转到指定楼层
发表于 2016-5-5 11:26 AM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

STM32F746DISC开发板上有一个很大的液晶屏,可以显示各种图像。下面展示了用开发板显示奇妙的分形图形。


这里不介绍分形的理论了,大家可以网上搜索看看,它的计算公式是 Z = Z*Z + C,反复迭代计算,根据发散速度标明各点的颜色。


先看看实际效果,手机拍出来有些条纹,实际是没有的,液晶屏上显示的效果其实还不错。


下面是的程序代码。目前只做了基本的显示,下一步将增加放大、缩小、改变颜色等功能。

#include "mbed.h"
#include "LCD_DISCO_F746NG.h"
#include "TS_DISCO_F746NG.h"

#define ITERATION  150
#define BAILOUT 4

LCD_DISCO_F746NG lcd;
TS_DISCO_F746NG ts;


uint16_t screen_width, screen_height;

uint16_t calcMandelBrot(double x, double y)
{
    uint16_t i;
    double xx, yy, tx, ty;
    
    xx = yy = 0;
    i = 0;
    while((i < ITERATION) && ((xx*xx + yy*yy) < BAILOUT))
    {
        tx = xx*xx - yy*yy + x;
        ty = 2*xx*yy + y;
        xx = tx;
        yy = ty;
        i++;
    }
    return i;
}

void rectMandelBrot(double x1, double y1, double x2, double y2)
{
    double dx, dy;
    uint16_t i, j;
    uint32_t color;
    
    dx = (x2 - x1)/screen_width;
    dy = (y2 - y1)/screen_height;
    
    for(i = 0; i < screen_width; i++)
    {
        for(j = 0; j < screen_height; j++)
        {
            color = calcMandelBrot(x1 + dx*i, y1 + dy*j);
            lcd.DrawPixel(i, j, 0xFF000000 | (color<<2) | (color <<4));
        }
    }
    
}

int main()
{
    lcd.Clear(LCD_COLOR_BLACK);

    screen_width = lcd.GetXSize() - 100;
    screen_height = lcd.GetYSize();

    rectMandelBrot(-2.5, -2, 2.5, 2);
    
    while(1)
    {
    }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

80

帖子

4

积分

新手上路

Rank: 1

积分
4
沙发
发表于 2016-5-5 11:28 AM | 只看该作者

完整的参考程序


回复 支持 反对

使用道具 举报

10

主题

191

帖子

228

积分

中级会员

Rank: 3Rank: 3

积分
228
板凳
发表于 2016-5-5 03:37 PM | 只看该作者
不错呦,,什么分形???  感觉动起来,是不是就是粒子系统了???
回复 支持 反对

使用道具 举报

1

主题

80

帖子

5

积分

新手上路

Rank: 1

积分
5
地板
发表于 2016-5-5 09:21 PM | 只看该作者
分形是现代数学的一个分支,在加密、全息、物理等方面有不少运用,这里主要是显示分形图形。可以放大看的,等过几天写好了给大家参考。
回复 支持 反对

使用道具 举报

0

主题

93

帖子

30

积分

新手上路

Rank: 1

积分
30
5#
发表于 2016-5-5 10:25 PM | 只看该作者
好的,,期待分享。。。。
回复 支持 反对

使用道具 举报

321

主题

418

帖子

993

积分

禁止访问

积分
993
6#
发表于 2016-5-5 10:31 PM | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

81

帖子

10

积分

新手上路

Rank: 1

积分
10
7#
发表于 2016-5-6 01:02 AM | 只看该作者
雪花曲线也是其中一种,这里显示的是曼德布罗特集的图形。
回复 支持 反对

使用道具 举报

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

本版积分规则

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