円の描画

円を描画するコード。

ポリラインで円を描く

始点と終点が結合していない開いたポリラインになります。

//
// 円の描画
//
vector center = set(0, 0, 0); // 中心座標
int num = 12; // 頂点数
float radius = 20;

int prim = addprim(0, "polyline");
for(int i = 0; i < num+1; i++)
{
    float angle = PI * 2 / (float)num * i;
    vector pos = set(cos(angle), 0, sin(angle)) * radius + center;
    int pt = addpoint(0, pos);
    addvertex(0, prim, pt);
}

終点は始点の位置になるので、ループは頂点数に1足した数で回す。

ポリゴンで埋める

中心にポイントを配置するタイプの円メッシュを描画する。

//
// 円の描画
//
vector center = set(0, 0, 0); // 中心座標
int num = 16; // 頂点数
float radius = 20;

int centerPt = addpoint(0, center);

// ポイントを配置していく
int pt[];
for(int i = 0; i < num; i++)
{
    float angle = PI * 2 / (float)num * i;
    vector pos = set(cos(angle), 0, sin(angle)) * radius + center;
    pt[i] = addpoint(0, pos);
}

// 三角形ポリゴンを生成していく
for(int i = 0; i < len(pt); i++)
{
    int prim = addprim(0, "poly");
    addvertex(0, prim, centerPt);
    addvertex(0, prim, pt[i]);
    addvertex(0, prim, pt[(i+1)%len(pt)]);
}
タイトルとURLをコピーしました