Пример #1
0
	void fluid::step( double dt )
	{
		prepare_step();

		/*STEP 1: calculate densities*/
		calculate_densities();
		glass_common_update(&fluid::calculate_glass_fluid_densities);

		/*if(simulator::detailed_logging)
		{
		printf("densities: ");
		for(int i=0;i<n;i++)
		{
		printf("%lf ", particles[i].density);
		if(particles[i].density!=density) system("pause");
		}
		printf("\n");
		}*/

		/*STEP 2: calculate forces*/
		calculate_forces();
		glass_common_update(&fluid::calculate_glass_fluid_forces);
		/*STEP 3: move particles*/
		update_positions(dt);
		set_bounding_particle_indices();
	}
void Acceleration_Calibration_Wizard::advance()
{
    if (m_step == Step::INTRO)
    {
        m_step = Step::RESET;
    }
    else if (m_step == Step::RESET)
    {
        m_step = Step::SHOW_INSTRUCTIONS;
    }
    else if (m_step == Step::SHOW_INSTRUCTIONS)
    {
        m_step = Step::COLLECT;
    }
    else if (m_step == Step::COLLECT)
    {
        m_connection.disconnect();
        m_collect_data_step++;
        m_step = m_collect_data_step < 6 ? Step::SHOW_INSTRUCTIONS : Step::DONE;
    }

    prepare_step();
}
Acceleration_Calibration_Wizard::Acceleration_Calibration_Wizard(silk::HAL& hal, silk::Comms& comms, silk::node::gs::Node_ptr node, size_t output_idx, QWidget* parent)
    : QDialog(parent)
    , m_hal(hal)
    , m_comms(comms)
    , m_node(node)
    , m_output(node->outputs[output_idx])
{
    m_stream = std::static_pointer_cast<silk::stream::gs::Acceleration>(m_output.stream);

    m_hal.set_stream_telemetry_active(m_output.stream->name, true);

    m_initial_calibration = get_calibration_points();
    set_calibration_points(sz::calibration::Acceleration_Points());

    m_step = Step::INTRO;

    setLayout(new QVBoxLayout(this));
    layout()->setMargin(0);
    layout()->setSpacing(0);
    layout()->setContentsMargins(4, 4, 4, 4);

    prepare_step();
}