标签: processing

直观展示算法进度

我试图直观地展示处理中的一些算法(但实际上,这个问题适用于任何具有 GUI 框架的语言)。我的问题是,一个带有根据每秒帧数更新的绘制循环的程序,如何执行算法并更新它的视觉显示?

一个例子是,如果我将随机值数组显示为条形图。我想使用不同的排序(冒泡排序、快速排序、合并排序)对该数组进行排序。如何通过在新的动画帧中显示每个交换来显示算法的每个步骤?

或者另一个例子是路径查找。我想展示BFS、DFS、A*的步骤,而不仅仅是最终的解决方案路径(所有搜索到的pats)。

我正在寻找的视觉效果的示例可以在有关这些算法的维基百科文章中找到:

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

http://en.wikipedia.org/wiki/File:Astar_progress_animation.gif

问题是,当算法完成时,绘制循环仅循环一次,因此用户看不到进度。

我唯一能想到的是有一个“状态”对象,其中包含算法每个步骤的相关值。完成后,循环遍历每个状态并直观地显示它。有没有更好的办法?

java processing

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

未处理的异常类型:processing.org 中的 InstantiationException

我正在尝试在处理中执行一个简单的 Class.newInstance() ,但我失败了:(

编辑:如下所示,它不起作用的原因是处理将所有代码包装到一个类中,使所有声明的类成为内部类。java语言规范规定内部类的newInstance()应该传递容器类的引用,因此将newInstance的调用改为newInstance(this); 它按预期工作。

下面的代码示例抛出了 InstantiationException。

文档说有一个公共构造函数,一切都会好起来的,但可惜。

运行处理2.2.1

代码流:它填充实现接口的所有类的列表。然后我们通过 state.runnableTypes 并尝试(但失败)实例化该类型的新实例。

请帮忙?

(对笨重的状态变量表示歉意,这与更笨重的 ryo 单元测试系统有关;))

    State state;
/* It nicely finds the Wtf class and inserts that into its classes array, 
 * but when i try to instantiate a new one, whatever I try, it throws :(
 */
void setup() {
  size(1024, 768, P3D);
  noLoop(); 
//get all the classes
  state = new State();
  Class[] types = this.getClass().getDeclaredClasses();
  state.allTypes = types;

  //enumerate castable types
  for (int i = 0, l …
Run Code Online (Sandbox Code Playgroud)

java processing

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

P5.js - 有没有办法切出图像区域?

有没有办法“剪出”一张图像并将其与 P5.js 库一起使用?

示例:假设我有一个大小为 100x100 的图像,但需要获得一个从像素 50,50 开始的 10x10 像素切口

来自 50,50px 的 100x100px 图像的 10x10px 剪切图

我想获取生成的 10x10 图像并将其放置在image(result, X, Y, 10, 10) 的任何位置。

注意: 我唯一能在网上找到与此类似的东西是使用mask()但结果不是我需要的。

processing p5.js

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

在处理中旋转、反转和平移 PShape 对象

我想:

  • 多次平移、反转和旋转单个四边形(PShape 对象)
  • 然后更改其两个顶部顶点之一的高度

因此整个东西就像一个铰接臂,可以 向右或向左弯曲。

为了尽可能清晰,我制作了一些图表。

在此输入图像描述


在此输入图像描述


在此输入图像描述


在此输入图像描述


在此输入图像描述

我知道我可以:

  • 使用平移四边形translate()
  • 翻转(反转)它scale(1, -1)
  • 使用atan2()函数旋转它

在此输入图像描述

问题

当将这 3 个结合在一起时,我得到了这样的结果:

https://media.giphy.com/media/lkACPOxBLOhtk20gzD/giphy.gif

旋转角度似乎是正确的,但显然平移有问题(无论是在 X 轴还是 Y 轴上),我无法弄清楚到底是什么。

我怀疑枢轴翻译缺失,或者转换顺序不正确(或者两者都有)。

如果有人能帮助我理解我做错了什么以及如何解决这个问题,我将非常感激。

int W = 40;
int H = 40;
int offset = 10; 

float[] p0 = {-W/2, -H/2};
float[] p1 = {-W/2,  H/2};
float[] p2 = {W/2, H/2};
float[] p3 = {W/2, -H/2 - offset};

PShape object;


void setup(){
    size(600, 600, P2D);
    smooth(8); …
Run Code Online (Sandbox Code Playgroud)

processing geometry transform rotation

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

在 P5.js 中旋转网格内的对象

我正在尝试使用合适的 OOP 方法来让对象在网格单元格内单独旋转。我当前的结果是围绕 0, 0 参考点旋转所有对象,而不是每个对象在其自己的单元格内旋转。

当然,需要的是一个正确的翻译函数,但是当我尝试在innerSquare函数中应用它时translate(x, y); - 这会导致更奇怪的行为。

我仍处于学习的早期阶段 - 任何帮助将不胜感激!

代码可以在这里查看: https://editor.p5js.org/knectar/sketches/BJpI5_BG4

或者直接:

var cols, rows;
var w = 50;
var grid = [];

function setup() {
  createCanvas(400, 400);

// load the col / row vars with values that dynamically read from the canvas.
  cols = floor(width/w);
  rows = floor(height/w);

// load the the array with generic row and column values
    for (var j = 0; j < rows; j++){
      for (var i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

javascript processing coordinate-transformation p5.js

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

找不到按照我的目标为 Mandelbrot-set 上色的方法

我已经成功地为 Mandelbrot 集着色,尽管在它变得“模糊”并且图案停止之前我无法放大很远。我通过增加 max_iteration 来解决这个问题,这是有效的,但我在 *1 放大倍率下得到的颜色很少,而且只有在放大时才会出现很多颜色。我理解为什么会发生这种情况,因为在“真正的”Mandelbrot-set 中没有颜色和增加 max_iterations 只会让它更接近那个。但我的问题是,在整个缩放过程​​中,像 youtube 上的缩放如何拥有美丽的色彩,同时仍然能够放大以获得永远的感觉?

我试过在网上到处寻找,但我找不到解决方案,当我查看这些 youtube 缩放的描述时,他们似乎几乎没有提供关于他们如何进行缩放的任何信息。

这里只是绘制 Mandelbrot 集的代码部分。下面的代码是在处理过程中编写的,它是带有添加视觉库的 java。您可以在此处了解有关该计划的更多信息:https : //processing.org/

//m is max_iterations
//mb is the function which calculates how many iterations each point took to escape to infinity. I won't be including the function since I know it works fine and it's quite messy.
//i'm using a HSB/HSV system to draw the mandelbrot

hue=(mb(x, y, m)*360)/m;
sat=255;
if (mb(x, y, m)<m) {
  val=255;
} 
else {
  val=0; …
Run Code Online (Sandbox Code Playgroud)

java math processing fractals mandelbrot

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

如何在 p5.js 中启用右键单击?

我正在制作扫雷艇克隆,左键单击显示单元格,右键单击应该标记单元格。

我正在使用该功能mouseClicked()- 这允许我在左键单击时显示并在右键单击时显示。

我尝试使用

if(mouseIsPressed) {
    if(mouseButton === LEFT) {
        reveal
    }
    if(mouseButton === RIGHT) {
        flag
    }
}
Run Code Online (Sandbox Code Playgroud)

这将在按下按钮的每一帧中注册一次。我只想单击右键。我想我遗漏了一些简单的东西,但我真的在文档中找不到任何东西,也没有任何人在线询问它。

TL; DR - 我只想能够在 p5.js 中右键单击。

javascript processing mouseclick-event p5.js

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

如何在 p5.js 上用渐变填充形状?

首先,我知道如何在正方形内形成渐变作为其“使用for循环和lerpColor.

我正在尝试创建理想的任何形状,在这种情况下,将具有线性渐变作为填充颜色的椭圆。我将对这个渐变做的是让它在整个页面上有动画效果,这样它就会用渐变创建各种形状。

我去 p5.js 示例页面寻找创建渐变,但是我只能找到使用line(),stroke()和手动制作的渐变lerpColor。我环顾了 Processing 论坛和这篇 Medium 文章,尽管我对 Processing 语法没有理解。

有没有办法解决这个问题?

javascript processing p5.js

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

在 p5.js 中绘制时转换坐标

我正在努力弄清楚如何为我正在开发的这款汽车游戏制作曲目。当前的问题是,当我绘制轨道时,绘图的坐标会相对于汽车的坐标进行转换。抱歉,这有点难以解释,但是如果您查看下面的代码,您就会明白我的意思。然后是使所有图纸都保留在最新框架上的问题,但这是另一天的问题。(请忽略汽车留下的痕迹,一旦我弄清楚如何确保在最新的框架上重新绘制图纸,就会修复。我真的对这个 JS 有点困惑,所以感谢任何和所有的帮助!

var MAX_VELOCITY = 3;
class Car {
  constructor(x, y, angle) {
    this.x = x;
    this.y = y;
    this.angle = angle;
    this.velocity = 0;
    this.accel = 0;
    this.width = 40;
    this.height = 80;
  }

  show() {
    fill(255, 0, 255);
    stroke(0);
    translate(this.x, this.y);
    rotate(this.angle);
    rect(0, 0, this.width, this.height);
  }

  move() {
    this.velocity += this.accel;
    if (this.velocity > MAX_VELOCITY) {
      this.velocity = MAX_VELOCITY;
    }
    if (this.velocity < -MAX_VELOCITY) {
      this.velocity = -MAX_VELOCITY;
    }
    this.y += this.velocity * Math.sin(this.angle + Math.PI …
Run Code Online (Sandbox Code Playgroud)

javascript processing p5.js

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

如何在python中将jpeg文件转换为tiff文件

有什么方法可以将 .jpeg 转换为 .tiff 文件吗?

如果是,那么该怎么做呢?

Python 中有许多库可以将文件从一种格式转换为另一种格式。

但是,我还没有找到任何解决这个问题的方法。

提前致谢!

python processing image

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