小编Fro*_*bot的帖子

2D Perlin噪音

我已经完全掌握了3D中Perlin Noise的艺术,现在我正在尝试将相同的实现用于2D算法.问题似乎在于选择我的渐变方向.在3D中,我在均匀分布的方向上使用16个渐变,这非常有用.在2D我想我会使用8个渐变.上,下,左,右和四个对角线方向.

这是我得到的:

在此输入图像描述

噪声的一般外观总是正确的,但正方形的边缘并不完全匹配.我也尝试使用其他渐变或更少的渐变,但得到类似的结果.在另一个例子中,您可以看到边缘有时会匹配,并且该区域的结果很好 -

在此输入图像描述

当我不使用渐变而只是在4个角中的每个角落随机拾取的值之间进行插值时,我得到了正确的结果,这就是让我觉得渐变部分会弄乱它的原因.

这是我的代码:

//8 different gradient directions
private Point[] grads = new Point[] { 
    new Point(0, 1), new Point(1, 1), new Point(1, 0), new Point(1, -1), 
    new Point(0, -1), new Point(-1, -1), new Point(-1, 0), new Point(-1, 1),};

//takes the dot product of a gradient and (x, y)
private float dot2D(int i, float x, float y)
{
    return
        grads[i].X * x + grads[i].Y * y;
}

public float Noise2D(float x, float y)
{
    int
        ix = …
Run Code Online (Sandbox Code Playgroud)

c# noise

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

三角形的插值

我有一个单位直角三角形和3个顶点的每个顶点的值.我需要插值以在三角形内的某个点找到值.几个小时的搜索没有发现实际上告诉我如何做到这一点.这是我最接近的尝试,实际上非常接近但不太正确 -

                result = 
                v1 * (1 - x) * (1 - y) +
                v2 * x * (1 - y) +
                v3 * x * y;
Run Code Online (Sandbox Code Playgroud)

v1,v2和v3是三角形的3个顶点处的值.(x,y)是您尝试查找值的三角形中的点.

任何一种方法都会对我有所帮助.它不一定需要是单位/右三角形.

更新的信息:我有一个均匀间隔点的网格和每个点的值.我在网格上最近的3个点做了一个三角形.这是一张图片来说明它 - 在此输入图像描述
所以我必须在5,3和7之间进行插值以找到x的值.该点也可以位于另一个三角形内,这意味着您将在5,7之间进行插值,并在该方块的左下角进行插值.

在我展示的代码中,v1 = 5,v2 = 3,v3 = 7.x
是"x"方向的分数距离(范围[0-1]),y是"y"方向的分数距离.
在图片的例子中,x可能约为0.75,y约为0.2

这是我最接近的尝试 -
在此输入图像描述
使用 - 创建 -

        if (x > y) //if x > y then the point is in the upper right triangle
            return
                v1 * (1 - x) * (1 - y) +
                v2 * x * (1 …
Run Code Online (Sandbox Code Playgroud)

geometry interpolation

13
推荐指数
3
解决办法
2万
查看次数

"没有编辑器可用于"无法打开.cs

我的计算机在处理项目时关闭,当我再次打开C#并恢复它时,我收到一个错误说

"for filename.cs"没有可用的编辑器
确保安装了文件类型(.cs)的应用程序

而现在我根本无法访问我的代码.

我正在使用Visual C#2010 express.

我尝试直接打开它,它会调出C#,但.cs文件会在记事本中打开.文件大小为30kb,因此不会被删除.并且在上次运行的调试文件夹中仍然有一个工作的.exe.有没有办法恢复代码?

c# editor

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

GDI +的功能如何如此之快?

我试图重新创建非常简单的GDI +函​​数,例如缩放和旋转图像.原因是一些GDI函数不能在多个线程上完成(我发现了一个使用进程的工作,但不想进入它),并且在一个线程上处理数千个图像并没有几乎削减它.我的图像也是灰度图像,因此自定义函数只需要担心一个值而不是4.

无论我尝试重新创建什么样的函数,即使在高度优化的情况下,它仍然总是慢几倍,尽管与GDI相比大大简化了(我在一维字节数组上操作,每个像素一个字节)

我想也许我旋转每个点的方式可能是不同的,所以我完全把它拿出来,并且基本上有一个功能贯穿每个像素,只是把它设置为它已经是什么,而且只是大致与GDI的速度,即使GDI正在进行实际旋转并且每个像素改变4个不同的值.

是什么让这成为可能?有没有办法使用自己的功能匹配它?

c# gdi+ gdi

5
推荐指数
1
解决办法
342
查看次数

Diamond-Square算法的平滑问题

我使用菱形平方算法生成随机地形.它工作得很好,除了我将这些大锥形状伸出或伸入地形.问题似乎是每时不时地设置一个点太高或太低.

这是问题的图片
截图

当我将平滑度设置得非常高时,可以更好地看到它
截图特写

这是我的代码 -

private void CreateHeights()
    {
        if (cbUseLand.Checked == false) 
            return;
        int
            Size = Convert.ToInt32(System.Math.Pow(2, int.Parse(tbDetail.Text)) + 1),
            SideLength = Size - 1,
            d = 1025 / (Size - 1),
            HalfSide;
        Heights = new Point3D[Size, Size];
        float
            r = float.Parse(tbHeight.Text),
            Roughness = float.Parse(RoughnessBox.Text);

        //seeding all the points
        for (int x = 0; x < Size; x++)
            for (int y = 0; y < Size; y++)
                Heights[x, y] = Make3DPoint(x * d, 740, y * d);

        while (SideLength …
Run Code Online (Sandbox Code Playgroud)

algorithm height procedural-programming map procedural-generation

4
推荐指数
1
解决办法
2271
查看次数

裁剪/缩放ImageNet图像

ImageNet图像的大小均不同,但是神经网络需要固定大小的输入。

一种解决方案是采用以图像的中心点为中心的,适合图像大小的裁切大小。这可行,但有一些缺点。通常,图像中感兴趣的对象的重要部分会被切掉,甚至在某些情况下,正确的对象会完全丢失,而另一个属于不同类别的对象可见,这意味着您的模型将被错误地训练为该图像。

另一种解决方案是使用整个图像,并将其零填充到每个图像具有相同尺寸的位置。但是,这似乎会干扰训练过程,并且该模型将学会在图像边缘附近寻找垂直/水平的黑色斑点。

通常做什么?

crop neural-network imagenet

3
推荐指数
1
解决办法
2292
查看次数

来自 CUDA 代码的 100% GPU 使用率导致屏幕延迟

我有一些 pyCUDA 代码可以使 GPU 保持 100% 的使用率,并且似乎将 GPU 占用到我的屏幕仅每秒更新一次的程度。
更改块和网格大小无济于事。
网格中的每个线程经过大约 130 万次循环,并且只有大约 6 个 16 个线程的块。如果我把它做成一个小循环就没有问题,但不幸的是它必须那么大,而且我认为没有好的方法可以将工作分配到更多的块中。
有没有办法限制我的程序的 GPU 使用,或者改变屏幕的优先级?
Windows 上的 GTX 1060。

cuda gpu pycuda

3
推荐指数
1
解决办法
1497
查看次数

如何在XNA中最大化窗口

这应该是一个非常简单的问题,但经过大量的搜索,似乎没有任何工作的例子.我只是希望我的XNA窗口开始最大化.我知道如何设置窗口的宽度和高度,但这并不完全相同.我还需要在不全屏的情况下这样做.我只想要一个普通的最大化窗口.

c# xna window maximize

2
推荐指数
1
解决办法
3345
查看次数