|
@ -55,10 +55,13 @@ namespace ssim { |
|
|
std::vector<float> v_max_point = {(float) i_DBC.relMaxBBox.x(), |
|
|
std::vector<float> v_max_point = {(float) i_DBC.relMaxBBox.x(), |
|
|
(float) i_DBC.relMaxBBox.y(), |
|
|
(float) i_DBC.relMaxBBox.y(), |
|
|
(float) i_DBC.relMaxBBox.z()}; |
|
|
(float) i_DBC.relMaxBBox.z()}; |
|
|
if (ImGui::InputFloat3(("Dirichlet最小值 " + std::to_string(i + 1)).c_str(), |
|
|
|
|
|
v_min_point.data()) || |
|
|
static bool is_drag[2]; |
|
|
ImGui::InputFloat3(("Dirichlet最大值 " + std::to_string(i + 1)).c_str(), |
|
|
ImGui::PushItemWidth(-80); |
|
|
v_max_point.data())) { |
|
|
is_drag[0]= ImGui::DragFloat3(("最小值 " + std::to_string(i + 1)+"##Dir").c_str(),v_min_point.data(),0.01,0.0,1.0,"%.3f"); |
|
|
|
|
|
is_drag[1]= ImGui::DragFloat3(("最大值 " + std::to_string(i + 1)+"##Dir").c_str(),v_max_point.data(),0.01,0.0,1.0,"%.3f"); |
|
|
|
|
|
ImGui::PopItemWidth(); |
|
|
|
|
|
if (is_drag[0] || is_drag[1]) { |
|
|
gui_ctrl_.is_modified = true; |
|
|
gui_ctrl_.is_modified = true; |
|
|
i_DBC.relMinBBox = {v_min_point[0], v_min_point[1], v_min_point[2]}; |
|
|
i_DBC.relMinBBox = {v_min_point[0], v_min_point[1], v_min_point[2]}; |
|
|
i_DBC.relMaxBBox = {v_max_point[0], v_max_point[1], v_max_point[2]}; |
|
|
i_DBC.relMaxBBox = {v_max_point[0], v_max_point[1], v_max_point[2]}; |
|
@ -83,18 +86,17 @@ namespace ssim { |
|
|
(float) i_NBC.relMaxBBox.z()}; |
|
|
(float) i_NBC.relMaxBBox.z()}; |
|
|
std::vector<float> v_force = {(float) i_NBC.force.x(), (float) i_NBC.force.y(), |
|
|
std::vector<float> v_force = {(float) i_NBC.force.x(), (float) i_NBC.force.y(), |
|
|
(float) i_NBC.force.z()}; |
|
|
(float) i_NBC.force.z()}; |
|
|
if ( |
|
|
static bool is_drag[3]; |
|
|
ImGui::InputFloat3(("Neumann最小值 " + std::to_string(i + 1)).c_str(), |
|
|
ImGui::PushItemWidth(-80); |
|
|
v_min_point.data()) || |
|
|
is_drag[0]= ImGui::DragFloat3(("最小值 " + std::to_string(i + 1)+"##Neu").c_str(),v_min_point.data(),0.01,0.0,1.0,"%.3f"); |
|
|
ImGui::InputFloat3(("Neumann最大值 " + std::to_string(i + 1)).c_str(), |
|
|
is_drag[1]= ImGui::DragFloat3(("最大值 " + std::to_string(i + 1)+"##Neu").c_str(),v_max_point.data(),0.01,0.0,1.0,"%.3f"); |
|
|
v_max_point.data()) || |
|
|
is_drag[2]= ImGui::DragFloat3(("力" + std::to_string(i + 1)+" (N)"+"##Neu").c_str(),v_force.data(),1,-1e10,1e10,"%.3f"); |
|
|
ImGui::InputFloat3(("Neumann力 " + std::to_string(i + 1)).c_str(), |
|
|
ImGui::PopItemWidth(); |
|
|
v_force.data())) { |
|
|
if (is_drag[0] || is_drag[1] || is_drag[2]) { |
|
|
gui_ctrl_.is_modified = true; |
|
|
gui_ctrl_.is_modified = true; |
|
|
i_NBC.relMinBBox = {v_min_point[0], v_min_point[1], v_min_point[2]}; |
|
|
i_NBC.relMinBBox = {v_min_point[0], v_min_point[1], v_min_point[2]}; |
|
|
i_NBC.relMaxBBox = {v_max_point[0], v_max_point[1], v_max_point[2]}; |
|
|
i_NBC.relMaxBBox = {v_max_point[0], v_max_point[1], v_max_point[2]}; |
|
|
i_NBC.force = {v_force[0], v_force[1], v_force[2]}; |
|
|
i_NBC.force = {v_force[0], v_force[1], v_force[2]}; |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if (gui_ctrl_.is_modified) { |
|
|
if (gui_ctrl_.is_modified) { |
|
@ -109,7 +111,7 @@ namespace ssim { |
|
|
if (ImGui::CollapsingHeader("材料设置", ImGuiTreeNodeFlags_DefaultOpen)) { |
|
|
if (ImGui::CollapsingHeader("材料设置", ImGuiTreeNodeFlags_DefaultOpen)) { |
|
|
static const int item_width=200; |
|
|
static const int item_width=200; |
|
|
ImGui::SetNextItemWidth(item_width); |
|
|
ImGui::SetNextItemWidth(item_width); |
|
|
ImGui::InputFloat("杨氏模量", &sp_StaticSim_->get_material_property().Youngs_Modulus, 1.0f, 2e11f, |
|
|
ImGui::InputFloat("杨氏模量 (Pa)", &sp_StaticSim_->get_material_property().Youngs_Modulus, 1.0f, 2e11f, |
|
|
"%.2e"); |
|
|
"%.2e"); |
|
|
|
|
|
|
|
|
ImGui::SetNextItemWidth(item_width); |
|
|
ImGui::SetNextItemWidth(item_width); |
|
@ -117,7 +119,7 @@ namespace ssim { |
|
|
"%.3f"); |
|
|
"%.3f"); |
|
|
|
|
|
|
|
|
ImGui::SetNextItemWidth(item_width); |
|
|
ImGui::SetNextItemWidth(item_width); |
|
|
ImGui::InputFloat("密度", &sp_StaticSim_->get_material_property().density, 1.0f, 1000.0f, "%.3f"); |
|
|
ImGui::InputFloat("密度 (kg/m^3)", &sp_StaticSim_->get_material_property().density, 1.0f, 1000.0f, "%.3f"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (ImGui::Button(("原始模型"), ImVec2(-1, 0))) { |
|
|
if (ImGui::Button(("原始模型"), ImVec2(-1, 0))) { |
|
|