📄 hoopstestview.cpp
字号:
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 + -