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	bk6000(void);
void	fd6000(void);
void	douro(void);
void	hasigeta(void);
void	hasirahasi(void);
void	rec2(void);
void	hasira(void);
void	waiyaa(void);
void	waiyaa1(void);
void	bay(void);
void	hakusen(void);
void	sikaku(void);
void	susumuhasi(void);
void	rechakusen(void);


void	main()
{
	tg_openwin(640, 400);
	tg_init();
	susumuhasi();
}


void	bk6000()
{
	int	i1;

//	for(i1 = 0; i1 < 100; i1++){tg_bk(60.0);}
tg_bk(6000.0);
}

void	fd6000()
{
	int	i1;

//	for(i1 = 0; i1 < 100; i1++){tg_fd(60.0);}
tg_fd(6000.0);
}

void	douro()
{
	tg_pu();
	tg_ml(3000.0);tg_bk(190.0); tg_rt(90.0);tg_pd();
	fd6000();
	tg_mr(20.0);
	bk6000();
	tg_pu();
	tg_md(100.0);tg_pd();
	fd6000();
	tg_ml(20.0);
	bk6000();
	tg_home();
}


void	hasigeta()
{
	tg_setpc(5);
	tg_home();
	tg_pu();
	tg_ml(260.0);tg_bk(280.0); tg_mu(10.0);tg_pd(); hasirahasi();
	tg_pu();
	tg_md(110.0);tg_pd(); hasirahasi();
	tg_pu();
	tg_mr(510.0);tg_pd(); hasirahasi();
	tg_pu();
	tg_mu(110.0);tg_pd(); hasirahasi(); tg_setpc(7);
	tg_home();
}

void	hasirahasi()
{
	int	i1;

	for(i1 = 0; i1 < 4; i1++){rec2(); tg_mr(10.0);tg_rr(90.0);}
}

void	rec2()
{
	int	i1;

	for(i1 = 0; i1 < 2; i1++){tg_fd(240.0);tg_rt(90.0);tg_fd(10.0);tg_rt(90.0);}
}

void	hasira()
{
	int	i1;

	for(i1 = 0; i1 < 4; i1++){rec2(); tg_mr(10.0);tg_rr(90.0);}
}

void	waiyaa()
{
	tg_pu();
	tg_ml(260.0);tg_bk(50.0); tg_pd(); waiyaa1();
	tg_pu();
	tg_ml(260.0);tg_bk(50.0); tg_md(100.0);tg_pd(); waiyaa1();
	tg_pu();
	tg_mr(250.0); tg_bk(50.0); tg_pd(); waiyaa1();
	tg_pu();
	tg_mr(250.0); tg_bk(50.0); tg_md(100.0); tg_pd(); waiyaa1();
	tg_pu();
	tg_ml(250.0);tg_bk(50.0); tg_rr(180.0);tg_pd(); waiyaa1();
	tg_pu();
	tg_ml(250.0);tg_bk(50.0); tg_md(100.0); tg_rr(180.0); waiyaa1();
	tg_pu();
	tg_mr(260.0); tg_bk(50.0); tg_rr(180.0); tg_pd(); waiyaa1();
	tg_pu();
	tg_mr(260.0); tg_bk(50.0); tg_md(100.0); tg_rr(180.0); waiyaa1();
}

void	waiyaa1()
{
	tg_lt(125.0); tg_fd(244.0);
	tg_pu();
	tg_rt(125.0); tg_mr(40.0); tg_rt(50.0);tg_pd(); tg_fd(206.0);
	tg_pu();
	tg_lt(50.0);tg_bk(10.0);tg_lt(136.0); tg_pd(); tg_fd(170.0);
	tg_pu();
	tg_rt(135.0); tg_mr(40.0); tg_rt(37.0); tg_pd(); tg_fd(151.0);
	tg_pu();
	tg_lt(37.0); tg_bk(10.0); tg_lt(158.0); tg_pd(); tg_fd(120.0);
	tg_pu();
	tg_home();
}

void	bay()
{
	douro();
	hasigeta();
	tg_setpc(5);
	tg_pu();
	tg_ml(260.0);tg_bk(100.0); tg_pd(); tg_md(100.0);
	tg_pu();
	tg_mr(10.0);tg_pd(); tg_mu(100.0);
	tg_pu();
	tg_bk(10.0);tg_pd(); tg_md(100.0);
	tg_pu();
	tg_ml(10.0);tg_pd(); tg_mu(100.0);
	tg_home();
	tg_pu();
	tg_mr(250.0);tg_bk(100.0); tg_pd(); tg_md(100.0);
	tg_pu();
	tg_mr(10.0);tg_pd(); tg_mu(100.0);
	tg_pu();
	tg_bk(10.0);tg_pd(); tg_md(100.0);
	tg_pu();
	tg_ml(10.0);tg_pd(); tg_mu(100.0);
	tg_home();
	tg_setpc(7);
	waiyaa();
	hakusen();
}

void	hakusen()
{
	int	i1;

	tg_pu();
	tg_home();
	tg_bk(190.0);tg_md(29.0); tg_dn(90.0);tg_lt(90.0);tg_bk(3000.0);
	for(i1 = 0; i1 < 50; i1++){
		tg_pd();
		sikaku();
		tg_pu();
		tg_fd(300.0);
	}
}

void	sikaku()
{
	int	i1;

	for(i1 = 0; i1 < 2; i1++){tg_fd(50.0); tg_rt(90.0); tg_fd(5.0); tg_rt(90.0);}
	tg_pu();
	tg_mr(2.0); tg_fd(5.0);
}

void	susumuhasi()
{
	int	i1;

	bay();
	tg_pu();
	tg_view();
	tg_manual();
	tg_home();
	tg_dn(90.0);
	tg_md(50.0);
	tg_bk(700.0);
	for(i1 = 0; i1 < 100; i1++){tg_dn(0.5); tg_mu(700.0 * sin(3.141592/360)); tg_refresh();}
	for(i1 = 0; i1 < 50; i1++){tg_fd(4.0); tg_refresh();}
	for(i1 = 0; i1 < 120; i1++){tg_lt(0.5); tg_mr(500.0 * sin(3.141592/360)); tg_rl(0.5); tg_refresh();}
	for(i1 = 0; i1 < 150; i1++){tg_up(0.5); tg_md(500.0 * sin(3.141592/360)); tg_refresh();}
	tg_pu();
	tg_home();
	tg_bk(180.0); tg_md(50.0); tg_dn(90.0); tg_lt(90.0); tg_bk(800.0);
	for(i1 = 0; i1 < 200; i1++){tg_fd(5.0);tg_refresh();}
}

void	rechakusen()
{
	int	i1;

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

bk6000関数 tg_bk(6000.0)を実行します。Logomotionでは線を細かく分割して描画する必要がありましたがStudyCではそのような必要がないため一回で描画しています。
fd6000関数 fd_bk(6000.0)を実行します。Logomotionでは線を細かく分割して描画する必要がありましたがStudyCではそのような必要がないため一回で描画しています。
douro関数 道路部分を描画します。
hasigeta関数 hasirahasi関数を呼び出して橋げたを描画します。
hasirahasi関数 橋げたの柱を一本描画します。
rec2関数 長方形を一つ描画します。
hasira関数 この関数は使われていません。
waiyaa関数 橋を吊るワイヤをwaiyaa1関数で描画します。
waiyaa1関数 橋を吊るワイヤを1セット描画します。
bay関数 waiyya、douroなどの関数を呼び出して橋全体を描画します。
hakusen関数 道の白線(センターライン)を描画します。
sikaku関数 道の白線(センターライン)用の長方形を一つ描画します。
susumuhasi関数 視点を移動して橋を移動します。
rechakusen関数   この関数は使われていません。

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