我已经做了几年的面向对象编程,而且我没有做太多的函数式编程.我对飞行模拟器感兴趣,并对Lisp的函数编程方面感到好奇.飞行模拟器或任何其他真实世界的模拟器在面向对象的范例中对我有意义.
这是我的问题:
面向对象是表示真实世界模拟域的最佳方式吗?
我知道Common Lisp有CLOS(OO for lisp),但我的问题是关于用函数式语言编写飞行模拟器.因此,如果您要在Lisp中编写它,您会选择使用CLOS还是以函数方式编写它?
有没有人对使用lisp或任何功能语言编写飞行模拟器进行编码?
更新11/8/12 - 对于那些感兴趣的人来说类似的问题 - > 函数式编程如何应用于模拟?
我正在编写一个客户端模拟程序,其中所有模拟客户端都针对服务器运行一些预定义的例程 - 这是一个在具有四个实例的azure中运行的Web服务器.
连接到服务器后,所有模拟客户端都运行相同的例程.
在任何时候,我都希望使用我的程序模拟300到800个客户端.
我的问题是:我应该创建N个客户端类实例并在N个不同的线程中运行它们吗?要么
我应该使用任务库来做这些事吗?
我正在尝试测试使用数据库连接的应用程序.我想做的是将带宽限制在1 MBit等,以便在现实条件下更好地感受应用程序.
我已经使用Wireshark来查看与DB的通信,我希望Wireshark有这样的功能,但似乎没有办法做那样的事情.
有什么建议?
好吧,在.NET 4中,Microsoft添加了HandleProcessCorruptedStateExceptions属性:
HandleProcessCorruptedStateExceptionsAttribute类
我想测试这个功能.如何将我的应用程序置于"腐败状态"?
我已经离开了造型业,可以说,现在已经有一段时间了.当我在大学时,我使用的大多数模型都是用FORTRAN编写的,我从来不喜欢它.我正在寻求回归科学,所以我想知道是否有适合这种应用的功能集的现代语言.你认为什么是模拟复杂物理系统的最佳语言?
我想在三维空间中模拟一些具有吸收和反射的传播波.我想用python做.我应该使用numpy吗?我应该使用一些特殊的库吗?
我该如何模拟波浪?我可以使用波动方程吗?但是,如果我有反思怎么办?有更好的方法吗?我应该用矢量吗?但是当光线发散时,强度会降低.难.
提前致谢.
我将在接下来的几个月里提出很多问题.对于我的九年级科学博览会项目,我想创建一个交通模拟器,以测试互连的交通信号灯是否可以增加交通流量.我有几个通用的问题,我需要帮助...
我不是在寻找具体的代码,只是很好的指针和资源来帮助我开始.任何帮助表示赞赏,C.Ruhl.
PS我只是在高中所以没有高级数学符号请:)
我从零开始制作一个刚体物理引擎(用于教育目的),我想知道我是否应该为它选择单精度或双精度浮点数.
我将使用OpenGL对其进行可视化,并使用glm库来计算引擎内部以及可视化内容.惯例似乎是在任何地方使用浮动OpenGL,glm::vec3并且glm::vec4似乎在float内部使用.我也注意到有glm::dvec3,glm::dvec4但似乎没有人使用它.我该如何决定使用哪个?double似乎有意义,因为它在今天的硬件上具有更高的精度和几乎相同的性能(据我所知),但float 除了一些GLu的功能和一些GLFW 之外,其他一切似乎都在使用.
我正在考虑使用Kotlin进行仿真框架,并注意到编译器为每个可以从java访问的方法交织静态checkParameterIsNotNull调用.每次运行此方法时,通过访问(并转储?)调用堆栈,检查方法参数是否为空.现在在典型的模拟框架中,运行次数可能达到数百万,我想知道这种功能对性能的影响.
如果可以选择将其关闭?
这种流体模拟基于Stam的论文.在第7页,他描述了平流背后的基本思想:
从两个网格开始:一个包含上一个时间步长的密度值,另一个包含新值.对于后者的每个网格单元,我们通过速度场向后追踪单元的中心位置.然后,我们从先前密度值的网格线性插值,并将此值分配给当前网格单元格.
Advect代码.两个密度网格是d和d0,u并且v是速度分量,dt是时间步长,N(全局)是网格大小,b可以忽略:
void advect(int b, vfloat &d, const vfloat &d0, const vfloat &u, const vfloat &v, float dt, std::vector<bool> &bound)
{
float dt0 = dt*N;
for (int i=1; i<=N; i++)
{
for (int j=1; j<=N; j++)
{
float x = i - dt0*u[IX(i,j)];
float y = j - dt0*v[IX(i,j)];
if (x<0.5) x=0.5; if (x>N+0.5) x=N+0.5;
int i0=(int)x; int i1=i0+1;
if (y<0.5) …Run Code Online (Sandbox Code Playgroud) simulation ×10
c++ ×2
physics ×2
.net ×1
bandwidth ×1
c# ×1
corrupt ×1
javascript ×1
kotlin ×1
lisp ×1
modeling ×1
networking ×1
numpy ×1
opengl ×1
performance ×1
python ×1
simulator ×1
state ×1
wave ×1
wireshark ×1