簡體   English   中英

在處理中從csv文件中繪制多個形狀

[英]Draw multiple shapes from csv file in processing

我是 Processing 的新手,我想制作 X 個橢圓。 我將從 csv 文件中獲取該數字。 是否有任何選項可以制作多個橢圓?

你的問題有點模棱兩可,尤其是這部分:

我將從 csv 文件中獲取該數字。

您是從 csv 文件中讀取每個橢圓的坐標(行數是繪制的橢圓數)還是只是讀取一個整數值X ,它代表您需要繪制的橢圓數(無論它們的位置/大小如何) /等等。 ?)

讓我們從最基本的部分開始:繪制橢圓。 這是使用ellipse()函數實現的,該函數需要 4 個參數:

  1. x 位置
  2. y 位置
  3. 寬度
  4. 高度

例如在坐標 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

示例文件:從 csv 數據中繪制的橢圓

你可以用Table 類做很多花哨的事情,比如添加標題,這將允許你通過標簽而不是索引來獲取值。

如果您只是讀取值 X 並根據不同的參數繪制橢圓,則只需使用for 循環 如果你使用這樣的編程基礎,它們就像 1,2,3 一樣簡單:

  1. 聲明和初始化變量
  2. 使用條件
  3. 訪問和修改現有變量

您可以將它們想象成一種代碼結構,允許您從 A 數到 B。假設您正在數 10 步。 for 循環有 3 個要求:

  1. 具有初始值的數字
  2. 條件(知道何時停止)
  3. 增量:數字從初始值變化到最終值的速度有多快

語法大致如下(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);
}

此時可以跳過步驟(hop):

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);
}

聽起來您正在尋找一個基本的for 循環

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM