表面積の計算

外積を使うことで三角形の表面積を計算することができる。

Divide SOPですべてのプリミティブを事前に三角形に分割しておく。

// Run Over: Detail

float sum = 0;

for(int i = 0; i < nprimitives(0); i++)
{
    int npts[] = primpoints(0, i);
    vector p0 = point(0, "P", npts[0]);
    vector p1 = point(0, "P", npts[1]);
    vector p2 = point(0, "P", npts[2]);
    
    vector cross = cross(p0 - p1, p2 - p1);
    float area = length(cross) / 2;
    sum += area;
}

f@area = sum;
タイトルとURLをコピーしました