C言語で使える3次元動画関数(神殿の表示)




2014年10月より個人の方を対象に、Study C無料提供を開始しました。
C言語を勉強中の方は、学習・教育に最適なC言語インタープリタのStudy Cを使ってみてください(個人の方は無料です)。
大学・高専・高校などの教育機関での採用実績も多数あるロングセラー商品Study Cが、個人向けに無料提供を始めました。
インタープリタの手軽さに加え、ゲームや3Dタートルグラフィックで楽しく勉強したりと、C言語の学習を強力にサポートします。
ブロック崩しゲーム 3Dツリー クリスマスツリー
また、このようなボタンの用意されているページでは、掲載しているプログラムをStudy Cに直接ロードし実行したりすることができます。
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する
Study C無料利用についての詳細は、このページを参照してください。



・神殿が回転します。
・このコーナーのプログラムはLogomotion作者の佐藤氏作または東京女子大マイコンサークルMOVEの皆さんのによって作成(オリジナルはLOGO言語で作成)されたものをC言語に書き換えたものです。
・Logomotionなどに関する詳細は3Dタートル美術館を参照してください。
神殿

void	kumitate(void);
void	rippou1(void);
void	rippou2(void);
void	rippou3(void);
void	rippou4(void);
void	rippou5(void);
void	rippou6(void);
void	rippou7(void);
void	enchu1(void);
void	rec1(void);
void	rec2(void);
void	rec3(void);
void	rec4(void);
void	rec5(void);
void	rec6(void);
void	rec7(void);
void	rec8(void);
void	rec9(void);
void	rec10(void);
void	rec11(void);
void	rec12(void);
void	rec13(void);
void	rec14(void);
void	rec15(void);
void	rec16(void);

main()
{
	int	i1;

	tg_openwin(640, 640);
	tg_init();
	tg_draw(); tg_ht();
	tg_draw(); tg_ht(); kumitate();

	tg_view();
	tg_pu();
	tg_manual();
	for(i1 = 0; i1 < 36; i1++){
		tg_lt(10.0); tg_mr(800 * 2 * 3.1415 / 36);
		tg_refresh();
	}
	for(i1 = 0; i1 < 10; i1++){
		tg_mr(15.0); tg_refresh();
		tg_fd(20.0);
	}
	for(i1 = 0; i1 < 30; i1++){
		tg_fd(20.0); tg_refresh();
	}

	tg_draw(); tg_ht();
}


setp(double x, double y, double z)
{
	tg_pu(); tg_home(); tg_mr(x); tg_fd(y); tg_mu(z);
}


void	kumitate()
{
	tg_setpc(7);
	tg_pu();
	setp(-250.0, 309.0, -75.0);
	tg_pd(); rippou1();
	tg_home();
	tg_pu();
	setp(-350.0, 271.25, -75.0);
	tg_pd(); rippou2();
	tg_home();
	tg_pu();
	setp(-400.0, 233.75, -75.0);
	tg_pd(); rippou3();
	tg_home();
	tg_pu();
	setp(-450.0, 207.5, -75.0);
	tg_pd(); rippou4();
	tg_home();
	tg_pu();
	setp(-475.0, 182.5, -75.0);
	tg_pd(); rippou5();
	tg_home();
	tg_pu();
	setp(-370.0, 131.75, -75.0);
	tg_pd(); rippou6();
	tg_home();
	tg_pu();
	setp(-370.0, 100.5, -75.0);
	tg_pd(); rippou7();
	tg_home();
	tg_pu();
	setp(-370.0, 87.0, -75.0);
	tg_pd(); rippou6();
	tg_home();
	tg_pu();
	setp(-300.0, -260.0, 0.0);
	tg_pd(); enchu1();
	tg_home();
	tg_pu();
	setp(-370.0, -266.25, -75.0);
	tg_pd(); rippou6();
	tg_home();
	tg_pu();
	setp(-370.0, -291.25, -75.0);
	tg_pd(); rippou7();
	tg_home();
	tg_pu();
	setp(-75.0, 131.75, -75.0);
	tg_pd(); rippou6();
	tg_home();
	tg_pu();
	setp(-75.0, 100.5, -75.0);
	tg_pd(); rippou7();
	tg_home();
	tg_pu();
	setp(-75.0, 87.0, -75.0);
	tg_pd(); rippou6();
	tg_home();
	tg_pu();
	setp(0.0, -260.0, 0.0);
	tg_pd(); enchu1();
	tg_home();
	tg_pu();
	setp(-75.0, -266.25, -75.0);
	tg_pd(); rippou6();
	tg_home();
	tg_pu();
	setp(-75.0, -291.25, -75.0);
	tg_pd(); rippou7();
	tg_home();
	tg_pu();
	setp(225.0, 131.75, -75.0);
	tg_pd(); rippou6();
	tg_home();
	tg_pu();
	setp(225.0, 100.5, -75.0);
	tg_pd(); rippou7();
	tg_home();
	tg_pu();
	setp(225.0, 87.0, -75.0);
	tg_pd(); rippou6();
	tg_home();
	tg_pu();
	setp(300.0, -260.0, 0.0);
	tg_pd(); enchu1();
	tg_home();
	tg_pu();
	setp(225.0, -266.25, -75.0);
	tg_pd(); rippou6();
	tg_home();
	tg_pu();
	setp(225.0, -291.25, -75.0);
	tg_pd(); rippou7();
	tg_home();
}


void	rippou1()
{
	rec1(); tg_fd(50.0); tg_up(90.0); rec2(); tg_fd(150.0); tg_up(90.0); rec1(); tg_fd(50.0); tg_up(90.0); rec2(); tg_fd(150.0); tg_up(90.0);
}

void	rippou2()
{
	rec3(); tg_fd(37.5); tg_up(90.0); rec4(); tg_fd(150.0); tg_up(90.0); rec3(); tg_fd(37.5); tg_up(90.0); rec4(); tg_fd(150.0); tg_up(90.0);
}

void	rippou3()
{
	rec5(); tg_fd(37.5); tg_up(90.0); rec6(); tg_fd(150.0); tg_up(90.0); rec5(); tg_fd(37.5); tg_up(90.0); rec6(); tg_fd(150.0); tg_up(90.0);
}

void	rippou4()
{
	rec7(); tg_fd(25.0); tg_up(90.0); rec8(); tg_fd(150.0); tg_up(90.0); rec7(); tg_fd(25.0); tg_up(90.0); rec8(); tg_fd(150.0); tg_up(90.0);
}

void	rippou5()
{
	rec9(); tg_fd(25.0); tg_up(90.0); rec10(); tg_fd(150.0); tg_up(90.0); rec9(); tg_fd(25.0); tg_up(90.0); rec10(); tg_fd(150.0); tg_up(90.0);
}

void	rippou6()
{
	rec11(); tg_fd(12.5); tg_up(90.0); rec12(); tg_fd(150.0); tg_up(90.0); rec11(); tg_fd(12.5); tg_up(90.0); rec12(); tg_fd(150.0); tg_up(90.0);
}

void	rippou7()
{
	rec13(); tg_fd(50.0); tg_up(90.0); rec14(); tg_fd(150.0); tg_up(90.0); rec13(); tg_fd(50.0); tg_up(90.0); rec14(); tg_fd(150.0); tg_up(90.0);
}

void	enchu1()
{
	int	i1;
	for(i1 = 0; i1 < 24; i1++){rec15(); tg_rr(15.0);}
}

void	rec1()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(50.0); tg_rt(90.0); tg_fd(500.0); tg_rt(90.0);}
}

void	rec2()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(150.0); tg_rt(90.0); tg_fd(500.0); tg_rt(90.0);}
}

void	rec3()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(37.5); tg_rt(90.0); tg_fd(700.0); tg_rt(90.0);}
}

void	rec4()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(150.0); tg_rt(90.0); tg_fd(700.0); tg_rt(90.0);}
}

void	rec5()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(37.5); tg_rt(90.0); tg_fd(800.0); tg_rt(90.0);}
}

void	rec6()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(150.0); tg_rt(90.0); tg_fd(800.0); tg_rt(90.0);}
}

void	rec7()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(25.0); tg_rt(90.0); tg_fd(900.0); tg_rt(90.0);}
}

void	rec8()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(150.0); tg_rt(90.0); tg_fd(900.0); tg_rt(90.0);}
}

void	rec9()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(25.0); tg_rt(90.0); tg_fd(950.0); tg_rt(90.0);}
}

void	rec10()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(150.0); tg_rt(90.0); tg_fd(950.0); tg_rt(90.0);}
}

void	rec11()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(12.5); tg_rt(90.0); tg_fd(150.0); tg_rt(90.0);}
}

void	rec12()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(150.0); tg_rt(90.0); tg_fd(150.0); tg_rt(90.0);}
}

void	rec13()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(50.0); tg_rt(90.0); tg_fd(150.0); tg_rt(90.0);}
}

void	rec14()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(150.0); tg_rt(90.0); tg_fd(150.0); tg_rt(90.0);}
}

void	rec15()
{
	int	i1;
	for(i1 = 0; i1 < 2; i1++){tg_fd(350.0); tg_rt(90.0); tg_fd(75.0); tg_rt(90.0);}
}
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...
・SHINDEN(ソースプログラムのダウンロード)

setp関数 位置を移動します。
kumitate関数 rippou1関数などを使用して、神殿を描画していきます。
rippou1〜7関数 立法体を描画します。
enchu1関数 円柱を描画します。
rec1〜16関数 長方形を描画します。

・SHINDENをコンパイルしたEXEファイルのダウンロードNew
3DタートルをVisual C++やBorland Cからも使用できるようにするためのライブラリを作成しました(特別C言語講座にアクセス可能な方は、こちらからダウンロードしてください)。 コンパイルしたEXEを上記からダウンロードできます(普通のEXEファイルなのでそのまま実行することができます)。 詳細はダウンロードのページをご覧ください。