RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

全部问题

Martin Hope
Stranger in the Q
Asked: 2020-05-21 03:41:07 +0000 UTC

生成各种分形或其他图像的最短和最简单的方法

  • 28

我对计算机图形学很感兴趣,想参加一些比赛。

我想了解新的(对我自己而言)方法来生成从相当简单的公式获得的各种分形或其他图像。

也就是说,比赛的标准是——使用简单的基本公式来获得有趣的图片。


比如有这样一个循环遍历图片中所有像素的实现:

let c = canvas.getContext('2d'), w = canvas.width, h = canvas.height  

let formula = (x, y, cx, cy, m) => {
    return [x/w+cx/w, y/h+cy/h, 0]
}

canvas.onmousemove = e => {
    var img = c.getImageData(0, 0, w, h)
    for(var x = 0; x<w; x++) {
        for(var y = 0; y<h; y++) {
            let value = formula(x, y, e.x, e.y)
            let offset = (y*w + x)*4    
            img.data[offset]     = value[0]*255
            img.data[offset + 1] = value[1]*255
            img.data[offset + 2] = value[2]*255
            img.data[offset + 3] = 255
        }
    }
    c.putImageData(img, 0, 0) 
}

canvas.onmousemove({x: 456, y: 123})
<canvas width="600" height="175" id="canvas"/>

有必要实现一个函数formula来获得一个“有趣”的图像,鼠标坐标是额外的参数

语言 - 任何,但最好js是,因为在线可视化的可能性。

PS:递归方法对我来说不太有趣,特别是如果递归不是尾,因为将其移植到 glsl 将很困难,如果不是不可能的话。

PPS,为了吸引更多的观众,我选择了cpu,我为它写了图片的循环代码,但是如果你喜欢,我更喜欢webgl,所以下面是我绘制时显卡循环遍历所有像素的片段一个关闭整个屏幕的三角形和公式函数是片段着色器:)

let gl = canvas.getContext('webgl');

gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer());
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1,  3, -1, -1, 3, -1]), gl.STATIC_DRAW);

let pid = gl.createProgram();
shader('vertex', gl.VERTEX_SHADER);
shader('fragment', gl.FRAGMENT_SHADER);
gl.linkProgram(pid);
gl.useProgram(pid);

let coords = gl.getAttribLocation(pid, "coords");
gl.vertexAttribPointer(coords, 2, gl.FLOAT, false, 0, 0);
gl.enableVertexAttribArray(coords);

let mouse = gl.getUniformLocation(pid, 'mouse');
let resolution = gl.getUniformLocation(pid, 'resolution');
gl.uniform2f(resolution, gl.drawingBufferWidth, gl.drawingBufferHeight);

let changeCenter = e => {
  e = e.touches ? e.touches[0] : e;
  gl.uniform2f(mouse, e.pageX - canvas.offsetLeft, e.pageY - canvas.offsetTop);
  draw();
}

window.addEventListener('mousemove', changeCenter);
window.addEventListener('touchmove', changeCenter);

draw();

function draw() {
  gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
  gl.clearColor(0, 0, 0, 0);
  gl.drawArrays(gl.TRIANGLES, 0, 3);
}

function shader(src, type) {
  let sid = gl.createShader(type);
  gl.shaderSource(sid, document.querySelector(`script[type="glsl/${src}"]`).textContent);
  gl.compileShader(sid);
  var message = gl.getShaderInfoLog(sid);
  gl.attachShader(pid, sid);
  if (message.length > 0) {
    console.log(src.split('\n').map(function (str, i) {
      return ("" + (1 + i)).padStart(4, "0") + ": " + str
    }).join('\n'));
    throw message;
  }
}
<canvas width="600" height="175" id="canvas"/>

<script type="glsl/vertex">

attribute vec2 coords;

void main(void) {
  gl_Position = vec4(coords.xy, 0.0, 1.0);
}

</script>

<script type="glsl/fragment">

precision highp float;

uniform vec2 mouse;
uniform vec2 resolution;

void main(void) {
    vec2 m = mouse/resolution;
    vec2 p = gl_FragCoord.xy/resolution - 0.5;
    gl_FragColor = vec4(p, m); 
}

</script>

javascript
  • 9 个回答
  • 10 Views
Martin Hope
Павел Игорев
Asked: 2020-12-04 05:40:18 +0000 UTC

是否可以在 svg 中制作整个网站?

  • 28

如果网站的 html-layout 只用svg图片来做,而不是标准的imgor png,会不会有问题呢?跨浏览器兼容性等等?

html
  • 3 个回答
  • 10 Views
Martin Hope
user194625
Asked: 2020-10-17 12:31:24 +0000 UTC

实践中是否使用空继承?

  • 28

有一堂课User。该类是从它继承而来的Friend,其中没有其他内容,即:

public class Friend extends User {

}

我认为这种方式“更漂亮”,特别是当方法getFriends返回 not List<User>, but时List<Friend>。这种方法是否在实践中得到应用?

我还想知道这是否特别适用于模型。也就是说,在数据及其 getter/setter 所在的类中

java
  • 2 个回答
  • 10 Views
Martin Hope
Вячеслав Чернышов
Asked: 2020-09-22 21:03:34 +0000 UTC

(x = x + y) 或 (x += y) - 类型转换的差异

  • 28

面对这样的加法属性。我们有两个变量:

int x = 1;
long y = 2;

y必须添加到x. 如果我们使用简单的加法,IDE 将拒绝编译:

x = x + y;    //Incopatible types

如果我们使用以下结构:

x += y;

然后代码被正确处理。

错误很明显 - 我们正在尝试将其推long入int,IDE 发现潜在错误并且不允许编译。但是为什么会在第二种情况下通过呢?

java
  • 1 个回答
  • 10 Views
Martin Hope
Artur Panteleev
Asked: 2020-08-18 03:44:13 +0000 UTC

是否存在具有 O(1/n) 复杂度的真实算法?

  • 28

是否存在具有 O(1/n) 复杂度的真实算法?我脑子里只有这样的废话:

function test(n) {
  for (i=1; i<100000/n; i++) {
    dosomething();
  }
}
алгоритм
  • 3 个回答
  • 10 Views
上一页
下一页

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5