processing 学习第二天笔记

来源:互联网 发布:网络连接不稳定 编辑:程序博客网 时间:2024/05/17 19:21

第二天 连接点第二部分

今天的例子和昨天的类似,只不过我们将使用随机点代替固定点,连接点的时候也将采用不同的方式。如果两点之间的距离小于某一个我们定义的数,我们就把这两个点连接起来。并且将连线的透明度与两点距离相关联,距离越大,连线就越透明。

我们用 dist()函数来计算两个点之间的距离。前两个参数是第一个点的x坐标和y坐标。第三,第四个参数是另外一个点的x坐标和y坐标。返回值为一个float类型的数值,代表两点之间的距离。如果距离小于255,我们就在这两点之间连线。

float dst = dist( points<i>.x, points<i>.y, points[j].x,points[j].y );if ( dst < 255 ) {    stroke( 255, 255 - dst );    line( points<i>.x, points<i>.y, points[j].x, points[j].y );}

画完这些细线之后,我们稍微放大点的体量,这样会让图像更好看。以下这些代码将加入到第一个for-loop循环的结尾、内部循环之后。

stroke( 255 );strokeWeight(4);point( points<i>.x, points<i>.y );源码:
int numPoints = 10;  PVector [] points = new PVector[numPoints];void setup()   {    size(450,400);   for(int i=0;i<numPoints;i++)   {    points[i]=new PVector(random(width),random(height));   }    noLoop();  }void draw()  {    smooth();    background(0);    noFill();    for(int i=0;i<numPoints;i++){      for(int j=0;j<numPoints;j++)        {          strokeWeight(1);          if(j!=i)  {              float dst = dist(points[i].x,points[j].y,points[j].x,points[j].y);              if(dst<255) {                   stroke(255,255-dst);                 line(points[i].x,points[i].y,points[j].x,points[j].y);               }                 }         }      stroke(255);      strokeWeight(4);      point(points[i].x,points[i].y);  //节点画点    }    saveFrame("images/random-connections-"+numPoints+".png");  }  

成果