bugün
- sözlüğü bırakıyorum ajitasyonu12
- laik teyzelerin fenotipi34
- yeni parti10
- recep tayyip erdoğan12
- z kuşağı kitap okuyor mu10
- kadınların o güzel ciğerleri3
- mhp akp iyi anahtar bbp ittifakı5
- 3 numara saç kirli sakal6
- dem partili yazar7
- geceye bir şiir bırak5
- gece geç saatte ışığı yanan evler2
- yavuz ağıralioğlu7
- beşiktaş11
- arkadaşlar kararsız kaldım hangisini alayım18
- ediz barlas2
- milliyetçi hareket partisi4
- akp oyları yüzde 10'un üzerinde10
- honore de balzac4
- ekrem imamoğlu8
- mhp dem kardeştir ayrım yapan kalleştir4
- seçime 40 gün kala ayakkabı ile seccadeye basmak3
- selahattin demirtaş4
- kalp ritmini hızlandıran şeyler5
- 23 ağustos 2026 alanyaspor beşiktaş maçı6
- cumhuriyet halk partisi6
- günün yazar kavgası bahisleri3
- mansur yavaş11
- amın arasına giren mayo3
- yeni başlayanlar için soruşturma4
- davranışlardaki küçük ayrıntıları kafaya takmak5
- islam barış dinidir13
- 2028 cumhurbaşkanlığı seçimleri6
- bir insanı hayatının merkezine koymak7
- kitap okumaya geç başlamak4
- haydi güzelim şeker ezelim4
- unutulmaz twitler2
- vincenzo italiano5
- hangi sözlük kızıyla ne yapmak isterdin3
- şarapçı koala'nın denemediği ideoloji3
- 2 dünya savaşı'na katılmış yazarlar4
- para kazanmanın en kolay oldugu devir2
- gençlere çalışın tavsiyesi veren ihtiyar2
- osuruktan şiirler67
- huzursuz insan4
- müzikten soğumak3
- tayyip erdoğan'a oy vermeye karar vermek8
- tarihci76 ya bir şiir yaz2
- bir uykusuz eleman var uyuyamıyor geceleri3
- yazarların favori oyun karakteri15
- hukuk okuyan tiplerin biraz ezik olması9
zemin için çarpışan objelere farklı sürtünme katsayıları verdim, çünkü birinin malzemesi plastik, diğeri metal olabilir, bu da sürtünme değerlerini etkileyecektir.
(video artık mevcut değil)
dikdörtgenlere farklı ağırlıklar atadım ve zeminle etkileşmelerini sağladım.
ortaya çıkan tablo hayli ilginç oldu.
#include <SFML/Graphics.hpp> // SFML grafik kütüphanesini dahil et
#include <cmath> // Matematik fonksiyonları için gerekli kütüphane
#include <sstream> // String akışları için gerekli kütüphane
// Sabitler
const float GRAVITY = 981.0f; // Yerçekimi ivmesi (N)
const float FLOOR_Y = 540.0f; // Zemin seviyesi (Y-koordinatı)
const float WINDOW_WIDTH = 1920.0f; // Pencere genişliği
const float WINDOW_HEIGHT = 1080.0f; // Pencere yüksekliği
// Ağırlıklar (kg)
const float RECTANGLE1_WEIGHT = 3000.0f; // ilk dikdörtgenin ağırlığı
const float RECTANGLE2_WEIGHT = 50.0f; // ikinci dikdörtgenin ağırlığı
// Sürtünme katsayıları
const float FRICTION_RECTANGLE1 = 0.1f; // ilk dikdörtgenin sürtünme katsayısı
const float FRICTION_RECTANGLE2 = 0.2f; // ikinci dikdörtgenin sürtünme katsayısı
int main()
{
// Pencereyi oluştur
sf::RenderWindow window(sf::VideoMode(WINDOW_WIDTH, WINDOW_HEIGHT), "Dikdörtgen Çarpışması");
// Mavi gökyüzü (dikey olarak tam pencere yüksekliği)
sf::RectangleShape sky(sf::Vector2f(WINDOW_WIDTH, WINDOW_HEIGHT));
sky.setFillColor(sf::Color(135, 206, 250)); // Açık mavi gökyüzü rengi
// Yeşil zemin
sf::RectangleShape floor(sf::Vector2f(WINDOW_WIDTH, WINDOW_HEIGHT - FLOOR_Y));
floor.setFillColor(sf::Color::Green);
floor.setPosition(0, FLOOR_Y); // Zemin seviyesini ayarla
// Mavi dikdörtgenler oluştur
sf::RectangleShape rectangle1(sf::Vector2f(50.0f, 50.0f));
rectangle1.setFillColor(sf::Color::Blue);
rectangle1.setPosition(100, FLOOR_Y); // Başlangıç konumu
sf::RectangleShape rectangle2(sf::Vector2f(50.0f, 50.0f));
rectangle2.setFillColor(sf::Color::Red);
rectangle2.setPosition(500, FLOOR_Y); // Başlangıç konumu
// Hız değişkenleri
float xVelocity1 = 400.0f; // ilk dikdörtgenin yatay hızı
float xVelocity2 = -150.0f; // ikinci dikdörtgenin yatay hızı
sf::Clock clock; // Zamanlayıcı oluştur
while (window.isOpen()) // Pencere açık olduğu sürece
{
sf::Event event;
while (window.pollEvent(event)) // Olayları kontrol et
{
if (event.type == sf::Event::Closed) // Pencere kapatıldıysa
window.close(); // Pencereyi kapat
}
float dt = clock.restart().asSeconds(); // Delta zamanını hesapla
// Sürtünmeyi uygula (dikey hareket için değil, sadece yatay hareket için)
if (rectangle1.getPosition().y == FLOOR_Y) {
xVelocity1 -= FRICTION_RECTANGLE1 * GRAVITY * dt * (xVelocity1 < 0 ? -1 : 1);
}
if (rectangle2.getPosition().y == FLOOR_Y) {
xVelocity2 -= FRICTION_RECTANGLE2 * GRAVITY * dt * (xVelocity2 < 0 ? -1 : 1);
}
// iki dikdörtgenin çarpışma kontrolü
if (rectangle1.getGlobalBounds().intersects(rectangle2.getGlobalBounds())) {
// Çarpışma sonrası momentum hesaplama
float totalWeight = RECTANGLE1_WEIGHT + RECTANGLE2_WEIGHT;
float newVelocity1 = ((RECTANGLE1_WEIGHT - RECTANGLE2_WEIGHT) / totalWeight) * xVelocity1 +
((2 * RECTANGLE2_WEIGHT) / totalWeight) * xVelocity2;
float newVelocity2 = ((2 * RECTANGLE1_WEIGHT) / totalWeight) * xVelocity1 +
((RECTANGLE2_WEIGHT - RECTANGLE1_WEIGHT) / totalWeight) * xVelocity2;
// Hızları güncelle
xVelocity1 = newVelocity1;
xVelocity2 = newVelocity2;
// Çarpışma sonrası konum düzeltme
if (xVelocity1 > 0) {
rectangle1.setPosition(rectangle2.getPosition().x - rectangle1.getSize().x, FLOOR_Y);
} else {
rectangle2.setPosition(rectangle1.getPosition().x + rectangle1.getSize().x, FLOOR_Y);
}
}
// Dikdörtgenlerin konumunu güncelle
rectangle1.move(xVelocity1 * dt, 0); // ilk dikdörtgeni yatay olarak hareket ettir
rectangle2.move(xVelocity2 * dt, 0); // ikinci dikdörtgeni yatay olarak hareket ettir
// Pencereyi temizle ve zemin ile gökyüzünü çiz
window.clear();
window.draw(sky); // Gökyüzünü çiz
window.draw(floor); // Zemini çiz
window.draw(rectangle1); // ilk dikdörtgeni çiz
window.draw(rectangle2); // ikinci dikdörtgeni çiz
window.display(); // Pencereyi güncelle
}
return 0; // Program başarıyla tamamlandı
}
(video artık mevcut değil)
dikdörtgenlere farklı ağırlıklar atadım ve zeminle etkileşmelerini sağladım.
ortaya çıkan tablo hayli ilginç oldu.
#include <SFML/Graphics.hpp> // SFML grafik kütüphanesini dahil et
#include <cmath> // Matematik fonksiyonları için gerekli kütüphane
#include <sstream> // String akışları için gerekli kütüphane
// Sabitler
const float GRAVITY = 981.0f; // Yerçekimi ivmesi (N)
const float FLOOR_Y = 540.0f; // Zemin seviyesi (Y-koordinatı)
const float WINDOW_WIDTH = 1920.0f; // Pencere genişliği
const float WINDOW_HEIGHT = 1080.0f; // Pencere yüksekliği
// Ağırlıklar (kg)
const float RECTANGLE1_WEIGHT = 3000.0f; // ilk dikdörtgenin ağırlığı
const float RECTANGLE2_WEIGHT = 50.0f; // ikinci dikdörtgenin ağırlığı
// Sürtünme katsayıları
const float FRICTION_RECTANGLE1 = 0.1f; // ilk dikdörtgenin sürtünme katsayısı
const float FRICTION_RECTANGLE2 = 0.2f; // ikinci dikdörtgenin sürtünme katsayısı
int main()
{
// Pencereyi oluştur
sf::RenderWindow window(sf::VideoMode(WINDOW_WIDTH, WINDOW_HEIGHT), "Dikdörtgen Çarpışması");
// Mavi gökyüzü (dikey olarak tam pencere yüksekliği)
sf::RectangleShape sky(sf::Vector2f(WINDOW_WIDTH, WINDOW_HEIGHT));
sky.setFillColor(sf::Color(135, 206, 250)); // Açık mavi gökyüzü rengi
// Yeşil zemin
sf::RectangleShape floor(sf::Vector2f(WINDOW_WIDTH, WINDOW_HEIGHT - FLOOR_Y));
floor.setFillColor(sf::Color::Green);
floor.setPosition(0, FLOOR_Y); // Zemin seviyesini ayarla
// Mavi dikdörtgenler oluştur
sf::RectangleShape rectangle1(sf::Vector2f(50.0f, 50.0f));
rectangle1.setFillColor(sf::Color::Blue);
rectangle1.setPosition(100, FLOOR_Y); // Başlangıç konumu
sf::RectangleShape rectangle2(sf::Vector2f(50.0f, 50.0f));
rectangle2.setFillColor(sf::Color::Red);
rectangle2.setPosition(500, FLOOR_Y); // Başlangıç konumu
// Hız değişkenleri
float xVelocity1 = 400.0f; // ilk dikdörtgenin yatay hızı
float xVelocity2 = -150.0f; // ikinci dikdörtgenin yatay hızı
sf::Clock clock; // Zamanlayıcı oluştur
while (window.isOpen()) // Pencere açık olduğu sürece
{
sf::Event event;
while (window.pollEvent(event)) // Olayları kontrol et
{
if (event.type == sf::Event::Closed) // Pencere kapatıldıysa
window.close(); // Pencereyi kapat
}
float dt = clock.restart().asSeconds(); // Delta zamanını hesapla
// Sürtünmeyi uygula (dikey hareket için değil, sadece yatay hareket için)
if (rectangle1.getPosition().y == FLOOR_Y) {
xVelocity1 -= FRICTION_RECTANGLE1 * GRAVITY * dt * (xVelocity1 < 0 ? -1 : 1);
}
if (rectangle2.getPosition().y == FLOOR_Y) {
xVelocity2 -= FRICTION_RECTANGLE2 * GRAVITY * dt * (xVelocity2 < 0 ? -1 : 1);
}
// iki dikdörtgenin çarpışma kontrolü
if (rectangle1.getGlobalBounds().intersects(rectangle2.getGlobalBounds())) {
// Çarpışma sonrası momentum hesaplama
float totalWeight = RECTANGLE1_WEIGHT + RECTANGLE2_WEIGHT;
float newVelocity1 = ((RECTANGLE1_WEIGHT - RECTANGLE2_WEIGHT) / totalWeight) * xVelocity1 +
((2 * RECTANGLE2_WEIGHT) / totalWeight) * xVelocity2;
float newVelocity2 = ((2 * RECTANGLE1_WEIGHT) / totalWeight) * xVelocity1 +
((RECTANGLE2_WEIGHT - RECTANGLE1_WEIGHT) / totalWeight) * xVelocity2;
// Hızları güncelle
xVelocity1 = newVelocity1;
xVelocity2 = newVelocity2;
// Çarpışma sonrası konum düzeltme
if (xVelocity1 > 0) {
rectangle1.setPosition(rectangle2.getPosition().x - rectangle1.getSize().x, FLOOR_Y);
} else {
rectangle2.setPosition(rectangle1.getPosition().x + rectangle1.getSize().x, FLOOR_Y);
}
}
// Dikdörtgenlerin konumunu güncelle
rectangle1.move(xVelocity1 * dt, 0); // ilk dikdörtgeni yatay olarak hareket ettir
rectangle2.move(xVelocity2 * dt, 0); // ikinci dikdörtgeni yatay olarak hareket ettir
// Pencereyi temizle ve zemin ile gökyüzünü çiz
window.clear();
window.draw(sky); // Gökyüzünü çiz
window.draw(floor); // Zemini çiz
window.draw(rectangle1); // ilk dikdörtgeni çiz
window.draw(rectangle2); // ikinci dikdörtgeni çiz
window.display(); // Pencereyi güncelle
}
return 0; // Program başarıyla tamamlandı
}
Gündemdeki Haberler
Güncel Önemli Başlıklar