在处理过程中从csv文件中绘制多个形状

时间:2015-11-26 13:44:24

标签: java processing

我是Processing的新手,我想制作X个省略号。我将从csv文件中获取该数字。有没有选择制作多个椭圆?

2 个答案:

答案 0 :(得分:1)

你的问题有点含糊不清,尤其是这一部分:

  

我会从csv文件中获取该号码。

您是从csv文件中读取每个椭圆的坐标(行数是绘制的椭圆数)还是只读取一个整数值X,表示您需要绘制的椭圆数量(无论他们的位置/大小/等等。)

让我们从最基本的部分开始:绘制省略号。 这是使用需要4个参数的ellipse()函数实现的:

  1. x位置
  2. y职位
  3. 宽度
  4. 高度
  5. e.g。在坐标10,10处绘制一个20x20像素的椭圆:

    ellipse(10,10,20,20);
    

    在阅读CSV文件方面,正如我在评论中所提到的,loadTable()功能将有助于此。参考页面实际上包括如何遍历每一行并提取值的示例。

    以下是基于csv文件中存在的x,y值绘制省略号的基本示例。它加载一个csv文件,然后遍历每一行。对于每一行,它访问第一个和第二个值。请注意,索引从0开始,而不是从1开始。

    Table table;
    
    void setup(){
      //load the csv file
      table = loadTable("data.csv");
      //loop through each row
      for (TableRow row : table.rows()) {
        //extract the first and second value from the current row
        float x = row.getFloat(0);//extract the first value on the row, at index 0
        float y = row.getFloat(1);//extract the second value on the row, at index 1
        //use the current x,y values to draw an ellipse
        ellipse(x,y,5,5);
      }
    }
    

    以下是示例data.csv文件:

    10,10
    20,20
    50,50
    90,90
    

    sample file: ellipses drawn from csv data

    你可以使用Table class添加标题来做很多奇特的事情,这样你就可以通过标签而不是索引来获取值。

    如果您只是读取值X并根据不同参数绘制省略号,则只需使用for loop即可。 如果您使用这样的编程基础知识,它们很容易就像1,2,3:

    1. 声明并初始化变量
    2. 使用条件
    3. 访问和修改现有变量
    4. 您可以将它们想象为一种代码结构,允许您从A到B进行计数。 假设您正在计算10个步骤。 for循环将有3个要求:

      1. 具有初始值的数字
      2. 条件(知道何时停止)
      3. 增量:数字从初始值变为最终值的速度有多快
      4. 语法大致如下(3个要求由;分隔):

        for (initial value ; condition ; incrementation){
           //instructions to repeat while condition is true
        }
        

        例如:

        for (int step = 0; step < 10; step = step+1) {
          println("step " + step);
        }
        

        此时您可以跳过步骤(跳):

        for (int step = 0; step < 10; step = step+2) {
          println("step " + step);
        }
        

        甚至倒退/向后计数:

        for (int step = 10; step > 0; step = step-1) {
          println("step " + step);
        }
        

        然后可以很容易地应用于绘制x个椭圆:

        int x = 30;//assuming this value can be easily read
        for (int ellipseCount = 0; ellipseCount < x; ellipseCount = ellipseCount+1) {
          float size = random(10);
          ellipse(random(width),random(height),size,size);
        }
        

答案 1 :(得分:0)

听起来你正在寻找一个基本的 for loop

int ellipseCount = 10; //get this from csv file
size(500, 500);
background(0);
for (int i = 0; i < ellipseCount; i++) {
  ellipse(random(width), random(height), 10, 10);
}
相关问题