ODEã§å¦ã¶C言語 [Step2:繰り返ã—]
Step1ã§ç‰©ä½“ã®æç”»ã‚’å¦ã³ã¾ã—ãŸï¼Žã“ã“ã§ã¯åŒã˜ç‰©ä½“を何個もæç”»ã™ã‚‹æ–¹æ³•ã‚’å¦ã³ã¾ã—ょã†ï¼Ž
C言語ã®ç¹°ã‚Šè¿”ã—ã«ã¯foræ–‡, while文,do whileæ–‡ãŒã‚りã¾ã—ãŸã.ã“ã“ã§ã¯for文を使ã„ã¾ã™ï¼Žã•ã£ããソースコードを見ã¦ã„ãã¾ã—ょã†ï¼Ž
13行目ã®dsSetColor()ã¯è‰²ã‚’è¨å®šã™ã‚‹é–¢æ•°ã§ã™ï¼Žå¼•æ•°ã¯å…‰ã®3原色ã®å€¤ã‚’3個å–り,1番目ã¯èµ¤ï¼Œï¼’番目ã¯ç·‘,3番目ã¯é’æˆåˆ†ã§0以上1以下ã®å€¤ã¨ãªã‚Šã¾ã™ï¼Žã¡ãªã¿ã«ï¼Œå…¨éƒ¨0ã ã¨é»’,全部1.0ã ã¨ç™½ã§ã™ï¼Ž
15ã‹ã‚‰18行目ãŒforæ–‡ã§ã™ï¼Žç¹°ã‚Šè¿”ã—回数ã¯num回,ã“ã“ã§ã¯10行目ã§numãŒ11ã«ãªã£ã¦ã„ã‚‹ã®ã§ï¼Œ11回ループãŒå›žã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ï¼Ž
16行目ã®p[1]ã¯çµ¶å¯¾åº§æ¨™ç³»ã®y座標ã®å€¤ã§ã™ï¼ŽãªãŠï¼Œp[0]ã«ã¯x座標,p[2]ã«ã¯z座標ã®å€¤ãŒå…¥ã£ã¦ã„ã¦ï¼Œx座標ã¯åœ°é¢ã®ä¸å¤®ãƒžãƒ¼ã‚«ãƒ¼ã‹ã‚‰èµ¤ãƒžãƒ¼ã‚«ãƒ¼ã®æ–¹å‘,y座標ã¯ä¸å¤®ãƒžãƒ¼ã‚«ãƒ¼ã‹ã‚‰é’ãƒžãƒ¼ã‚«ãƒ¼ã®æ–¹å‘,z座標ã¯ä¸å¤®ãƒžãƒ¼ã‚«ãƒ¼ã‹ã‚‰ä¸Šç©ºæ–¹å‘ã«ãªã‚Šã¾ã™ï¼Ž
17行目ã¯ç›´æ–¹ä½“ã®æç”»ã§ã™ï¼Ž
ã“れã§ä»Šå›žã¯çµ‚ã‚りã§ã™ï¼Žãƒ›ãƒ¼ãƒ ワークã¯å°‘ã—難ã—ãã—ã¾ã™ï¼Ž
/* step2 物体ã®ç¹°ã‚Šè¿”ã—表示 */
#include "dm2.h"
double R[12]; // 回転行列ã®å„è¦ç´ ãŒæ ¼ç´ã•れるé…列
double p[3] = {0.0, 0.0, 0.05}; // ä½ç½®(x,y,z)[m]
double sides[3] = {0.1, 0.1, 0.1}; // 直方体ã®ã‚µã‚¤ã‚º(x, y, z)[m]
void simLoop(int pause) /*** シミュレーションループ ***/
{
int i, num = 11; // ç›´æ–¹ä½“ã®æ•°
dsSetColor(1.0, 0.0, 0.0); // 赤色ã®è¨å®š(赤,緑,é’)
for (i = 0; i < num; i++) {
p[1] = i * 0.2;
dsDrawBox(p,R,sides); // 直方体ã®è¡¨ç¤º
}
}
int main() /*** main関数 ***/
{
dmLoop(800, 600); // シミュレーションループ ウインドウã®å¹…,高
return 0;
}
ホームワーク2
- step2-090612.zipをダウンãƒãƒ¼ãƒ‰ã—ã¦å®Ÿè¡Œã—よã†ï¼Ž
- 赤ã„直方体ã®è‰²ã‚’é’ã«å¤‰ãˆã‚ˆã†ï¼Ž
- 赤ã„直方体ã®ä½ç½®ã‚’å·¦ã«ãšã‚‰ã—,ä¸å¤®ã®ç›´æ–¹ä½“ãŒåŽŸç‚¹ã«æ¥ã‚‹ã‚ˆã†ã«ã—ã¾ã—ょã†ï¼Ž
- 上ã®å•題ã§ï¼Œç›´æ–¹ä½“ã®è‰²ã‚’å…¨ã¦é•ã†è‰²ã«ã—ょã†ï¼Ž
- forループを2é‡ã«ã—,x軸方å‘ã«ã‚‚直方体をæç”»ã—,åˆè¨ˆ121個ã®ç›´æ–¹ä½“を表示ã—よã†ï¼Ž
- forループを3é‡ã«ã—,z軸方å‘ã«ã‚‚直方体をæç”»ã—,直方体ã®é–“隔も調整ã—ã¦ä¸Šå›³ã®ã‚ˆã†ãªãƒ”ラミッドを作ã‚ã†ï¼Ž
昔エジプトã«è¡Œãピラミッドã«å°‘ã—ã ã‘ç™»ã£ãŸã“ã¨ãŒã‚りã¾ã™ã€‚é ãã‹ã‚‰ã¯ãれã„ãªå››è§’éŒã«è¦‹ãˆã¾ã™ãŒã€å¤§ããªç«‹æ–¹ä½“ãŒç©ã¿é‡ãられã§ãã¦ã„ã¾ã™ã€‚残念ãªãŒã‚‰ä»Šã¯ç™»ã‚‹ã“ã¨ãŒç¦æ¢ã•れã¦ã„るよã†ã§ã™ã。

ãŸã³ãŸã³ã™ã¿ã¾ã›ã‚“。
インクルードファイルã‚ãŸã‚Šã«åŽŸå› ãŒã‚ã‚‹ã®ã‹ã¨æ€ã„dm1.hもインクルードã—ã¦ã¿ã‚‹ã¨ãƒ“ルドãŒé€šã‚Šã¾ã—ãŸã€‚
ãŠé¨’ãŒã›ã—ã¦ã™ã¿ã¾ã›ã‚“ã§ã—ãŸã€‚
ãŸã ã€æ ¹æœ¬çš„ãªåŽŸå› ãŒã‚ã‹ã‚‰ãšã˜ã¾ã„ãªã®ãŒæ®‹å¿µã§ã™ã€‚。
ã“ã‚“ã«ã¡ã¯ã€‚
サンプルプãƒã‚°ãƒ©ãƒ ã‚’DLã—ã¦step2ã®ãƒ“ルドを実行ã—ã¦ã¿ã¾ã—ãŸãŒã€
>step1.obj : error LNK2019: 未解決ã®å¤–部シンボル “void __cdecl dmLoop(int,int)” (?dmLoop@@YAXHH@Z) ãŒé–¢æ•° _main ã§å‚ç…§ã•れã¾ã—ãŸã€‚
1>.\step1.exe : fatal error LNK1120: 外部å‚ç…§ 1 ãŒæœªè§£æ±ºã§ã™
ã¨å‡ºã¦å®Ÿè¡Œãƒ•ァイルãŒä½œæˆã•れã¾ã›ã‚“。
ãŸã ã€C:\ode-0.11.1:\lib:\DebugDoubleLib:\ode_double.libã¯ã‚りã¾ã™ã€‚
ã¾ãŸã€ã“ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆãƒ•ァイルã®ä½ç½®ã¯
C:\ode-0.11.1:\mypgm:\step2 ã§ã™ã€‚
ã„ã‚ã„ã‚ã‚„ã£ã¦ã¿ãŸã‚‚ã®ã®ä¸€å‘ã«è§£æ±ºã—ãªã„ã®ã§ã€ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
返事ãŒé…れã¦ã™ã¿ã¾ã›ã‚“。今週ã¯ãšã£ã¨å‡ºå¼µã§ã—ãŸã€‚
ã•ã¦ã€å•題ãŒè§£æ±ºã—ã¦ãªã«ã‚ˆã‚Šã§ã™ã€‚
æ ¹æœ¬çš„ãªåŽŸå› ãŒã‚ã‹ã‚‰ãªã„ã¨ã¯ã€ãªã«ã‹æœªè§£æ±ºã®å•é¡ŒãŒæ®‹ã£ã¦ã„ã‚‹ã®ã§ã™ã‹ï¼Ÿ
ã§ã‚€
ãŠå¿™ã—ã„ã¨ã“ã‚返信ã—ã¦ã„ãŸã ãã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
今回ã®å•題ã§ã™ãŒã€”ode_double.lib”ã¯ã¡ã‚ƒã‚“ã¨ç¢ºèªã§ãã‚‹ã®ã«ãƒªãƒ³ã‚¯ã‚¨ãƒ©ãƒ¼ã«ãªã£ã¦ã—ã¾ã†ã¨ã„ã†ã“ã¨ã§ã€
éŽåŽ»ã®è³ªå•ãªã©ã‚‚å‚ç…§ã—ã¾ã—ãŸãŒã€ä»Šå›žã®åŽŸå› ã«ã¯ã¤ãªãŒã‚‰ãªã„æ§˜ã«æ€ã„ã¾ã™ã€‚(環境è¨å®šã®ãƒŸã‚¹ç‰ãŒåŽŸå› ãªã‚‰ã€dm1.hã§ã‚‚ビルドãŒé€šã‚‰ãªã„ã¯ãšã ã‹ã‚‰ã§ã™ã€‚)
ãã“ã§dm1.hã¨dm2.hを見比ã¹ã¦ã¿ãŸã®ã§ã™ãŒã€”dmLoop”ã«é–¢ã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ ã®é•ã„ãŒã‚ã‹ã‚‰ãšã€ãªãœdm1.hもインクルードã™ã‚‹ã“ã¨ã§ãƒ“ルドãŒé€šã£ãŸã®ã‹ãŒã‚ã‹ã‚Šã¾ã›ã‚“。
ã¡ãªã¿ã«dm3.hã‚‚åŒæ§˜ã®ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¦ã—ã¾ã„ã€dm1.hを一緒ã«ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã™ã‚‹ã“ã¨ã§ãƒ“ルドãŒé€šã‚Šã¾ã—ãŸã€‚
ã¡ãªã¿ã«ç’°å¢ƒã¯
WindowsXP sp3
VC++2008EE
ode本体ã¯Cドライブ直下
以上ã€ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚