当前位置: 首页 > article >正文

c++小球反弹可视化

要实现小球反弹的可视化,您可以使用C++中的图形库,如SFML或SDL,来绘制小球并模拟其反弹的过程。以下是使用SFML库实现小球反弹可视化的示例代码:

#include <SFML/Graphics.hpp>
#include <iostream>
using namespace std;

int main() {
    double windowHeight = 600; // 窗口高度
    double windowWidth = 800; // 窗口宽度
    double initialHeight; // 初始高度
    int numBounces; // 反弹次数

    cout << "请输入小球的初始高度(米):";
    cin >> initialHeight;
    cout << "请输入小球的反弹次数:";
    cin >> numBounces;

    double totalDistance = initialHeight;  // 总距离
    double distance = initialHeight;  // 当前弹跳的距离

    sf::RenderWindow window(sf::VideoMode(windowWidth, windowHeight), "小球反弹可视化");

    sf::CircleShape ball(20); // 创建小球形状
    ball.setFillColor(sf::Color::Red); // 设置小球颜色
    ball.setPosition(windowWidth / 2, windowHeight - initialHeight); // 设置小球初始位置

    while (window.isOpen()) {
        sf::Event event;
        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();

        // 绘制小球
        window.draw(ball);

        // 更新小球位置
        distance /= 2;
        totalDistance += distance * 2;
        ball.move(0, -distance);

        // 判断小球是否触底反弹
        if (ball.getPosition().y + 2 * ball.getRadius() >= windowHeight) {
            distance *= -1; // 反弹
            numBounces--; // 反弹次数减少

            // 当所有反弹次数完成后,结束循环
            if (numBounces <= 0) {
                window.close();
                break;
            }
        }

        window.display();
    }

    cout << "小球在" << numBounces << "次反弹后的总共移动距离为:" << totalDistance << " 米" << endl;

    return 0;
}


http://www.kler.cn/a/413416.html

相关文章:

  • Python语法基础(三)
  • 带有悬浮窗功能的Android应用
  • Oracle JDK(通常简称为 JDK)和 OpenJDK区别
  • 【大数据学习 | Spark-SQL】Spark-SQL编程
  • 【RISC-V CPU Debug 专栏 1 -- RISC-V debug 规范】
  • 民锋视角:数据分析如何助力金融决策
  • Layui弹窗之图表绘制
  • 安全设备-日志审计-数据管理
  • 如何利用python爬虫获得店铺的所有商品
  • 使用client-go在命令空间test里面对pod进行操作
  • 云计算的计算包括哪些内容
  • JVM 性能调优 -- CMS 垃圾回收器 GC 日志分析【Full GC】
  • tongweb安全整改(by cz)
  • windows C#-使用反射访问特性
  • (笔记)简单了解ZYNQ
  • 【dvwa靶场:File Upload系列】File Upload低-中-高级别,通关啦
  • 判断电脑硬盘损坏的方法
  • react16为啥要更改生命周期
  • 【智能制造-46】人机工程(工厂自动化)
  • leetcode:129. 求根节点到叶节点数字之和
  • 视图查询中投影裁剪规则的原理和解析 | OceanBase 查询优化
  • 戴尔电脑安装centos7系统遇到的问题
  • c++趣味编程玩转物联网:基于树莓派Pico控制有源蜂鸣器
  • Linux之VMware安装以及centos7安装详细教程--图解
  • 七牛云AIGC内容安全方案助力企业合规创新
  • 【软件国产化】| Windows和Linux下文件名后缀是否区分大小写