图形视图【例】对数计算尺

news2024/11/20 8:26:56

文章目录

  • 对数计算尺 📏
  • 示例代码

对数计算尺 📏

在这里插入图片描述

对数可以有效地把乘法转换成加法运算,比如:
l n A ∗ B = l n A + l n B ln^{A*B} = ln^{A} + ln^{B} lnAB=lnA+lnB

对数计算尺就是利用对数性质把乘法换成加法的一种辅助工具.
在这里插入图片描述

图片来自《程序员的数学1》

小玩意很有意思

示例代码

用Qt的视图框架写个demo

#include <QtWidgets>

QList<qreal> tickVals;
int times = 200;
class SimpleItem : public QGraphicsItem
{
public:
    QRectF rect;
    int moveSteps = 0;
    QColor background;
    SimpleItem():QGraphicsItem(),rect(0,0,600,30){
        rect.setWidth(qLn(tickVals.size())*times+20);
        qDebug() << tickVals ;

    }

    QRectF boundingRect() const override
    {
        return rect;
    }

    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
               QWidget *widget) override
    {
        if(background.isValid())
            painter->fillRect(rect,background);
        painter->drawRect(rect);
        for (int i = 0; i < tickVals.size(); ++i) {
            auto tv = tickVals.at(i);
            painter->drawLine(QLineF(tv,0,tv,rect.height()));
            painter->drawText(tv,20,QString::number(i+1));
        }
    }

    // QGraphicsItem interface
protected:
    virtual void keyPressEvent(QKeyEvent *event) override {
        switch (event->key()) {
        case Qt::Key_Right:
            moveSteps++;
            moveSteps = moveSteps < tickVals.size() ? moveSteps : (tickVals.size()-1);
            setPos(QPointF(tickVals.at(moveSteps),pos().y()));
            break;
        case Qt::Key_Left:
            moveSteps--;
            moveSteps = moveSteps < 0 ? 0 : moveSteps;
            setPos(QPointF(tickVals.at(moveSteps),pos().y()));
            break;
        // case Qt::Key_Down:
        //     setPos(pos()+QPointF(0,rect.height()));
        //     break;
        // case Qt::Key_Up:
        //     setPos(pos()+QPointF(0,-rect.height()));
        //     break;
        default:
            break;
        }
    }
};



int main(int argc, char** argv)
{
    for (int i = 1; i <= 15; ++i) {
        qreal t2 = qLn(i);
        tickVals << (t2)*times;
    }
    QApplication a(argc,argv);

    QGraphicsView view;
    QGraphicsScene scene;
    view.setScene(&scene);

    auto si1 = new SimpleItem;
    auto si2 = new SimpleItem;

    si1->background = Qt::red;
    si2->background = Qt::green;

    si2->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable);
    si1->moveBy(0,si1->rect.height());

    scene.addItem(si1);
    scene.addItem(si2);

    si2->setSelected(true);
    si2->setFocus();

    view.scale(0.5,0.5);
    // si2->grabKeyboard();


    view.show();
    a.exec();
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1294277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C //习题10.4 有两个磁盘文件“A“和“B“,各存放一行字母,今要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件“C“中去。

C程序设计 &#xff08;第四版&#xff09; 谭浩强 习题10.4 习题10.4 有两个磁盘文件"A"和"B"&#xff0c;各存放一行字母&#xff0c;今要求把这两个文件中的信息合并&#xff08;按字母顺序排列&#xff09;&#xff0c;输出到一个新文件"C"…

智能优化算法应用:基于爬行动物算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于爬行动物算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于爬行动物算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.爬行动物算法4.实验参数设定5.算法结果6.参考…

【Jeecg Boot 3 - 保姆级】第1节 docker + redis + nginx + redis一键安装启动

一、前言 ▶ JEECG-BOOT 开源版难以吃透的原因 ▶ 为了针对上面痛点&#xff0c;笔者做了如下安排 ▶ 你能收获什么 二、效果(第一节效果) ▶ 启动后端 &#xff1e; 日志 &#xff1e; 接口文档 ▶ 启动前端 三、准备工作 四、实战 ▶ 1、服务器安装 Stag…

如何配置Modbus转Profinet网关与6台232 Modbus伺服通信

Modbus转Profinet网关连接6台232 Modbus伺服同时控制的解决方案不仅简化了设备连接&#xff0c;还减少了人力投入和维护成本。通过Modbus转Profinet网关&#xff0c;操作人员只需对Profinet网关进行设置和监控&#xff0c;即可实现对6台232 Modbus伺服的集中控制。 Modbus转Pro…

vuepress-----22、其他评论方案

vuepress 支持评论 本文讲述 vuepress 站点如何集成评论系统&#xff0c;选型是 valineleancloud, 支持匿名评论&#xff0c;缺点是数据没有存储在自己手里。市面上也有其他的方案, 如 gitalk,vssue 等, 但需要用户登录 github 才能发表评论, 但 github 经常无法连接,导致体验…

Microsoft 365 Copilot正式上线,如何稳定访问体验?

如果将微软对人工智能的投资看成一场豪赌&#xff0c;Microsoft Copilot无疑是现阶段最受瞩目的赌注。2023年9月正式发布的Microsoft Copilot是一种基于大型语言模型&#xff08;LLM&#xff09;和微软图形&#xff08;Microsoft Graph&#xff09;的数据和人工智能&#xff08…

[java学习日记]反射、动态代理

目录 一.反射的简单解释与获取字节码文件对象 二.获取构造方法对象Constructor 三.反射获取字节码文件中的成员变量Field 四.反射获取字节码文件中的成员方法&#xff1a;Method 五.反射练习&#xff1a;保存信息 六.反射练习&#xff1a;利用配置文件&#xff08;存储类名…

SAP 后继物料简介

后继物料(Discontinued Part)是SAP系统提供的一项用于物料继承与物料永久性替换的功能。在企业的日常生产业务中,经常会出于技术原因或成本原因进行大批量的物料替换或物料升级。比如说,企业可以用一种可靠性更高的组件替换先前使用的组件,或者出于节省成本的目的,使用一…

Linux 多进程并发设计-进程对核的亲缘设置

1设计结构 2 设计优点 1 充分利用多核系统的并发处理能力2 负载均衡3 职责明确&#xff0c;管理进程仅负责管理&#xff0c;工作进程仅负责处理业务逻辑 3 演示代码: //main.cpp #define _GNU_SOURCE #include<sys/types.h> #include<sys/wait.h> #include <…

设计模式基础——概述(1/2)

目录 一、设计模式的定义 二、设计模式的三大类别 三、设计模式的原则 四、主要设计模式目录 4.1 创建型模式&#xff08;Creational Patterns&#xff09; 4.2 结构型模式&#xff08;Structural Patterns&#xff09; 4.3 行为型模式&#xff08;Behavioral Patterns&…

alma centos8 dvd 安装jumpserver堡垒机

安装脚本 # 更新系统yum update yum install -y wget curl tar gettext iptables# 安装jumpserver堡垒机curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash安装过程 升级系统、安装需要的软件 安装jumpserve…

报错处理集

这个报错处理集的错误来源于编译arm平台的so文件产生的。但是后续可以补充成linux一个大的错误处理集。 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 第一次整理的时间是2023年12月8日10:05:59&#xff0c;以下错误来源于欧拉系统编译…

高端的露营装备网站搭建的作用是什么

近些年发展促进了露营热潮&#xff0c;周边游也多了起来&#xff0c;城市中高频工作带来的烦恼使得很多人想要放松&#xff0c;露营无疑是接触大自然很好的方式&#xff0c;而选择好的露营装备同样重要&#xff0c;还包括门店经营者&#xff0c;选择好的品牌合作也能带来很多生…

编程怎么学才能快速入门,分享一款中文编程工具快速学习编程思路,中文编程工具之分组框构件简介

一、前言&#xff1a; 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程 编程系统化教程链接 https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 给大家分享一款中文编程工具&#xff0c;零基础…

VSCODE 运行C程序缓慢解决方法之一

最近更换了mingw的版本&#xff0c;安装路径与之前的mingw路径不大一样。结果发现代码运行的时候很慢&#xff0c;弹出窗口后&#xff0c;迟迟没有打印任何东西&#xff0c;就像卡死了一样。试过网上说的一堆方法&#xff0c;没有什么用。 我按照以下流程进行检查: 1.检查min…

苹果始终安全?未必!

传统印象中&#xff0c;苹果似乎始终以安全可靠著称。 但事实上&#xff0c;苹果公司并不乏安全事件。只是你可能从未意识到这些问题&#xff0c;甚至其中一些可能将你置于危险之中。那么&#xff0c;苹果经历过哪些黑客攻击、数据泄露和安全漏洞事件呢&#xff1f; 一、苹果的…

中断、异常和系统调用(2-1,2-2,2-3)

2-1 课堂练习2.1&#xff1a;外部中断 本实训分析 Linux 0.11 对外部中断的响应和处理过程。在每条指令执行的末尾&#xff0c;如果没有关中断&#xff0c;CPU 会检查是否收到了外部中断信号&#xff0c;如果有信号&#xff0c;则 CPU 就切换到核心态去执行对应的中断处理程序…

C语言第十六集(前)

1.关于那个整形存储入char的 是先取好补码,再截断 例: 2.%u是以十进制的形式打印无符号整数 3.注意(背):存储的char类型变量的补码为10000000的直接解析为-128 4.signed char 类型的变量取值范围是-128~127 5.unsigned char 类型的变量取值范围是0~255 6.有符号类型的变量…

编程创意汇聚地,打造个性作品集 | 开源日报 No.97

spring-projects/spring-boot Stars: 70.4k License: Apache-2.0 Spring Boot 是一个用于简化 Spring 应用程序开发的框架&#xff0c;它通过提供默认配置和约定大于配置的方式来减少开发者的工作量。Spring Boot 可以快速地创建独立的、生产级别的基于 Spring 框架的应用程序…

【论文合集】在非欧空间中的图嵌入方法(Graph Embedding in Non-Euclidean Space)

文章目录 1. Hyperbolic Models1.1 Hyperbolic Graph Attention Network1.2 Poincar Embeddings for Learning Hierarchical Representations.1.3 Learning Continuous Hierarchies in the Lorentz Model of Hyperbolic Geometry1.4 Hyperbolic Graph Convolutional Neural Net…