小编jok*_*oon的帖子

写了一些perlin噪声类代码,看起来很块

之前回答的问题似乎没有回答我的问题"Blocky"Perlin噪音

我试图尽可能地简化我的代码,使我的代码可读和易懂.

我不使用置换表,而是使用mt19937生成器.

我使用SFML

using namespace std;
using namespace sf;
typedef Vector2f Vec2;
Sprite spr;
Texture tx;
// dot product
float        prod(Vec2 a, Vec2 b)       { return a.x*b.x + a.y*b.y; }
// linear interpolation
float         interp(float start,float end,float coef){return coef*(end-start)+start;}
// get the noise of a certain pixel, giving its relative value vector in the square with [0.0 1.0] values
float getnoise(Vec2&A, Vec2&B, Vec2&C, Vec2&D, Vec2 rel){
    float
    dot_a=prod(A ,Vec2(rel.x   ,rel.y)),
    dot_b=prod(B ,Vec2(rel.x-1 ,rel.y)),
    dot_c=prod(C ,Vec2(rel.x   ,rel.y-1)),
    dot_d=prod(D ,Vec2(rel.x-1 …
Run Code Online (Sandbox Code Playgroud)

c++ procedural-generation noise perlin-noise sfml

12
推荐指数
1
解决办法
2031
查看次数

为什么在MSVC中默认将浮点值(如3.14)视为双精度?

为什么我需要输入3.14f而不是3.14才能禁用所有这些警告?这有一个连贯的原因吗?

c++ floating-point double visual-c++

10
推荐指数
2
解决办法
5582
查看次数

这个存储方法叫什么?

假设我有一个包含100个随机整数值的数组.我可以改为存储第一个,并将每个连续整数之间的距离放在一起,而不是按原样存储它们.

这个方法怎么称呼?

我知道这个方法看起来完全没用,但它可以用于存储3D模型数据,其中彼此相邻存储的连续顶点实际上非常接近:我可以使用8位整数的数组,而不是使用32位.

algorithm

10
推荐指数
1
解决办法
224
查看次数

什么是粗网格搜索和细网格搜索?

我正在阅读这个答案

用于 2D 碰撞检测的四叉树的高效(并得到很好的解释)实现

并遇到这一段

好吧,实际上四叉树并不是我最喜欢的用于此目的的数据结构。我倾向于更喜欢网格层次结构,例如世界的粗网格,区域的更细的网格,以及子区域的更细的网格(3 个固定级别的密集网格,不涉及树),具有行-基于优化,因此其中没有实体的行将被释放并变成空指针,同样完全空的区域或子区域变成空值。虽然这个在一个线程中运行的四叉树的简单实现可以在我的 i7 上以 60+ FPS 处理 100k 代理,但我已经实现了可以处理几百万个代理在旧硬件(i3)上每帧相互反弹的网格。此外,我一直很喜欢网格如何使预测它们需要多少内存变得非常容易,因为它们不细分单元格。

这种类型的网格看起来很直观,听起来有点像“N 阶”网格,其中每个父节点有 N 个子节点,而不是 4 个子节点。N^3 可以比 4^3 走得更远,这允许更好的精度和潜在的(我猜)更少的分支(因为要分支的节点少得多)。

我有点困惑,因为我会直觉地使用一个或可能是 3 个 std::map< operator()来减少它的内存占用,但我不确定它会这么快,因为查询 AABB 意味着堆叠几次访问都是 O(log n)。

他所说的那些基于行的优化到底是什么?这种类型的网格搜索常见吗?

我对 az 阶曲线有一些了解,而且我对四叉树并不完全满意。

performance quadtree binary-search-tree space-partitioning

10
推荐指数
1
解决办法
2402
查看次数

FFMPEG 的 xstack 命令导致声音不同步,是否可以在单一编码中混合音频?

我编写了一个生成 xstack 复杂过滤器命令的 python 脚本。视频输入是此处描述的几种格式的混合:

我生成了 2 个命令,一个用于 xstack 过滤器,一个用于音频混合。

这是堆栈命令:(抱歉,文本没有换行!)

'c:/ydl/ffmpeg.exe',
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-filter_complex',
'[0]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf0];[rsclbf0]fps=24[rscl0];[1]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf1];[rsclbf1]fps=24[rscl1];[2]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf2];[rsclbf2]fps=24[rscl2];[3]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf3];[rsclbf3]fps=24[rscl3];[4]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf4];[rsclbf4]fps=24[rscl4];[5]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf5];[rsclbf5]fps=24[rscl5];[6]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf6];[rsclbf6]fps=24[rscl6];[7]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf7];[rsclbf7]fps=24[rscl7];[8]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf8];[rsclbf8]fps=24[rscl8];[9]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf9];[rsclbf9]fps=24[rscl9];[10]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf10];[rsclbf10]fps=24[rscl10];[11]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf11];[rsclbf11]fps=24[rscl11];[12]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf12];[rsclbf12]fps=24[rscl12];[13]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf13];[rsclbf13]fps=24[rscl13];[14]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf14];[rsclbf14]fps=24[rscl14];[rscl0][rscl1][rscl2][rscl3][rscl4]concat=n=5[cct0];[rscl5][rscl6][rscl7]concat=n=3[cct1];[rscl8][rscl9][rscl10]concat=n=3[cct2];[rscl11][rscl12][rscl13][rscl14]concat=n=4[cct3];[cct0][cct1][cct2][cct3]xstack=inputs=4:layout=0_0|w0_0|0_h0|w0_h0',
'output.mp4',
Run Code Online (Sandbox Code Playgroud)

这是 mix_audio 命令:

'c:/ydl/ffmpeg.exe',
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4' …
Run Code Online (Sandbox Code Playgroud)

python audio video mp4 ffmpeg

10
推荐指数
1
解决办法
321
查看次数

使用纯C与C编译器和C++编译器的"C部分"有什么区别?

我不确定C中的编程真正意味着什么: - 使用C编译器在纯C中编程或使用C++编译器在C中编程.

除了C的C语法和C语言的C++语法之间的差异之外,我可以肯定地说,在性能方面,两个可执行文件之间绝对存在差异(或者极少数情况下)吗?

我正在考虑这个问题,因为在游戏编程中,每个渲染部分,游戏对象部分和游戏脚本部分都可以编程完全不同的语言,以获得执行速度和易于开发之间的最佳折衷,在每一部分.

部件之间的这种分离对我来说很重要,例如,我想制作一个多功能的3D冒险引擎,社区可以制作自己的游戏玩法而不必乱用引擎.它只能制作具有单个角色和几个敌人的游戏,因此将涵盖不同的游戏类型:黑客和斜线,渗透,角色扮演,平台等.

我应该把这两段放在gamedev.stackexchange中,但第一部分只是关于语言......

c c++

7
推荐指数
2
解决办法
2179
查看次数

那么现在struct可以有虚函数和支持继承吗?那么班级有什么不同?信息隐藏的真正目的是什么?

可能重复:
C++中struct和class之间有什么区别

http://www.cplusplus.com/reference/std/typeinfo/type_info/

我想我的"老师"并没有告诉我很多关于C++中struct和classes之间的区别.

我在其他一些问题中读到有关继承的问题,结构默认是公共的...我也猜测struct没有构造函数/析构函数...

那么其他的差异呢?他们这么重要吗?

在谈到私有/受保护的属性/方法时,它们在运行时是不可访问的,只是因为编译器在编译时告诉它并报告错误,对吧?然后将这些功能与类进行比较,"信息隐藏"真正为程序员带来了什么?是否在这里,当有人重用该类时,这个人不会滥用该类,因为编译器会报告私有/受保护的东西?

我仍然为信息隐藏的真正目的而苦苦挣扎,它仍然希望在我的脑海中发出声音,因为它为程序带来更多安全性,意味着更少的安全漏洞,但我真的很困惑这种设计在语言中的目标...... (而且我不打算以任何方式反对C++,我只是想了解在什么情况下这个功能可能有趣或不;如果不是,那不是问题,但我只是想知道...).

c++ inheritance struct information-hiding class

7
推荐指数
1
解决办法
1万
查看次数

typeid如何工作以及对象如何存储类信息?

http://en.wikipedia.org/wiki/Typeid

这对我来说似乎是一个谜:编译器如何存储有关对象类型的信息?基本上,一个空类,一旦实例化,在内存中的大小不是零.

c++ typeid

7
推荐指数
2
解决办法
6524
查看次数

每次我使用struct而不是class时,我会杀死一只小猫吗?

struct默认情况下是公共的,默认情况下class是私有的.

让我们以Ogre3D为例; 如果我class用struct 更改所有出现,它会编译(我猜),并且引擎就像以前一样工作.

如果我是对的,编译后的代码与之前完全相同,因为只有编译器会检查是否调用了私有/受保护的方法,而不是在运行时检查它.

如果我仍然是对的,class只是一个关键词,只是让它可爱的眼睛和乞求"请封装你的数据:你将保存一只小猫",而私人/受保护的范围仍然取决于用户.

我知道我听起来有点蹩脚或无关紧要的反叛(类似"C是KISS老兄,不要去")

回到问题:标准对于生成机器代码structclass生成机器代码之间的这种微小差异有何看法?为什么要添加一个关键字,并试图用所谓的"OO模型"给程序员留下深刻印象,而它完全没有强制执行呢?它受到了java的影响吗?

c++ struct class

7
推荐指数
2
解决办法
1456
查看次数

如何从python中的另一个线程中止socket.recvfrom()?

这看起来像是如何从Python中的另一个线程中止socket.recv(),但事实并非如此,因为我想在一个线程中中止recvfrom(),这是UDP,而不是TCP.

这可以通过poll()或select.select()来解决吗?

python multithreading udp pthreads

7
推荐指数
1
解决办法
1441
查看次数