bugün
- kadir inanır ın buket saygı yı taciz etmesi13
- yazarların en sevdiği meyve7
- 9 temmuz 2026 fransa fas maçı21
- üstteki yazar hakkında fikrini söyle19
- anket türkiye de eyalet sistemine geçilsin mi12
- kiraz cicegi kolonyasi34
- yazarların en sevdiği sözler7
- iş sözleşmesinde 5 yıl hamile kalamaz maddesi11
- canım dilaram2
- neden kadın ayağına ilgi duyulduğu sorusu8
- mantra grubu6
- 10 temmuz 20265
- midye8
- 1000 liralık boxer giymek5
- kristin kreuk2
- sözlük yazarlarının tatlıları20
- fas11
- fransa8
- ilk kimin aklına geldiği merak edilen şeyler6
- kürdistan5
- fiat 131 vs peugeot 5043
- johnny sinsin araba vurdurması4
- corona sonrası dünya düzeni4
- uzun ilişki sürdürmenin sırları4
- söylemek istenilenler4
- sözlükteki teyzeler defolsun lütfen17
- sevgiliyle yapılabilecek en güzel aktivite6
- sevilen bilgisayar oyununu üç kelime ile anlatmak3
- seksting yapacak yazarlar veritabanı6
- ayakseverlik5
- 2026 dünya kupası24
- izlenilen ilk yabancı dizi10
- üniversiteli kızlara cinlerin musallat olması2
- sevgiliyle yemek yaparken sevişmeye başlamak6
- saraca finch house25
- menemen4
- 12 temmuz 2026 norveç ingiltere maçı13
- gram altın3
- futbol21
- kadın yazarların kavga etmesi11
- tabağında yemek bırakan erkek5
- kuran da namazın olmaması21
- velvet38
- bir ayet reddedince dinden çıkmak18
- netanyahu'nun f 35 paniği2
- uludağ sözlük kızlarının güzel olması7
- kırk yaşında ayağına yatan elli küsürlük yazar9
- oğlum donat şu masayı4
- düşün ki o bunu okuyor6
- 10 temmuz 2026 ispanya belçika maçı7
bu eğrinin çalışma mantığını özetleyen güzel bir program:
#include <SFML/Graphics.hpp> // SFML grafik kütüphanesini ekle
#include <SFML/Window.hpp> // SFML pencere yönetimi için gerekli kütüphane
#include <iostream> // Girdi/çıktı işlemleri için gerekli kütüphane
#include <cmath> // Matematiksel işlemler için gerekli kütüphane
#include <vector> // Dinamik diziler için gerekli kütüphane
const float radius = 5.0f; // Daire çapı, A ve B noktalarını temsil eden dairelerin yarıçapı
const float pixelToCmConversionFactor = 100.0f / 3640.0f; // Pikseli cm'ye çeviren faktör
const float g = 980.0f; // Yerçekimi ivmesi (cm/s^2), düşme hareketinin hesaplanmasında kullanılır
bool drawing = false; // Çizim durumu, kullanıcı çizim yapıyor mu kontrol eder
std::vector<sf::Vector2f> curvePoints; // Eğri noktalarını tutmak için dinamik bir dizi
// Mesafe hesaplama fonksiyonu
float calculateDistance(const sf::Vector2f& A, const sf::Vector2f& B) {
return std::sqrt(std::pow(B.x - A.x, 2) + std::pow(B.y - A.y, 2)); // A ve B arasındaki mesafeyi hesaplar
}
// Brachistochrone eğrisi için süre hesaplama
float calculateBrachistochroneTime(float length) {
return sqrt(2 * length / g); // Düşme süresini hesaplamak için kullanılan formül
}
int main() {
// Pencere oluştur
sf::RenderWindow window(sf::VideoMode(1920, 1080), "Distance Drawing"); // 1920x1080 boyutunda bir pencere oluştur
window.setFramerateLimit(60); // FPS sınırını 60'a ayarla
// A ve B noktaları
sf::Vector2f A(960, 540); // A noktası, pencerenin ortasında
sf::Vector2f B(960, 460); // B noktası, A noktasının biraz yukarısında
while (window.isOpen()) { // Pencere açık olduğu sürece döngü
sf::Event event; // Olay tanımlaması
while (window.pollEvent(event)) { // Olayları kontrol et
if (event.type == sf::Event::Closed) // Pencere kapandığında
window.close(); // Pencereyi kapat
// Mouse tuşuna basma olayı
if (event.type == sf::Event::MouseButtonPressed) {
if (event.mouseButton.button == sf::Mouse::Left) { // Sol fare tuşuna basıldığında
drawing = true; // Çizim modunu aç
curvePoints.clear(); // Çizimi sıfırla
}
}
// Mouse tuşunu bırakma olayı
if (event.type == sf::Event::MouseButtonReleased) {
if (event.mouseButton.button == sf::Mouse::Left) { // Sol fare tuşu bırakıldığında
drawing = false; // Çizim modunu kapat
// Eğrinin toplam uzunluğunu hesapla
float totalLength = 0.0f; // Toplam uzunluğu başlat
for (size_t i = 1; i < curvePoints.size(); ++i) { // Eğri noktaları arasında döngü
totalLength += calculateDistance(curvePoints[i - 1], curvePoints[i]); // Her iki nokta arasındaki mesafeyi topla
}
// Piksel cinsinden uzunluğu cm cinsine çevir
float totalLengthCm = totalLength * pixelToCmConversionFactor; // Pikseli cm'ye çevir
// Brachistochrone süresini hesapla
float timeToReachB = calculateBrachistochroneTime(totalLengthCm); // Süre hesapla
// Sonuçları terminale yazdır
std::cout << "Total Length of Curve: " << totalLengthCm << " cm" << std::endl; // Eğrinin toplam uzunluğunu yazdır
std::cout << "Time to reach B: " << timeToReachB << " seconds" << std::endl; // B noktasına ulaşma süresini yazdır
}
}
// Mouse hareketi
if (event.type == sf::Event::MouseMoved && drawing) { // Fare hareket ettiyse ve çizim modunda ise
sf::Vector2f currentPoint(static_cast<float>(event.mouseMove.x), // Mevcut fare konumunu al
static_cast<float>(event.mouseMove.y));
curvePoints.push_back(currentPoint); // Mevcut konumu eğri noktalarına ekle
}
}
// Ekranı temizle
window.clear(sf::Color::White); // Ekranı beyaz renkle temizle
// A ve B noktalarını çiz
sf::CircleShape circleA(radius); // A noktası için daire oluştur
circleA.setFillColor(sf::Color::Black); // Dairenin rengini siyah yap
circleA.setPosition(A.x - radius, A.y - radius); // Dairenin konumunu ayarla
window.draw(circleA); // Daireyi çiz
sf::CircleShape circleB(radius); // B noktası için daire oluştur
circleB.setFillColor(sf::Color::Black); // Dairenin rengini siyah yap
circleB.setPosition(B.x - radius, B.y - radius); // Dairenin konumunu ayarla
window.draw(circleB); // Daireyi çiz
// Eğriyi çiz
if (curvePoints.size() > 1) { // Eğri noktaları 2'den fazlaysa
sf::VertexArray line(sf::PrimitiveType::LineStrip, curvePoints.size()); // Eğriyi çizmek için vertex dizisi oluştur
for (size_t i = 0; i < curvePoints.size(); ++i) { // Eğri noktaları arasında döngü
line[i].position = curvePoints[i]; // Her noktanın konumunu ayarla
line[i].color = sf::Color::Black; // Rengi siyah yap
}
window.draw(line); // Eğriyi çiz
}
window.display(); // Çizimi güncelle
}
return 0; // Programı sona erdir
}
#include <SFML/Graphics.hpp> // SFML grafik kütüphanesini ekle
#include <SFML/Window.hpp> // SFML pencere yönetimi için gerekli kütüphane
#include <iostream> // Girdi/çıktı işlemleri için gerekli kütüphane
#include <cmath> // Matematiksel işlemler için gerekli kütüphane
#include <vector> // Dinamik diziler için gerekli kütüphane
const float radius = 5.0f; // Daire çapı, A ve B noktalarını temsil eden dairelerin yarıçapı
const float pixelToCmConversionFactor = 100.0f / 3640.0f; // Pikseli cm'ye çeviren faktör
const float g = 980.0f; // Yerçekimi ivmesi (cm/s^2), düşme hareketinin hesaplanmasında kullanılır
bool drawing = false; // Çizim durumu, kullanıcı çizim yapıyor mu kontrol eder
std::vector<sf::Vector2f> curvePoints; // Eğri noktalarını tutmak için dinamik bir dizi
// Mesafe hesaplama fonksiyonu
float calculateDistance(const sf::Vector2f& A, const sf::Vector2f& B) {
return std::sqrt(std::pow(B.x - A.x, 2) + std::pow(B.y - A.y, 2)); // A ve B arasındaki mesafeyi hesaplar
}
// Brachistochrone eğrisi için süre hesaplama
float calculateBrachistochroneTime(float length) {
return sqrt(2 * length / g); // Düşme süresini hesaplamak için kullanılan formül
}
int main() {
// Pencere oluştur
sf::RenderWindow window(sf::VideoMode(1920, 1080), "Distance Drawing"); // 1920x1080 boyutunda bir pencere oluştur
window.setFramerateLimit(60); // FPS sınırını 60'a ayarla
// A ve B noktaları
sf::Vector2f A(960, 540); // A noktası, pencerenin ortasında
sf::Vector2f B(960, 460); // B noktası, A noktasının biraz yukarısında
while (window.isOpen()) { // Pencere açık olduğu sürece döngü
sf::Event event; // Olay tanımlaması
while (window.pollEvent(event)) { // Olayları kontrol et
if (event.type == sf::Event::Closed) // Pencere kapandığında
window.close(); // Pencereyi kapat
// Mouse tuşuna basma olayı
if (event.type == sf::Event::MouseButtonPressed) {
if (event.mouseButton.button == sf::Mouse::Left) { // Sol fare tuşuna basıldığında
drawing = true; // Çizim modunu aç
curvePoints.clear(); // Çizimi sıfırla
}
}
// Mouse tuşunu bırakma olayı
if (event.type == sf::Event::MouseButtonReleased) {
if (event.mouseButton.button == sf::Mouse::Left) { // Sol fare tuşu bırakıldığında
drawing = false; // Çizim modunu kapat
// Eğrinin toplam uzunluğunu hesapla
float totalLength = 0.0f; // Toplam uzunluğu başlat
for (size_t i = 1; i < curvePoints.size(); ++i) { // Eğri noktaları arasında döngü
totalLength += calculateDistance(curvePoints[i - 1], curvePoints[i]); // Her iki nokta arasındaki mesafeyi topla
}
// Piksel cinsinden uzunluğu cm cinsine çevir
float totalLengthCm = totalLength * pixelToCmConversionFactor; // Pikseli cm'ye çevir
// Brachistochrone süresini hesapla
float timeToReachB = calculateBrachistochroneTime(totalLengthCm); // Süre hesapla
// Sonuçları terminale yazdır
std::cout << "Total Length of Curve: " << totalLengthCm << " cm" << std::endl; // Eğrinin toplam uzunluğunu yazdır
std::cout << "Time to reach B: " << timeToReachB << " seconds" << std::endl; // B noktasına ulaşma süresini yazdır
}
}
// Mouse hareketi
if (event.type == sf::Event::MouseMoved && drawing) { // Fare hareket ettiyse ve çizim modunda ise
sf::Vector2f currentPoint(static_cast<float>(event.mouseMove.x), // Mevcut fare konumunu al
static_cast<float>(event.mouseMove.y));
curvePoints.push_back(currentPoint); // Mevcut konumu eğri noktalarına ekle
}
}
// Ekranı temizle
window.clear(sf::Color::White); // Ekranı beyaz renkle temizle
// A ve B noktalarını çiz
sf::CircleShape circleA(radius); // A noktası için daire oluştur
circleA.setFillColor(sf::Color::Black); // Dairenin rengini siyah yap
circleA.setPosition(A.x - radius, A.y - radius); // Dairenin konumunu ayarla
window.draw(circleA); // Daireyi çiz
sf::CircleShape circleB(radius); // B noktası için daire oluştur
circleB.setFillColor(sf::Color::Black); // Dairenin rengini siyah yap
circleB.setPosition(B.x - radius, B.y - radius); // Dairenin konumunu ayarla
window.draw(circleB); // Daireyi çiz
// Eğriyi çiz
if (curvePoints.size() > 1) { // Eğri noktaları 2'den fazlaysa
sf::VertexArray line(sf::PrimitiveType::LineStrip, curvePoints.size()); // Eğriyi çizmek için vertex dizisi oluştur
for (size_t i = 0; i < curvePoints.size(); ++i) { // Eğri noktaları arasında döngü
line[i].position = curvePoints[i]; // Her noktanın konumunu ayarla
line[i].color = sf::Color::Black; // Rengi siyah yap
}
window.draw(line); // Eğriyi çiz
}
window.display(); // Çizimi güncelle
}
return 0; // Programı sona erdir
}
Gündemdeki Haberler