2016-04-08 25 views
1

矩形を作成するたびに累積面積を計算しようとしています。 長方形を作成するたびに領域を計算する方法を知っていますが、実際には合計を得ることを望んでいました。 ありがとう!形状の配列の累積面積を計算する

float[] p1x = new float[0]; // hold the mouse pressed marks 
float[] p1y = new float[0]; 
float[] p1z = new float[0]; 
float[] p2x = new float[0]; // hold the mouse pressed marks 
float[] p2y = new float[0]; 
float[] p2z = new float[0]; 
int count = 0; 

int rect_x1; // catch the start dragging point x 
int rect_y1; // catch the start dragging point y 
int rect_x2; // record moving mouseX 
int rect_y2; // record moving mouseY 
int rect_z1; // record mouseX releasing point 
int rect_z2; // record mouseY releasing point. 

boolean press, release, drag, drawRect; 

void setup() { 
    smooth(); 
    size(600, 400); 
    stroke(255); 
    fill(255, 255, 255, 10); 
} 

void draw() { 
    background(50); 
    Rect(); 
} 

void Rect() { 

    float sizex = rect_x2 - rect_x1; 
    float sizey = rect_y2 - rect_y1; 
    for (int i = 0; i < count; i++) { 
     beginShape(); 
     vertex(p1x[i], p1y[i]); 
     vertex(p2x[i], p1y[i]); 
     vertex(p2x[i], p2y[i]); 
     vertex(p1x[i], p2y[i]); 
     endShape(CLOSE); 
    } 
    if (mousePressed && mouseButton == LEFT) { 
     rect(rect_x1, rect_y1, sizex, sizey); 
    } 
} 


void mousePressed() { 
    p1x = append(p1x, mouseX); 
    p1y = append(p1y, mouseY); 
    rect_x1 = mouseX; 
    rect_y1 = mouseY; 
    mouseDragged(); // Reset vars 

} 

void mouseReleased() { 
    p2x = append(p2x, mouseX); 
    p2y = append(p2y, mouseY); 
    rect_x2 = mouseX; 
    rect_y2 = mouseY; 
    count++; 
} 

void mouseDragged() { 
    rect_x2 = mouseX; 
    rect_y2 = mouseY; 
} 
+0

コードを読み込み可能にするためにインデントした場合、実際はそれを見るかもしれません。また、[**最小**、完全、かつ確認可能なサンプルの作成方法](http://stackoverflow.com/help/mcve)をお読みください。 – Andreas

答えて

1

さて、あなたにはいくつかのオプションがあります。

オプション1:長方形を描画するたびに合計を計算します。ループして描画するための関数Rect()にforループがあります。あなたは合計面積を計算することができます。

オプション2:累計を維持し、四角形を追加するたびに増分します。 mouseReleased()機能でこれを行うことができます。

1つの累積数を1つだけ欲しいと言ったときに、どういう意味なのかよく分かりません。あなたは合計をしたいときはいつでもそれらを合計しなければならないか、新しい四角形を追加するたびに合計を維持して追加する必要があります。

+0

申し訳ありませんが、私が単一の累積数を参照したとき、私は合計を意味していました。 – TomMiller

+0

@TomMiller次に、変数を使用して、新しく作成された矩形の領域をその領域に追加するだけです。 –

+0

残念ながら、私はまだ処理していて、まだこれで苦労しています。エリア**エリア=((rect_x2 - rect_x1)*(rect_y2 - rect_y1))**と呼ばれる新しい変数を作成し、forループの下にその数が累積しないようにしますか? – TomMiller