void TradingSignalMomentum::addMomentum() {
    QTableWidgetItem* instrument = new QTableWidgetItem(ui->instrument_text->text());
    QTableWidgetItem* volume = new QTableWidgetItem(ui->volume_text->text());
    QTableWidgetItem* change = new QTableWidgetItem(ui->change_text->text());

    ui->tableWidget->insertRow(ui->tableWidget->rowCount());
    ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 0, instrument);
    ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 1, volume);
    ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 2, change);

    emit newMomentum(ui->instrument_text->text(), ui->volume_text->text(), ui->change_text->text());

    ui->instrument_text->clear();
    ui->volume_text->clear();
    ui->change_text->clear();
}
示例#2
0
void Physics::update()
{

	
	for (TilePhysics* tile : tiles) {

		Vector2 tilePos = Vector2(tile->getTransform().getWorldPosition());
		tile->setMomentum(tile->getMomentum() + (ftime->getDeltaTime() * tile->getAcceleration()));
		
		Vector2 tileNewPos = tilePos + (ftime->getDeltaTime() * tile->getMomentum());

		for (TilePhysics* testingTile : tiles) {

			if (testingTile == tile) continue;

			Vector2 testingTilePos = Vector2(testingTile->getTransform().getWorldPosition());
			Vector2 testingMin = testingTilePos - Vector2(testingTile->getSize() / 2.f);
			Vector2 testingMax = testingTilePos + Vector2(testingTile->getSize() / 2.f);
			
			if (tileNewPos.x > testingMin.x && tileNewPos.x < testingMax.x && tileNewPos.y > testingMin.y && tileNewPos.y < testingMax.y) {
				

				if (tile->getMass() != 0) {

					Vector2 separation = tileNewPos - testingTilePos;

					Vector2 normal;

					if (abs(separation.x) > abs(separation.y)) {
						if (separation.x < 0) normal = Vector2(-1, 0);
						else normal = Vector2(1, 0);
					}
					else {
						if (separation.y < 0) normal = Vector2(0, -1);
						else normal = Vector2(0, 1);
					}

					Vector2 newMomentum(tile->getMomentum() - (2 * tile->getMomentum().dot(normal) * normal));

					if (normal.x == 0) {
						newMomentum.y *= tile->getBounciness() + testingTile->getBounciness();
						
					}
					else {
						newMomentum.x *= tile->getBounciness() + testingTile->getBounciness();
					}
					
					tile->setMomentum(newMomentum);
					tile->setAcceleration(newMomentum.normalized() * tile->getAcceleration().lenght());

				}
				
				tile->setMomentum(Vector2(0));
				tile->setAcceleration(Vector2(0));




			}



		}
		
		tile->getTransform().setPosition(Vector3(tileNewPos.x, tileNewPos.y, 0.f));

	}





}