aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 12872|回复: 5

创建位图并调用C函数在上面画一副3D心形图

[复制链接]

8

主题

34

回帖

273

积分

二级会员

积分
273
发表于 2017-12-2 12:30:00 | 显示全部楼层 |阅读模式
涉及到图形学,有比较复杂的数学计算,所以绘制过程可能会比较耗时,效果图就不上了,看代码执行结果吧。。。
/*Bitmap{{*/
createBitmap =
function(w=0, h=0, c=32){
    c = c<32 ? 24 : 32
   
var len = (c>>3) * w * h
   
return {
        struct bmfHeader = {
            WORD bfType = 0x4D42;
            int  bfSize = 54 + len;
            WORD bfReserved1;
            WORD bfReserved2;
            int  bfOffBits = 54;
            _struct_aligned = 2;
        };
        struct bmiHeader = {
            INT  biSize = 40;
            int  biWidth = w;
            int  biHeight = h;
            WORD biPlanes = 1;
            WORD biBitCount = c;
            INT  biCompression;
            INT  biSizeImage = len;
            int  biXPelsPerMeter;
            int  biYPelsPerMeter;
            INT  biClrUsed;
            INT  biClrImportant;
            _struct_aligned = 2;
        };
        byte pixs[] = ..raw.buffer(len)
    }
}
/*}}*/

var code = /**
#include <math.h>

float f(float x, float y, float z)
{
    float a = x * x + 9.0f / 4.0f * y * y + z * z - 1;
    return a * a * a - x * x * z * z * z - 9.0f / 80.0f * y * y * z * z * z;
}

float h(float x, float z)
{
    for (float y = 1.0f; y >= 0.0f; y -= 0.001f)
        if (f(x, y, z) <= 0.0f)
            return y;
    return 0.0f;
}

int mDraw(char* img, int sw, int sh)
{
    int lw = sw*3;
    int i = lw*sh - lw + 2, nextLineOffset = lw * 2;
    for (int sy = 0; sy < sh; sy++)
    {
        float z = 1.5f - sy * 3.0f / sh;
        for (int sx = 0; sx < sw; sx++)
        {
            float x = sx * 3.0f / sw - 1.5f;
            float v = f(x, 0.0f, z);
            int r = 0;
            if (v <= 0.0f)
            {
                float y0 = h(x, z);
                float ny = 0.001f;
                float nx = h(x + ny, z) - y0;
                float nz = h(x, z + ny) - y0;
                float nd = 1.0f / sqrt(nx * nx + ny * ny + nz * nz);
                float d = (nx + ny - nz) / sqrt(3) * nd * 0.5f + 0.5f;
                r = (int)(d * 255.0f);
            }
            img[ i ] = r;
            i += 3;
        }
        i -= nextLineOffset;
    }
    return 0;
}
**/


import win.ui;
/*DSG{{*/
var winform = win.form(text="自绘3D心形图";right=530;bottom=530)
winform.add(
plus={cls=
"plus";left=6;top=6;right=518;bottom=518;z=1}
)
/*}}*/

var w, h = 512, 512
var bmpObj = createBitmap(w, h, 24)
var p = bmpObj.pixs

/**填充随机颜色
..math.randomize()
var rnd = ..math.random
var len = bmpObj.bmiHeader.biSizeImage
for(i=1;len;3){
    p[ i ] = rnd(0, 255)      //b
    p[i+1] = rnd(0, 255)    //g
    p[i+2] = rnd(0, 255)    //r
    //p[i+3] = rnd(0, 255)  //a
}
//**/

import tcc;
var vm = tcc();
vm.compile(code);
vm.mDraw(p, w, h)

var bmp = ..raw.tostring(bmpObj)
winform.plus.foreground = bmp
//..string.save("\Heart.bmp", bmp)

winform.show();
win.loopMessage();

评分

参与人数 1 +40 收起 理由
松江 + 40 很给力!

查看全部评分

38

主题

129

回帖

1045

积分

荣誉会员

积分
1045
发表于 2017-12-2 12:48:35 | 显示全部楼层
谢谢分享

8

主题

34

回帖

273

积分

二级会员

积分
273
 楼主| 发表于 2017-12-9 18:16:44 | 显示全部楼层
无聊把代码稍改了下,把C代码收拾到了dll里,用了多线程,可实时展示绘制进度。。。

  1. /*Bitmap{{*/
  2. class createBitmap{
  3.         ctor(w=0, h=0, c=32){
  4.                 c = c<32 ? 24 : 32
  5.                 var len = ((((c>>3) * w + 3)>>2)<<2) * h
  6.                 this.bf = {
  7.                         WORD bfType = 0x4D42;
  8.                         int  bfSize = 54 + len;
  9.                         WORD bfReserved1;
  10.                         WORD bfReserved2;
  11.                         int  bfOffBits = 54;
  12.                         _struct_aligned = 2;
  13.                 };
  14.                 this.bi = {
  15.                         struct bmiHeader = {
  16.                                 INT         biSize = 40;
  17.                                 int         biWidth = w;
  18.                                 int         biHeight = h;
  19.                                 WORD biPlanes = 1;
  20.                                 WORD biBitCount = c;
  21.                                 INT         biCompression;
  22.                                 INT         biSizeImage = len;
  23.                                 int         biXPelsPerMeter;
  24.                                 int         biYPelsPerMeter;
  25.                                 INT         biClrUsed;
  26.                                 INT         biClrImportant;
  27.                                 _struct_aligned = 2;
  28.                         };
  29.                 //        INT bmiColors[1]
  30.                 }
  31.         }
  32.         struct bf;
  33.         struct bi;
  34.         byte pixs[];
  35. }
  36. /*}}*/

  37. /*dll{{*/
  38. import crypt.bin
  39. var dll = crypt.bin.decodeBase64("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
  40. BDYTZTZLYIwABCB7AQAAADbHCTZLYAwABB
  41. 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
  42. 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
  43. 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
  44. AAAA")
  45. /*}}*/

  46. import win.ui;
  47. /*DSG{{*/
  48. var winform = win.form(text="自绘3D心形图";right=730;bottom=730)
  49. winform.add(
  50. plus={cls="plus";left=5;top=5;right=725;bottom=725;z=1}
  51. )
  52. /*}}*/

  53. var w, h = 720, 720
  54. var bmpObj = createBitmap(w, h, 24)

  55. var trdfunc = function(winform, bmpObj, dll){
  56.         var hdc = ::User32.GetWindowDC(winform.plus.hwnd)
  57.         var w, h = bmpObj.bi.bmiHeader.biWidth, bmpObj.bi.bmiHeader.biHeight
  58.         bmpObj.pixs = ..raw.buffer(bmpObj.bi.bmiHeader.biSizeImage)
  59.        
  60.         var mDraw = ..raw.loadDll(dll, , "cdecl").mDraw
  61.         mDraw(hdc, bmpObj.bi, bmpObj.pixs, w, h)
  62.        
  63.         ::User32.ReleaseDC(winform.plus.hwnd, hdc)
  64.        
  65.         var bmp = ..raw.tostring(bmpObj)
  66.         winform.plus.foreground = bmp
  67. }

  68. thread.create(trdfunc, winform, bmpObj, dll)

  69. winform.show();
  70. win.loopMessage();
复制代码

点评

同意: 5.0
同意: 5
太帅了  发表于 2017-12-12 13:33

0

主题

7

回帖

64

积分

一级会员

积分
64
发表于 2018-1-14 21:46:26 | 显示全部楼层
最近在疯狂研习您的代码,学到很多有用的东西,太帅啦 感谢无私的奉献,再次鞠躬

0

主题

8

回帖

69

积分

一级会员

积分
69
发表于 2018-4-10 18:29:11 | 显示全部楼层
这个就很强大了,得好好研究一下
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-6-13 09:25 , Processed in 0.079842 second(s), 27 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

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