// MakeCircle.v 円周座標データ作成
#define SIZE 512
module MakeCircle(out,c_x,c_y,radius,PlotNum,circle_x,circle_y:parameter)
int out[SIZE][SIZE];
#vios mutex out off min
int c_x[1];
#vios mutex c_x off max
int c_y[1];
#vios mutex c_y off max
int radius[1];
#vios mutex radius off max
int PlotNum[1];
#vios mutex PlotNum off max
int circle_x[];
#vios mutex circle_x off max
int circle_y[];
#vios mutex circle_y off max
{
{
int theta;
int l_cx,l_cy;
int l_radius,pnum;
float rad;
l_radius = radius[0];
l_cx = c_x[0];
l_cy = c_y[0];
pnum = PlotNum[0];
// 指定された半径、中心、プロット数の円周座標を
// 配列に格納します
for(theta = 0; theta < pnum; theta++){
rad = 2.*M_PI*(float)theta/pnum;
circle_x[theta] = (int)(l_radius*cos(rad) + l_cx);
circle_y[theta] = (int)(l_radius*sin(rad) + l_cy);
}
}
// 以下のコードは円周座標を画像にプロットするためのものです
{
int x,y;
// 画像を背景色で初期化します
for(y = 0; y < SIZE; y++){
for(x = 0; x < SIZE; x++){
out[x][y] = 255;
}
}
}
{
int theta,x,y;
int pnum;
pnum = PlotNum[0];
// 円周データが保持する座標の位置に点をプロットします
for(theta = 0; theta < pnum; theta++){
x = circle_x[theta];
y = circle_y[theta];
out[x][y] = 0;
}
}
}
スネークメインフローへ戻る
VIOS トップページ