サンプルとして十進BASIC で書かれた http://6317.teacup.com/basic/bbs/448 を見つけました。
Cに移植しようと、以下のプログラムを書いたところで、
「左オペランドには型 'double' が指定されています。」のエラーが発生しました。
int、double、floatがごちゃごちゃになっているのが何となくわかるのですが、
どのように修正すべきかが解りません。何卒ご教示の程、宜しくお願いいたします。
// 描画先画面を裏画面にセット
SetDrawScreen(DX_SCREEN_BACK);
{
double a, b, x,y,r,x1, y1, x2, y2,angle;
for (int t = 0; t < 90; t += 15) {
angle =t * (DX_PI / 180);
a = sin(angle); //端付近:密、中央付近:疎
b = 1;
x = 100, y = 100, r = 16;
for (int i = 0; i < 360; i++) { //経線 ※楕円を描く
angle = i * (DX_PI / 180);
x1 =x+ r * a*cos(angle);
y1 =y+ r * b*sin(angle);
angle = (i+1) * (DX_PI / 180);
x2 =x+ r * a*cos(angle);
y2 =y+ r * b*sin(angle);
DrawLine(x1, y1, x2, y2, GetColor(255, 0, 255));
}
}
for (int i = -180; i< 180; i =i+ 10) { // 緯線 ※水平線を描く
angle = i * (DX_PI / 180);
y1 = y + r *sin(angle); //角度を等分割する
x1 = x + r *sqrt(1-y1^2); //<--------------「左オペランドには型 'double' が指定されています。」
DrawLine(-x1, y1, x1, y1, GetColor(255, 0, 255));
}
ScreenFlip();
WaitKey();
}
以下が参考にしたコード(十進BASIC http://6317.teacup.com/basic/bbs/448)です。
!経線と緯線と使って、球体をワイヤーフレームで描画する
SET WINDOW -2,2,-2,2
FOR t=0 TO 90 STEP 15 !角度を等分割する
LET a=SIN(RAD(t)) !端付近:密、中央付近:疎
LET b=1
FOR i=0 TO 360 !経線 ※楕円を描く
LET x=a*COS(RAD(i))
LET y=b*SIN(RAD(i))
PLOT LINES: x,y;
NEXT i
PLOT LINES
NEXT t
FOR i=-180 TO 180 STEP 10 !緯線 ※水平線を描く
LET y=SIN(RAD(i)) !角度を等分割する
LET x=SQR(1-y^2) !極付近:密、0度付近:疎
PLOT LINES: -x,y; x,y
NEXT i
PLOT LINES
END