将矢量处理语法转换为p5草图

时间:2017-09-06 01:49:12

标签: javascript java vector processing p5.js

我正在学习编码并且是新手。我目前正在尝试将Processing(java)草图转换为p5(javascript)草图以放在我的第一个网站上。

我在处理草图中翻译VectorArray语法时遇到了问题。

这是处理Sketch(工作)的Vector

for (int i = pts.size()-1; i >= 0; i --){
    PVector pt = (PVector)pts.get(i);
......
PVector pt2 = (PVector)pts.get(j);
        if (pt.dist(pt2) < 20){
......

以下是我尝试在p5中翻译它的方法(不工作)

for (var i = pts.size()-1; i >= 0; i --){

    pt = p5.Vector.pts.get(i);

...........

   var pt2 = (PVector)pts.get(j);

   if (pt.dist(pt2) < 20){
       line(pt.x, pt.y, pt2.x, pt2.y);
   }

 }

1 个答案:

答案 0 :(得分:0)

您不应该尝试通过逐行和翻译语法来翻译代码。相反,您需要退后一步,先将程序转换为英语。然后你拿英语并尝试用目标语言实现它。这可能听起来很愚蠢,但英语被称为算法。

所以,你应该对你的程序有这样的描述:

  

“显示10个圆圈在屏幕上反弹。如果圆圈触及屏幕边缘,它应该会被......反弹”

这只是一个例子,但你明白了。然后你会接受并在P5.js中实现它。

因此,不应该说“我如何将此数组语法转换为P5.js”,而应该问自己“数组如何在JavaScript中工作”甚至“变量如何在JavaScript中工作”。从那里你可以阅读tutorials来弄清楚如何在P5.js中实现你的算法。

然后,如果您遇到特定的语法错误,请查看the JavaScript console,了解您遇到的任何错误。如果你告诉我们的是它不起作用,我们就无法提供帮助。你遇到了什么错误?您的MCVE在哪里?

所有这些都说,我会尽力帮助解决您的具体问题。我们来看原来的一行:

PVector pt = (PVector)pts.get(i);

这一行声明一个名为pt的变量,并将其指向从pts.get(i)返回的任何内容,并将其转换为PVector,因为Java是静态输入,所以一切都需要一种类型。

将其与您在P5.js中尝试做的事情进行比较:

pt = p5.Vector.pts.get(i);

首先,您在哪里宣布pt变量?其次什么是p5.Vector.pts?这种语法没有任何意义。您需要了解变量和数组在JavaScript中的工作方式。

同样,让我们​​看一下P5.js代码中的这一行:

var pt2 = (PVector)pts.get(j);

同样,pts在哪里宣布?而且你永远不必在JavaScript中投射任何东西,因为它是动态类型的。同样,您需要回过头来了解JavaScript中变量的工作原理。

无耻的自我推销:我已经编写了一系列面向处理开发人员尝试学习JavaScript的教程,可用here