`
cloudtech
  • 浏览: 4619047 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

二维空间中的声线模拟

 
阅读更多

感觉这个挺有意思的就做了一下,虽然是和虚拟现实沾边的东西,但说不定以后在数据挖掘上也能用来给数据在不同属性上分类什么的。

做了个最简单的:模拟声音在理想二维空间中的反射,而且假设二维空间是封闭的矩形区域,其中可能有若干的垂直或者水平的墙,将空间分割为若干的子空间,空间中有一个声源和一个接收点。

声源向四周均匀发射n条声线,反射深度为m(经过m次反射,强度会衰减到0),空间中公有y条互不交叉的墙壁。

例如下图是程序的演示效果:


蓝色的为墙壁,共有7条,声源在左上角,向周围均匀发出10条声线,最终经过反射,有1条到达接收者。

实现这个的算法有很多,其中效率比较高的是BSP二叉树算法。

BSP树就是用来对N维空间中的元素进行排序和查找的二叉树。BSP树表示整个空间,BSP树中的任意一个接点表示一个凸的子空间。每个接点包含一个“超平面”,将这个接点表示的空间分割成两个子空间。每个接点除了保存其两个子接点的引用以外,还可以保存一个或多个元素。对于N维空间,超平面为N-1维的对象。通常,用BSP树来表示二维或者三维空间,这时,空间中的元素分别指的是线段和多边型。

在二维空间中,就是选择一条线段作为树的根节点,被线段分隔开的两个空间中的线段分别在左右两棵子树中。二叉树调整平衡后查找的平均时间纷杂度为O(log n),所以整个绘制声线的过程的时间复杂度为n*m*log(y)。

但是建个平衡的BSP二叉树要写多少代码啊,我就用了个很naive的算法,压根没有去存储空间信息,直接存下了所有的墙壁线段,其中求一条声线的反射线的伪代码如下:

输入:一条声线L

返回:输入声线的反射声线RL

List<wall> walls;
List<Point> points;
遍历所有的墙壁
{
	如果墙壁与L有交点P
	{
		walls.add(墙壁)
		points.add(P)
	}
}
遍历points,找出距离L出射点最近的一个反射点Pr
根据Pr和对应的wall求出反射声线RL,返回RL

用了这个算法,整个过程的复杂度就是m*n*y了,但是对于几十条墙壁、几十条声线和十几个反射深度,还是眨眼功夫的事,效果如上图所示。绘图用的是GDI+。

分享到:
评论

相关推荐

    Java二维空间直线模拟代码

    内容索引:JAVA源码,综合应用,二维 这是使用Java在二维空间里模拟直线的代码,里面有三个类,分别表示线、点、数。你需要配合其它程序才行运行,因此没有截图。

    基于流体力学方程的二维烟雾模拟 (2007年)

    采取欧拉法将烟雾流体场划分为二维网格空间,并将烟雾速度场和浓度场分布定义于每个网格中心点;最后,通过双线性插值获得整幅图象中每个象素的烟雾浓度。试验证明该算法能实时高效地模拟具有真实感的二维烟雾效果。

    基于ArcGIS Engine的水质模拟预测研究

    本文在前人研究的基础上,用边界拟合坐标系方法改进了河势贴体河道平面二维正交网格,并用此网格方法进行二维水域网格化,改进后的方法不仅考虑与河势拟合,而且考虑与河道边界线的拟合,生成的网格可以更接近于实际河道...

    二维圆柱坐标下FDTD法对多频电磁波测井的数值模拟 (2004年)

    在介质围绕Z轴旋转对称的情况下,三维直角坐标下的麦克斯韦方程可变成两组分别对应TM波和TE波的二维柱坐标下的偏微分方程。采用线圈作为电磁波测井的发射器和接收器的时候,可采用TE波对应的方程,这时相当于磁极子...

    利用bezier进行三维建模与计算机模拟

    根据水稻叶片的三维形态特征,应用Bezier曲线描述水稻叶片的边缘信息和一元二次曲线方程描述叶 脉曲线,构建一种符合生物学规律的水稻叶片弯曲三维模型...扭曲模型,较真实地反应了自然条件下水稻叶片的三维空间形态。

    燃油横焰玻璃熔窑火焰空间的二维数值模拟 (2002年)

    以计算燃烧学和计算传热学基本理论为基础,建立了燃油玻璃熔窑火焰空间燃烧过程三维数学模型,包括雾化油滴燃烧的轨道模型和气相流动与传热模型。在模型上研究了日产400t燃油浮法玻璃熔窑火焰空间的流场和温度场分布;...

    国内外主流的三维GIS软件

     介绍:EV-Globe具有大范围的、海量的、多源的数据一体化管理和快速三维实时漫游功能,支持三维空间查询、分析和运算,可与常规GIS软件集成,可方便快速构建三维空间信息服务系统,亦可快速在二维GIS系统完成向三维...

    透镜导管耦合系统中光线三维追迹模拟分析

    利用几何光学理论, 在三维空间内, 建立了空心透镜导管中抽运光束传播的数学模型, 推导了光束传播的三维轨迹方程; 在全三维光线追迹的理论分析基础上, 开发了模拟透镜导管耦合系统传输光线的3D计算机仿真软件; 通过该...

    3D—GIS中空间曲线绘制方法研究 (2005年)

    应用二维曲线绘制中光滑效果比较好的张力样条函数方法研究了3D-GIS中空间曲线的绘制问题。在理论对比分析的基础上,选用某山区一段公路上的一组实测数据进行了模拟计算。结果表明,张力样条函数从理论上解决了取得...

    ABAQUS中三维梁单元材料单轴本构模型的二次开发

    为了在ABAQUS软件中实现对三维钢筋混凝土纤维梁单元的弹塑性计算,利用ABAQUS软件隐式模块下的用户...结果表明,本文基于ABAQUS软件二次开发的材料单轴滞回模型能够较好地模拟空间钢筋混凝土杆系结构的弹塑性滞回行为。

    COMSOL模拟仿真静电场及对场强和等势面分析ε.pdf

    COMSOL模拟仿真静电场及对场强和等势面分析ε.pdf

    利用强迫流示踪反演地下岩溶的空间维度

    试验结果表明:封闭岩溶洞穴流场中投源点处示踪剂浓度历时曲线转折点的出现时间随水动力条件的提升而提前,在一维岩溶洞穴中,与转折点对应的示踪剂浓度随水动力条件的提升而降低,二、三维岩溶洞穴中则会出现转折点对应...

    基于双二次插值的2.5维FCSEM有限元正演模拟 (2014年)

    最后对2个二维地电模型进行有限元模拟,分别得到TE及TM模式下的视电阻率及相位等值线断面图,通过对比分析可知模拟结果均能在不同程度上反映出异常体,从而进一步说明本文算法能够对2.5维频率域可控源电磁进行有效地...

    基于空间曲线理论的植物叶片形态模拟 (2011年)

    利用空间曲线理论建立了植物叶片的形态模型。...在曲率函数是分段幂函数的情况下,证明了二维叶片的生长方向总是沿着初始叶片的对称轴方向。通过仿真试验验证了本文算法的可行性。本文的方法可以绘制出复杂的叶子。

    计算机图形学基础-pdf.zip

    6.6OpenGL中的二维观察变换 第7章三维变换及三维观察 7.1三维变换的基本概念 7.1.1几何变换 7.1.2三维齐次坐标变换矩阵 7.1.3平面几何投影 7.2三维几何变换 7.2.1三维基本几何变换 7.2.2三维复合...

    ArcGIS地理信息系统空间分析实验教程

    624三维空间分析193 63ArcGIS 9空间分析模块和功能194 第七章矢量数据的空间分析196 71缓冲区分析196 711基本概念196 712缓冲区的建立196 72叠置分析202 721图层擦除(Erase)202 722识别叠加(Identity)204 723...

    空间数据库管理系统概论.docx

    空间数据库管理系统概论全文共3页,当前为第1页。空间数据库管理系统概论全文共3页,当前为第1页。第一章 绪论 空间数据库管理系统概论全文共3页...关系模型:由一组关系组成,每个关系的数据结构是一张规范的二维表。

    Math_java_

    使用Java在二维空间里模拟直线的代码,里面有三个类,分别表示线、点、数。

    论文研究-基于基准线的多候选数学公式识别.pdf

    该方法模拟生物视觉的感知过程,将人脸图像分解成由若干二值图像组成的认知序列,计算序列中的每幅二值图像的熵作为人脸特征,基于支持向量机实现分类与识别;同时克服了标准的脉冲耦合神经网络模型参数过多的缺点,...

Global site tag (gtag.js) - Google Analytics