小编Vel*_*rok的帖子

如何在clojure中创建一个懒惰的随机数序列

如何创建一个懒惰的随机数序列?

我目前的代码:

(import '(java.util Random))

(def r (new Random))
(defn rnd [_] 
    (.nextInt r 10))

(defn random-numbers [max] 
    (iterate #(.nextInt r max) (.nextInt r max)))

(println (take 5 (random-numbers 10)))
Run Code Online (Sandbox Code Playgroud)

执行它会抛出异常:

(线程"main"中的异常clojure.lang.ArityException:在clojure.lang上的clojure.lang.AFn.throwArity(AFn.java:437)传递给:user $ random-numbers $ fn的args(1)错误的数量. AFn.invoke(AFn.java:39)在clojure.lang.LazySeq.seq的clojure.lang.LazySeq.sval(LazySeq.java:42)的clojure.core $ iterate $ fn__3870.invoke(core.clj:2596) (LazySeq.java:60)位于clojure.core $ seq.invoke(core.clj:133)的clojure.RT.seq(RT.java:466),位于clojure.core $ take $ fn__3836.invoke(核心. clj:2499)在clojure.lang.LazySeq.seq(LazySeq.java:42)的clojure.lang.LazySeq.seq(LazySeq.java:60)的clojure.lang.Cons.next(Cons.java:39)at clojure.core $ next.invoke(core.clj:64)位于clojure.core $ nthnext.invoke(core.clj:2752)的clojure.core $ print.sexttial(pd.java:580) .invoke(core_print.clj:57)at clojure.core $ fn__4990.invoke(core_print.clj:140)at clojure.lang.MultiFn.invoke(MultiFn.java:167)at clojure.core $ pr_on.invoke(core. clj:3264)在clojure.core $ pr.invoke(core.clj:3276)的clojure.lang.AFn.appl yToHelper(AFn.java:161)位于clojure.core $ Rest.nvoke(core.clj:600)的clojure.core $ resn.doInvoke(core.clj:600)中的clojure.lang.RestFn.applyTo(RestFn.java:132) :3309)在clojure.core(RestFn.java:137)的clojure.core $ apply.invoke(core.clj:600)at clojure.core $ println.doInvoke(core.clj:3329)at clojure用户$ eval7.invoke(testing.clj:12)的.lang.RestFn.invoke(RestFn.java:408)位于clojure.lang.Compiler.eval(Compiler.java:6465)的clojure.lang.Compiler.load( …

clojure

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

使用uniform sampler2d []时无法解释的行为

对不起,这需要一点解释.我试图让它变得尽可能简单.

我想做什么: 我可视化高度场.高度字段可以具有多个补丁.贴片是一种较小的纹理,可以改变高度字段.

我正在使用OpenGL 4.0,主要是tesselation着色器.但是对于这个问题,这应该是无关紧要的.

什么工作已经完成. 我有高度字段(没有补丁)的可视化工作.关于该问题的有趣部分是细分评估着色器和片段着色器.

镶嵌评价着色器读取每个顶点从高度场采样高度.

layout(quads, fractional_odd_spacing, ccw) in;

out float onEdge;
out float teDistanceToMinHeight;
out vec4 tcPosition;

void main()
{
    // bilinear interpolate: position
    vec4 pos_a    = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);
    vec4 pos_b    = mix(gl_in[3].gl_Position, gl_in[2].gl_Position, gl_TessCoord.x);
    vec4 position = mix(pos_a, pos_b, gl_TessCoord.y);

    // bilinear interpolate: hf texture coordinate
    vec2 tex_a    = mix(gl_in[0].gl_TexCoord[HFTexCoordID].xy, gl_in[1].gl_TexCoord[HFTexCoordID].xy, gl_TessCoord.x);
    vec2 tex_b    = mix(gl_in[3].gl_TexCoord[HFTexCoordID].xy, gl_in[2].gl_TexCoord[HFTexCoordID].xy, gl_TessCoord.x);
    vec2 hfTexCoord = mix(tex_a, tex_b, gl_TessCoord.y);

    float height = getHeightFieldHeight(hfTexCoord);
    position.y = …
Run Code Online (Sandbox Code Playgroud)

opengl shader glsl opengl-4

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

为什么这个QT应用程序会退出SIGABRT信号?

我是Qt的新手.所以我开始重新实现一个入门示例:链接.

但是我关闭窗口时会收到SIGABRT信号.其原因很明显是由于一些内存管理错误.

您可以在下面找到callstack和相关代码.该行editWindow.setLayout(&layout);导致错误.布局类是否在销毁时删除小部件,因此要求拥有它们?

什么是这种行为的原因?以及如何解决它?

最好的祝福.

信息
调用
调用堆栈

资源

  QPushButton testButton("Test");

  QVBoxLayout layout;
  layout.addWidget(&testButton);

  QWidget editWindow;
  // the following line is the source of the error
  editWindow.setLayout(&layout);
  editWindow.show();

  int val = app.exec();
Run Code Online (Sandbox Code Playgroud)

c++ opengl qt4 sigabrt

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

标签 统计

opengl ×2

c++ ×1

clojure ×1

glsl ×1

opengl-4 ×1

qt4 ×1

shader ×1

sigabrt ×1