每次有人提到测试时undefined
,都会指出它undefined
不是一个关键字,因此可以设置为"hello"
,所以你应该使用 typeof x == "undefined"
.这对我来说似乎很荒谬.没有人会这样做,如果他们这样做,那将是足够的理由永远不会使用他们写的任何代码......对吗?
我发现一例人谁无意中设定的undefined
到null
,这给出一个理由,以避免假设undefined
不会被覆盖.但是,如果他们这样做了,那么这个bug就不会被发现,我也看不出它有多好.
在C++中,每个人都清楚地知道这是合法的#define true false
,但没有人建议你避免true
使用它0 == 0
.你只是假设没有人会成为一个足够强大的混蛋,如果他们这样做,再也不会相信他们的代码了.
这有没有真正咬过别人分配给undefined
(有意)的人而且它破坏了你的代码,或者这更像是一个假想的威胁?我愿意冒昧地让我的代码更具可读性.这是一个非常糟糕的主意吗?
重申一下,我并不是要求如何防止重新分配未定义.我已经看过那些已经写过100次的技巧了.我问不使用这些技巧是多么危险.
对于一个游戏,我绘制了几千个随机分布的圆形的密集簇,这些圆圈具有不同的半径,由一系列(x,y,r)三元组定义.这是一个包含14,000个圆圈的示例图像:
我有一些动态效果,比如合并群集,但为了实现这一点,我需要每帧重绘所有的圆圈.
绘制的圆圈中的许多(可能是80-90%)被后续绘制覆盖.因此我怀疑通过预处理,我可以通过消除覆盖的圆圈来显着加快我的绘制循环.是否有一种能够以合理的效率识别它们的算法?
我可以忍受相当多的假阴性(即绘制一些实际被覆盖的圆圈),只要它不是那么多,绘制效率会受到影响.我也可以容忍误报,只要它们几乎是正面的(例如删除一些仅覆盖99%的圆圈).我也可以改变圈子的分布方式,只要它看起来还不错.
我阅读了Stefan Gustavson关于单纯噪声的优秀论文,其中我被承诺:
单纯形噪声没有明显的方向伪影
与"经典"佩林噪音形成鲜明对比.我兴奋地实施它,以发现相反的情况似乎是真的.我确实看到了经典噪音中的人工制品,但我看到至少与单轴噪声一样多的伪像,与主轴成45度对齐.将噪声映射到阶跃函数时,它们尤其明显.
为了确保它不是我的实现问题,我使用了别人的JavaScript实现.比较一些图像:
而且这里有一个画廊与他们.在最后一张图像中,查找与水平/垂直方向成45度对齐的边框.他们到处都是.如果需要,我可以突出其中一些,但它们对我来说似乎非常明显.(再次,我也在经典的噪声图像中看到它们.)
编辑:为了更加定量,我采样了100万个随机点,并且对于每个点,我数值计算经典和单纯噪声的梯度,并采用投影到xy平面上的梯度方向的直方图.如果没有方向性伪影,则图形将是平坦的.但你可以看到经典和单纯的噪音每45度就会出现一次峰值.
这是单纯噪声算法的问题吗?这是可以修复的吗?或者我是唯一一个将此视为问题的人?
algorithm procedural-generation noise perlin-noise simplex-noise
我在Ubuntu上,我想将PulseAudio输出记录到文件中,以记录pygame程序.格式没关系,因为我之后可以改变它,所以原始音频很好.
环顾四周,似乎GStreamer可能能够解决这个问题,但我对它并不熟悉,并且广泛的搜索还没有得出答案.因此欢迎涉及GStreamer或其他方面的答案.
谢谢!
我想要关于一个点的闭合的分段线性路径(例如多边形)的绕组数,但另外,我想检测路径何时通过该点.因此,我将标准绕组数加倍.对于具有CCW方向的非交叉多边形,该值将为:
在其他情况下也是如此.(编辑:几个例子的图像)
当点位于边缘或顶点时,我发现的每个算法都会失败.
我的另一个要求是,当所有输入(即点的坐标和路径的顶点)是整数时,它必须给出完全正确的结果.所以这几乎排除了trig函数或平方根,并且必须谨慎使用除法.
我并不需要处理有两个连续的重合点,或一个180度的大转弯退化路径.
无论如何,我想我有一个解决方案.然而,它似乎有点不优雅,我不相信这是正确的.(我真的很困惑当点在顶点时会发生什么.)这是在python中:
def orient((x,y), (a0,b0), (a1,b1)):
return cmp((a1-a0)*y + (b0-b1)*x + a0*b1-a1*b0, 0)
def windingnumber(p0, ps):
w, h = 0, [cmp(p, p0) for p in ps]
for j in range(len(ps)):
i, k = (j-1)%len(ps), (j+1)%len(ps)
if h[j] * h[k] == -1:
w += orient(p0, ps[j], ps[k])
elif h[j] == 0 and h[i] == h[k]:
w += orient(ps[k], ps[i], ps[j])
return w
Run Code Online (Sandbox Code Playgroud)
我想要一个正确算法的链接,或者我的算法正确的一些确认,或者我的算法失败的测试用例.谢谢!
algorithm ×3
geometry ×2
math ×2
gstreamer ×1
javascript ×1
noise ×1
perlin-noise ×1
pulseaudio ×1
python ×1
undefined ×1