资源简介
线积分卷积,可以利用白噪声图像实现二维向量矩阵的可视化,多用于流体研究。
代码片段和文件信息
#include “stdafx.h“
#include
#include
#include
#include
#define SQUARE_FLOW_FIELD_SZ 400
#define DISCRETE_FILTER_SIZE 2048
#define LOWPASS_FILTR_LENGTH 10.00000f
#define LINE_SQUARE_CLIP_MAX 100000.0f
#define VECTOR_COMPONENT_MIN 0.050000f
void SyntheszSaddle(int n_xres int n_yres float* pVectr);
void NormalizVectrs(int n_xres int n_yres float* pVectr);
void GenBoxFiltrLUT(int LUTsiz float* p_LUT0 float* p_LUT1);
void MakeWhiteNoise(int n_xres int n_yres unsigned char* pNoise);
void FlowImagingLIC(int n_xres int n_yres float* pVectr unsigned char* pNoise
unsigned char* pImage float* p_LUT0 float* p_LUT1 float krnlen);
void WriteImage2PPM(int n_xres int n_yres unsigned char* pImage char* f_name);
void main()
{
int n_xres = SQUARE_FLOW_FIELD_SZ;
int n_yres = SQUARE_FLOW_FIELD_SZ;
float* pVectr = (float* ) malloc( sizeof(float ) * n_xres * n_yres * 2 );
float* p_LUT0 = (float* ) malloc( sizeof(float ) * DISCRETE_FILTER_SIZE);
float* p_LUT1 = (float* ) malloc( sizeof(float ) * DISCRETE_FILTER_SIZE);
unsigned char* pNoise = (unsigned char* ) malloc( sizeof(unsigned char) * n_xres * n_yres );
unsigned char* pImage = (unsigned char* ) malloc( sizeof(unsigned char) * n_xres * n_yres );
SyntheszSaddle(n_xres n_yres pVectr);
NormalizVectrs(n_xres n_yres pVectr);
MakeWhiteNoise(n_xres n_yres pNoise);
GenBoxFiltrLUT(DISCRETE_FILTER_SIZE p_LUT0 p_LUT1);
FlowImagingLIC(n_xres n_yres pVectr pNoise pImage p_LUT0 p_LUT1 LOWPASS_FILTR_LENGTH);
WriteImage2PPM(n_xres n_yres pImage “LIC.ppm“);
free(pVectr); pVectr = NULL;
free(p_LUT0); p_LUT0 = NULL;
free(p_LUT1); p_LUT1 = NULL;
free(pNoise); pNoise = NULL;
free(pImage); pImage = NULL;
}
/// synthesize a saddle-shaped vector field ///
void SyntheszSaddle(int n_xres int n_yres float* pVectr)
{
for(int j = 0; j < n_yres; j ++)
for(int i = 0; i < n_xres; i ++)
{
int index = ( (n_yres - 1 - j) * n_xres + i ) << 1;
pVectr[index ] = - ( j / (n_yres - 1.0f) - 0.5f );
pVectr[index + 1] = i / (n_xres - 1.0f) - 0.5f;
}
}
/// normalize the vector field ///
void NormalizVectrs(int n_xres int n_yres float* pVectr)
{
for(int j = 0; j < n_yres; j ++)
for(int i = 0; i < n_xres; i ++)
{
int index = (j * n_xres + i) << 1;
float vcMag = float( sqrt( double(pVectr[index] * pVectr[index] + pVectr[index + 1] * pVectr[index + 1]) ) );
float scale = (vcMag == 0.0f) ? 0.0f : 1.0f / vcMag;
pVectr[index ] *= scale;
pVectr[index + 1] *= scale;
}
}
/// make white noise as the LIC input texture ///
void MakeWhiteNoise(int n_xres int n_yres unsigned cha
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 769 2009-02-16 17:43 LIC\StdAfx.h
文件 290 2009-02-16 17:43 LIC\StdAfx.cpp
文件 1190 2009-02-16 17:43 LIC\ReadMe.txt
文件 529 2009-02-16 17:43 LIC\LIC.dsw
文件 33792 2009-02-16 17:46 LIC\LIC.ncb
目录 0 2009-02-16 17:43 LIC\Debug
文件 9948 2009-02-16 17:44 LIC\LIC.cpp
文件 889 2009-02-16 17:46 LIC\LIC.plg
文件 4542 2009-02-16 17:45 LIC\LIC.dsp
文件 480018 2009-02-16 17:46 LIC\LIC.ppm
文件 48640 2009-02-16 17:46 LIC\LIC.opt
目录 0 2009-02-16 17:43 LIC
----------- --------- ---------- ----- ----
580607 12
- 上一篇:CATIA和RADE(CAA)破解补丁及说明
- 下一篇:基于stm32的音乐频谱显示
相关资源
- 在CERN LHC的pPb碰撞中探索矢量介子光生
- 强子对撞机中光子与强子相互作用中
- 用ATLAS探测器产生三个大矢量玻色子的
- 解释大型强子对撞机双光子过量的场
- 大型强子对撞机上的矢量le夸克和75
- 质子的衍射非相干矢量介子产生:胶
- 强子对撞机γγ相互作用中双矢
- 风味动态域壁中lt;mathgt; mrow mn 2 / mn
- 满足PCAC关系的晶格QCD的轴向矢量形状
- 大动量有效理论中矢量介子的光锥分
- 高斯-贝内特引力的全息矢量超导体
- 手性摄动理论中有魅力和底层矢量介
- 精确结果为3d N $$ \\ mathcal {N} $$ = 2 S
- 约化分子电距矢量用于茎用莴苣花挥
- 湖北省边界矢量数据
- ArcGiS手把手教程三——配准和矢
- 用矢量玻色子融合探测希格斯门暗物
- 大型强子对撞机中单个矢量样夸克生
- 用希格斯玻色子对产生探测类似矢量
- 使用ATLAS检测器在s = 13 TeV的pp碰撞中搜
- 搜索在s = 13 $$ \\ sqrt {s} = 13 $$ TeV的质
- 有源滤波器的预测电压空间矢量控制
- 基于RBF神经网络在线辨识的永磁同步
- 应用矢量井网优化深水油藏井位部署
- 内置错位结构LPFG二维弯曲矢量传感器
- 具有矢量介子优势的辐射衰减J. M.
- 基于DSP的SVPWM变频调速系统
- 全国矢量地图大全 shp格式.zip
- 天津市地图 shp格式
- 中国矢量数据
评论
共有 条评论