⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hoopstestview.cpp

📁 使用HOOPS库开发的一个教学演示工具。
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			HC_Close_Segment();			HC_Open_Segment("");				HC_Translate_Object(0.85,-1.4,0);				HC_Include_Segment("/texts/baidong");			HC_Close_Segment();		HC_Close_Segment();		HC_Open_Segment("tanhuang");			HC_Open_Segment("");				HC_Translate_Object(0.85,-0.8,0);				HC_Include_Segment("/texts/ball");			HC_Close_Segment();			HC_Open_Segment("");				HC_Translate_Object(0.85,-1.1,0);				HC_Include_Segment("/texts/tanhuang");			HC_Close_Segment();			HC_Open_Segment("");				HC_Translate_Object(0.85,-1.4,0);				HC_Include_Segment("/texts/changdu");			HC_Close_Segment();		HC_Close_Segment();		HC_Open_Segment("huapo");		HC_Close_Segment();	HC_Close_Segment();
	///////////////////////////////////////////////单摆实验界面
	//实验介绍
	HC_Open_Segment("/danbai_introduce");
 		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\danbai_introduce.hsf"),mytool);	HC_Close_Segment();

	//猜一猜
	HC_Open_Segment("/danbai_guess");
 		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\danbai_guess.hsf"),mytool);	HC_Close_Segment();

	//做一做
	HC_Open_Segment("/danbai_try");
 		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\danbai_try.hsf"),mytool);	HC_Close_Segment();

	//模拟
	HC_Open_Segment("/danbai_dotry");
 //		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\danbai_dotry.hsf"),mytool);				//调整屏幕中的显示位置		HC_Translate_Object(0.5,0,0);		//左右分割		HC_Insert_Line(-1.5,-5,0,-1.5,5,0);		//???		//HC_Insert_Line(0.5,-0.1,0,5,-0.1,0);		//单摆横梁		HC_Insert_Line(-1,1,0,1,1,0);		HC_Set_Line_Weight(3.0);		HC_Set_Color("lines = (r=0.5 g=0.5 b=0.1)");		HC_Open_Segment("simulate");		HC_Close_Segment();		HC_Open_Segment("select");			HC_Translate_Object(-2,0.3,0);			HC_Open_Segment("");				HC_Translate_Object(0,1,0);				HC_Include_Segment("/tools/bigball");			HC_Close_Segment();			HC_Open_Segment("");				HC_Translate_Object(0,0.5,0);				HC_Include_Segment("/tools/smallball");			HC_Close_Segment();			HC_Open_Segment("");				HC_Translate_Object(0.1,0,0);				HC_Include_Segment("/tools/longline");			HC_Close_Segment();			HC_Open_Segment("");				HC_Translate_Object(-0.1,0,0);				HC_Include_Segment("/tools/shortline");			HC_Close_Segment();		HC_Close_Segment();		HC_Open_Segment("button");			HC_Translate_Object(-2,-1.2,0);			HC_Include_Segment("/texts/go");
		HC_Close_Segment();		HC_Open_Segment("timer");			CString sSec;			sSec.Format("%d",0);			wchar_t* pUnicode = NULL;
			int nLen = MultiByteToWideChar(CP_ACP, 0, sSec, -1, NULL, 0);
			pUnicode = new wchar_t[nLen + 1];
			MultiByteToWideChar(CP_ACP, 0, sSec, -1, pUnicode, nLen);
			HC_Set_Text_Font("size = 0.03 sru");
			HC_Insert_Text_With_Encoding (-1, -1.2, 0, "unicode",(char *)L"秒表:");
			HC_Insert_Text_With_Encoding (-0.8, -1.2, 0, "unicode",(char *)pUnicode);		HC_Close_Segment();		HC_Open_Segment("height");			HC_Set_Text_Font("size = 0.03 sru");
#ifndef SECEND
			HC_Insert_Text_With_Encoding (-0.2, -1.2, 0, "unicode",(char *)L"高度:高");
#endif
			HC_Insert_Text_With_Encoding (0.6, -1.2, 0, "unicode",(char *)L"长度:短");
		HC_Close_Segment();		//HC_Open_Segment("table");		//	HC_Include_Segment("/table");		//	HC_Include_Segment("/thead/danbai");		//HC_Close_Segment();	HC_Close_Segment();

	//想一想
	HC_Open_Segment("/danbai_think");
 		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\danbai_think.hsf"),mytool);	HC_Close_Segment();
	///////////////////////////////////////////////单摆实验界面

	///////////////////////////////////////////////弹簧实验界面
	//实验介绍
	HC_Open_Segment("/tanhuang_introduce");
 		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\tanhuang_introduce.hsf"),mytool);	HC_Close_Segment();

	//猜一猜
	HC_Open_Segment("/tanhuang_guess");
 		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\tanhuang_guess.hsf"),mytool);	HC_Close_Segment();

	//做一做
	HC_Open_Segment("/tanhuang_try");
 		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\tanhuang_try.hsf"),mytool);	HC_Close_Segment();

	//模拟
	HC_Open_Segment("/tanhuang_dotry");
 //		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\tanhuang_dotry.hsf"),mytool);		//调整屏幕中的显示位置		HC_Translate_Object(0.5,0,0);		//垂直分割		HC_Insert_Line(-1.5,-5,0,-1.5,5,0);		//横梁		HC_Insert_Line(-0.5,1,0,0.5,1,0);		//HC_Insert_Line(0.5,-0.1,0,5,-0.1,0);		HC_Set_Line_Weight(3.0);		HC_Set_Color("lines = (r=0.5 g=0.5 b=0.1)");		HC_Open_Segment("ruler");			HC_Translate_Object(1,0,0);			HC_Insert_Line(-2,1,0,-1.5,1,0);				HC_Insert_Line(-1.6,0.9,0,-1.5,0.9,0);				HC_Insert_Line(-1.6,0.8,0,-1.5,0.8,0);				HC_Insert_Line(-1.6,0.7,0,-1.5,0.7,0);				HC_Insert_Line(-1.6,0.6,0,-1.5,0.6,0);			HC_Insert_Line(-2,0.5,0,-1.5,0.5,0);				HC_Insert_Line(-1.6,0.4,0,-1.5,0.4,0);				HC_Insert_Line(-1.6,0.3,0,-1.5,0.3,0);				HC_Insert_Line(-1.6,0.2,0,-1.5,0.2,0);				HC_Insert_Line(-1.6,0.1,0,-1.5,0.1,0);			HC_Insert_Line(-2,0,0,-1.5,0,0);				HC_Insert_Line(-1.6,-0.1,0,-1.5,-0.1,0);				HC_Insert_Line(-1.6,-0.2,0,-1.5,-0.2,0);				HC_Insert_Line(-1.6,-0.3,0,-1.5,-0.3,0);				HC_Insert_Line(-1.6,-0.4,0,-1.5,-0.4,0);			HC_Insert_Line(-2,-0.5,0,-1.5,-0.5,0);				HC_Insert_Line(-1.6,-0.6,0,-1.5,-0.6,0);				HC_Insert_Line(-1.6,-0.7,0,-1.5,-0.7,0);				HC_Insert_Line(-1.6,-0.8,0,-1.5,-0.8,0);				HC_Insert_Line(-1.6,-0.9,0,-1.5,-0.9,0);			HC_Insert_Line(-2,-1,0,-1.5,-1,0);				HC_Insert_Line(-1.6,-1.1,0,-1.5,-1.1,0);				HC_Insert_Line(-1.6,-1.2,0,-1.5,-1.2,0);				HC_Insert_Line(-1.6,-1.3,0,-1.5,-1.3,0);				HC_Insert_Line(-1.6,-1.4,0,-1.5,-1.4,0);			HC_Insert_Line(-2,-1.5,0,-1.5,-1.5,0);				HC_Insert_Line(-1.6,-1.6,0,-1.5,-1.6,0);				HC_Insert_Line(-1.6,-1.7,0,-1.5,-1.7,0);				HC_Insert_Line(-1.6,-1.8,0,-1.5,-1.8,0);				HC_Insert_Line(-1.6,-1.9,0,-1.5,-1.9,0);			HC_Insert_Line(-2,-2,0,-1.5,-2,0);			HC_Set_Text_Font("size = 0.02 sru");			HC_Insert_Text(-2,1.05,0,"0");			HC_Insert_Text(-2,0.55,0,"1");			HC_Insert_Text(-2,0.05,0,"2");			HC_Insert_Text(-2,-0.45,0,"3");			HC_Insert_Text(-2,-0.95,0,"4");			HC_Insert_Text(-2,-1.45,0,"5");		HC_Close_Segment();		HC_Open_Segment("simulate");		HC_Close_Segment();		HC_Open_Segment("select");			HC_Translate_Object(-2,0.3,0);			HC_Open_Segment("");				HC_Translate_Object(0,1,0);				HC_Include_Segment("/tools/bigball");			HC_Close_Segment();			HC_Open_Segment("");				HC_Translate_Object(0,0.5,0);				HC_Include_Segment("/tools/smallball");			HC_Close_Segment();			HC_Open_Segment("");				HC_Translate_Object(0.1,0,0);				HC_Include_Segment("/tools/bigtanhuang");			HC_Close_Segment();			HC_Open_Segment("");				HC_Translate_Object(-0.1,0,0);				HC_Include_Segment("/tools/smalltanhuang");			HC_Close_Segment();		HC_Close_Segment();		HC_Open_Segment("button");			HC_Translate_Object(-2,-1.2,0);			HC_Include_Segment("/texts/go");
		HC_Close_Segment();		HC_Open_Segment("thickness");			HC_Set_Text_Font("size = 0.03 sru");
			HC_Insert_Text_With_Encoding (0.6, -1.2, 0, "unicode",(char *)L"粗细:粗");
		HC_Close_Segment();		//HC_Open_Segment("table");		//	HC_Include_Segment("/table");		//	HC_Include_Segment("/thead/tanhuang");		//HC_Close_Segment();	HC_Close_Segment();

	//想一想
	HC_Open_Segment("/tanhuang_think");
 		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\tanhuang_think.hsf"),mytool);	HC_Close_Segment();

	///////////////////////////////////////////////弹簧实验界面

	////滑坡实验
	//HC_Open_Segment("/huapo_introduce");
 //		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\huapo_introduce.hsf"),mytool);	//HC_Close_Segment();

	//HC_Open_Segment("/huapo_guess");
 //		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\huapo_guess.hsf"),mytool);	//HC_Close_Segment();

	//HC_Open_Segment("/huapo_try");
 //		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\huapo_try.hsf"),mytool);	//HC_Close_Segment();

	//HC_Open_Segment("/huapo_dotry");
 ////		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\huapo_dotry.hsf"),mytool);	//	HC_Insert_Line(0.5,-5,0,0.5,5,0);	//	HC_Insert_Line(0.5,-0.1,0,5,-0.1,0);	//	HC_Set_Line_Weight(2.0);	//	HC_Set_Color("lines = (r=0.5 g=0.5 b=0.1)");	//	HC_Open_Segment("display");	//	HC_Close_Segment();	//	HC_Open_Segment("select");	//		HC_Insert_Text(1,1,0,"nothing");	//	HC_Close_Segment();	//	HC_Open_Segment("table");	//		HC_Include_Segment("/table");	//		HC_Include_Segment("/thead/huapo");	//	HC_Close_Segment();	//HC_Close_Segment();

	//HC_Open_Segment("/huapo_think");
 //		HTK_Read_Stream_File(H_ASCII_TEXT("hsf\\huapo_think.hsf"),mytool);	//HC_Close_Segment();

	delete(mytool);
}

void ChoopstestView::OnTimer(UINT nIDEvent)
{
	switch(nIDEvent)
	{
	case 0:
		{//更新屏幕专用线程。在不同的电脑上以最大100桢刷新速度工作。
			//单摆
			HC_Open_Segment("/danbai_dotry/simulate");				HC_Flush_Contents(".","everything");				HC_Rotate_Object(0,0,fPhase);	//旋转				HC_Translate_Object(0,1,0);		//向上调整1单位				HC_Open_Segment("line");					HC_Scale_Object(1,fLineLength,1);					HC_Include_Segment("/tools/line");				HC_Close_Segment();				HC_Open_Segment("ball");					HC_Scale_Object(fBallSize,fBallSize,fBallSize);					HC_Translate_Object(0,-1*fLineLength,0);					HC_Include_Segment("/tools/ball");				HC_Close_Segment();			HC_Close_Segment();			HC_Open_Segment("/danbai_dotry/timer");	//秒表放在这里可以在停止时自动清零。如果不需要这个功能,则将其放到timer4中。				HC_Flush_Contents(".","everything");				CString sSec;				sSec.Format("%d",sec);				wchar_t* pUnicode = NULL;
				int nLen = MultiByteToWideChar(CP_ACP, 0, sSec, -1, NULL, 0);
				pUnicode = new wchar_t[nLen + 1];
				MultiByteToWideChar(CP_ACP, 0, sSec, -1, pUnicode, nLen);
				HC_Set_Text_Font("size = 0.03 sru");
				HC_Insert_Text_With_Encoding (-1, -1.2, 0, "unicode",(char *)L"秒表:");
				HC_Insert_Text_With_Encoding (-0.8, -1.2, 0, "unicode",(char *)pUnicode);			HC_Close_Segment();			//更新高度的显示
			HC_Open_Segment("/danbai_dotry/height");
				HC_Flush_Contents(".","everything");				if (state == 5)				{					HC_Set_Text_Font("size = 0.03 sru");
#ifndef SECEND
					(fPhase > 30)?HC_Insert_Text_With_Encoding (-0.2, -1.2, 0, "unicode",(char *)L"高度:高"):HC_Insert_Text_With_Encoding (-0.2, -1.2, 0, "unicode",(char *)L"高度:低");#endif					(fLineLength > 1)?HC_Insert_Text_With_Encoding (0.6, -1.2, 0, "unicode",(char *)L"长度:长"):HC_Insert_Text_With_Encoding (0.6, -1.2, 0, "unicode",(char *)L"长度:短");				}			HC_Close_Segment();
			//弹簧			HC_Open_Segment("/tanhuang_dotry/simulate");				HC_Flush_Contents(".","everything");				HC_Translate_Object(0,1,0);				HC_Open_Segment("tanhuang");					HC_Scale_Object(1,fScale,1);					HC_Include_Segment(sTanhuang);				HC_Close_Segment();				HC_Open_Segment("ball");					HC_Scale_Object(fBallSize,fBallSize,fBallSize);					HC_Translate_Object(0,-1 * fScale,0);					HC_Include_Segment("/tools/ball");				HC_Close_Segment();			HC_Close_Segment();			HC_Open_Segment("/tanhuang_dotry/thickness");				HC_Flush_Contents(".","everything");				if (state == 15)				{					HC_Set_Text_Font("size = 0.03 sru");
					(sTanhuang == "/tools/bigtanhuang")?HC_Insert_Text_With_Encoding (0.6, -1.2, 0, "unicode",(char *)L"粗细:粗"):HC_Insert_Text_With_Encoding (0.6, -1.2, 0, "unicode",(char *)L"粗细:细");				}			HC_Close_Segment();			//HC_Open_Segment("/huapo_dotry/display");			//	HC_Flush_Contents(".","everything");			//	HC_Translate_Object(-1,1,0);			//	HC_Open_Segment("line");			//		HC_Scale_Object(1,scale_y,1);			//		HC_Include_Segment(m_line);			//	HC_Close_Segment();			//	HC_Open_Segment("ball");			//		HC_Translate_Object(0,m_ball_y,0);			//		HC_Include_Segment(m_ball);			//	HC_Close_Segment();			//HC_Close_Segment();			HC_Update_Display();
			break;
		}
	case 1:
		{//模拟单摆动作
			R *= 0.9999;	//模拟阻尼运动
			if (tick == 0) tick = GetTickCount();	//是第一次运行的话就赋值
			DWORD apptick = GetTickCount() - tick;
			double time = apptick / 1000.0;	//单位变为秒

			float T,w;
			T = 2*PI*sqrt(fLineLength/g);	//计算周期
			w = 2*PI/T;
			fPhase = Max * sin(w * time + 90) * R;	//带阻尼的简谐运动
			break;
		}
	case 2:
		{//模拟弹簧动作			R *= 0.98;			if (tick == 0) tick = GetTickCount();
			DWORD apptick = GetTickCount() - tick;
			double time = apptick / 1000.0;	//单位变为秒

			//加强细弹簧的弹性
			if (K == 3)
			{
				R *= 0.985/0.98;
			}

			float T,w;
			T = 2*PI*sqrt(fBallSize/K);	//弹簧周期
			w = 2*PI/T;
			fScale = (1 + fBallSize * g / K) + (fBallSize * g / K) * sin(w * time) * R;
			break;
		}
	case 3:
		{//模拟滑坡动作
			break;
		}
	case 4:
		{//秒表
			sec++;

			if (sec >= 15)
			{
				WriteToFile("单摆摆动停止");
				fPhase = Max;
				StopSim(1);
				state = 5;
			}
		}
	}

	CHoopsView::OnTimer(nIDEvent);
}

void ChoopstestView::OnDanbai1()
{
	WriteToFile("看单摆实验介绍");

	HC_Open_Segment_By_Key(m_pHView->GetModelKey());
		HC_Flush_Contents(".","everything");
		HC_Include_Segment("/danbai_introduce");
		HC_Include_Segment("/tools/danbai");
	HC_Close_Segment();

	HC_Update_Display();
	state = 1;
	StopSim(1);
	if (danbai_jindu < 1)
	{
		danbai_jindu = 1;
	}
}

void ChoopstestView::OnDanbai2()
{
	WriteToFile("做单摆实验猜一猜");

	HC_Open_Segment_By_Key(m_pHView->GetModelKey());
		HC_Flush_Contents(".","everything");
		HC_Include_Segment("/danbai_guess");
		HC_Include_Segment("/tools/danbai");
	HC_Close_Segment();

	HC_Update_Display();
	state = 2;
	StopSim(1);
	if (danbai_jindu < 2)
	{
		danbai_jindu = 2;
	}
}

void ChoopstestView::OnDanbai3()
{
	WriteToFile("看单摆实验做一做");

	HC_Open_Segment_By_Key(m_pHView->GetModelKey());
		HC_Flush_Contents(".","everything");
		HC_Include_Segment("/danbai_try");
		HC_Include_Segment("/tools/danbai");
	HC_Close_Segment();

	HC_Update_Display();
	state = 3;	//接受点击消息
	StopSim(1);
	if (danbai_jindu < 3)
	{
		danbai_jindu = 3;
	}
}

void ChoopstestView::OnDanbai4()
{
	WriteToFile("做单摆实验想一想");

	HC_Open_Segment_By_Key(m_pHView->GetModelKey());
		HC_Flush_Contents(".","everything");
		HC_Include_Segment("/danbai_think");
		HC_Include_Segment("/tools/danbai");
	HC_Close_Segment();

	HC_Update_Display();
	state = 4;
	StopSim(1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -