?? qiu.c
字號:
#include "gui.h"
#include "math.h"
#define PI 3.14159
#define T PI/180
#define NN 50
#define DT PI/NN
#define DIST 0.8
#define R 100
static int n = 1;
float t[3];
float Qi[3][3];
void s_fuzhi()
{
Qi[0][0] = cos(t[1]) * cos(t[2]);
Qi[0][1] = cos(t[1]) * sin(t[2]);
Qi[0][2] = -sin(t[1]);
Qi[1][0] = sin(t[0])*sin(t[1])*cos(t[2])-cos(t[0])*sin(t[2]);
Qi[1][1] = sin(t[0])*sin(t[1])*sin(t[2])+cos(t[0])*cos(t[2]);
Qi[1][2] = sin(t[0])*cos(t[1]);
Qi[2][0] = cos(t[0])*sin(t[1])*cos(t[2])+sin(t[0])*sin(t[2]);
Qi[2][1] = cos(t[0])*sin(t[0])*sin(t[2])-sin(t[0])*cos(t[2]);
Qi[2][2] = cos(t[0])*cos(t[1]);
}
void qiu_draw( float *m, float da, float db )
{
float f[3], f0, x0, y0, x1, y1, x2, y2;
f[0] = R * sin(da) * cos(db);
f[1] = R * sin(da) * sin(db);
f[2] = R * cos(da);
f0 = f[0]*Qi[0][2] + f[1]*Qi[1][2] + f[2]*Qi[2][2];
if( f0 <= 0 )
n=1;
else
{
x0 = 120.0;
y0 = 120.0;
x2 = ( Qi[0][0]*f[0] + Qi[1][0]*f[1] + Qi[2][0]*f[2] ) + x0;
y2 = ( Qi[0][1]*f[0] + Qi[1][1]*f[1] + Qi[2][1]*f[2] )*DIST + y0;
if( n == 1 )
{
n = 2;
x1 = x2;
y1 = y2;
}
else
{
GUI_DrawLine( x1, y1, x2, y2 );
x1 = x2;
y1 = y2;
}
}
}
void qiu( void )
{
float ta, tb;
char k;
int i, p = 1;
GUI_SetBkColor( GUI_BLACK );
GUI_SetColor( GUI_GREEN );
t[1] = 30 * T;
t[2] = 10 * T;
do
{
for( i=0; i<=361; i+=1 )
{
t[0] = i * T;
s_fuzhi();
GUI_Clear();
for( tb=0.0; tb<PI; tb+=DT )
{
n = 1;
for( ta=0.0; ta<2.1*PI; ta+=DT )
qiu_draw( Qi, ta, tb );
}
for( ta=0.0; ta<PI; ta+=DT )
{
n = 1;
for( tb=0.0; tb<2.1*PI; tb+=DT )
qiu_draw( Qi, ta, tb );
}
p = 1 - p;
}
}while( 1 );
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -