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

【学Rust写CAD】11 2D CAD可用rust库

使用 Rust 开发 2D CAD 应用时,选择合适的库是关键。以下是一些适合用于 2D CAD 开发的 Rust 库和工具,涵盖图形渲染、几何计算、用户界面等方面:

  1. 图形渲染
  • lyon

    • 简介: lyon 是一个用于 2D 图形渲染的 Rust 库,支持路径填充、描边、抗锯齿等功能。

    • 特点: 基于 GPU 加速的 2D 渲染,适合实现 CAD 中的几何图形绘制。

    • 用途: 用于绘制 2D 几何图形(如线条、圆弧、多边形等)。

    • GitHub: https://github.com/nical/lyon

  • raqote

    • 简介: raqote 是一个纯 Rust 实现的 2D 图形库,支持路径绘制、渐变、图像合成等。

    • 特点: 轻量级,适合简单的 2D 绘图需求。

    • 用途: 用于实现 2D CAD 的基本绘图功能。

    • GitHub: https://github.com/jrmuizel/raqote

  • piet

    • 简介: piet 是一个跨平台的 2D 图形抽象层,支持多种后端(如 Direct2D、Core Graphics、Cairo 等)。

    • 特点: 提供统一的 API,适合跨平台 2D 渲染。

    • 用途: 用于实现跨平台的 2D CAD 绘图。

    • GitHub: https://github.com/linebender/piet

  1. 几何计算
  • geo

    • 简介: geo 是一个用于地理空间计算的 Rust 库,但也适用于 2D 几何计算(如点、线、多边形等)。

    • 特点: 支持几何运算(如相交、缓冲区、距离计算等)。

    • 用途: 用于处理 2D CAD 中的几何数据。

    • GitHub: https://github.com/georust/geo

  • nalgebra

    • 简介: nalgebra 是一个线性代数库,支持向量、矩阵等数学运算。

    • 特点: 适合实现 2D 变换(如平移、旋转、缩放等)。

    • 用途: 用于 2D CAD 中的几何变换和计算。

    • GitHub: https://github.com/dimforge/nalgebra

  • cgmath

    • 简介: cgmath 是一个计算机图形学数学库,支持 2D/3D 向量、矩阵等运算。

    • 特点: 轻量级,适合几何计算。

    • 用途: 用于 2D CAD 中的几何计算。

    • GitHub: https://github.com/rustgd/cgmath

  1. 用户界面
  • egui

    • 简介: egui 是一个即时模式 GUI 库,适合快速开发用户界面。

    • 特点: 简单易用,支持跨平台。

    • 用途: 用于实现 2D CAD 的用户界面。

    • GitHub: https://github.com/emilk/egui

  • iced

    • 简介: iced 是一个跨平台的 GUI 库,支持响应式 UI 设计。

    • 特点: 现代化设计,适合复杂的用户界面。

    • 用途: 用于实现 2D CAD 的用户界面。

    • GitHub: https://github.com/iced-rs/iced

  • druid

    • 简介: druid 是一个数据驱动的 GUI 库,适合构建复杂的桌面应用。

    • 特点: 强调数据绑定和响应式设计。

    • 用途: 用于实现 2D CAD 的用户界面。

    • GitHub: https://github.com/linebender/druid

  1. 文件格式支持
  • dxf

    • 简介: dxf 是一个用于读写 DXF 文件的 Rust 库。

    • 特点: 支持 AutoCAD DXF 文件格式。

    • 用途: 用于导入和导出 2D CAD 图纸。

    • GitHub: https://github.com/ixmilia/dxf-rs

  • svg

    • 简介: svg 是一个用于生成和解析 SVG 文件的 Rust 库。

    • 特点: 支持矢量图形导出。

    • 用途: 用于导出 2D CAD 图纸为 SVG 格式。

    • GitHub: https://github.com/Bodil/svg

  1. 其他工具
  • winit

    • 简介: winit 是一个跨平台的窗口管理库。

    • 特点: 提供窗口创建和事件处理功能。

    • 用途: 用于管理 2D CAD 应用的窗口和输入事件。

    • GitHub: https://github.com/rust-windowing/winit

  • wgpu

    • 简介: wgpu 是一个基于 WebGPU 的图形 API,支持跨平台 GPU 加速渲染。

    • 特点: 适合高性能 2D/3D 渲染。

    • 用途: 用于实现 GPU 加速的 2D CAD 渲染。

    • GitHub: https://github.com/gfx-rs/wgpu

推荐技术栈

图形渲染: lyon 或 piet + wgpu(如果需要 GPU 加速)。

几何计算: geo 或 nalgebra。

用户界面: egui 或 iced。

文件格式: dxf 和 svg。

这些库可以帮助你快速构建一个功能完善的 2D CAD 应用。如果你有具体的需求(如高性能渲染或复杂几何计算),可以根据需求进一步调整技术栈。

相关文章:

【学Rust写CAD】11 2D CAD可用rust库

使用 Rust 开发 2D CAD 应用时,选择合适的库是关键。以下是一些适合用于 2D CAD 开发的 Rust 库和工具,涵盖图形渲染、几何计算、用户界面等方面: 图形渲染 lyon 简介: lyon 是一个用于 2D 图形渲染的 Rust 库,支持路径填充、描边…...

C#中值类型与引用类型是直观使用示例

一、值类型与引用类型区分 正确理解值类型与引用类型,可以更好的帮助软件开发人员写出性能更好且正确稳定运行的程序: C#值类型与引用类型区别 区别值类型引用类型定义所有继承自【System.ValueType】类型的都是值类型(valueType继承自Syste…...

Spring Cloud之负载均衡之LoadBalance

目录 负载均衡 问题 步骤 现象 什么是负载均衡? 负载均衡的一些实现 服务端负载均衡 客户端负载均衡 使用Spring Cloud LoadBalance实现负载均衡 负载均衡策略 ​编辑 ​编辑LoadBalancer原理 服务部署 准备环境和数据 服务构建打包 启动服务 上传J…...

MySQL的数据文件

MySQL的数据文件 mysql的数据都存放在datadir所指的位置,其中包含了mysql中创建的数据库,数据库中包含了表结构(frm文件)、表数据(myd文件)、表索引(myi文件) show variables like %datadir%.frm 存放和表相关的数据信息,主要包括表结构的定…...

【RabbitMQ高级特性】消息确认机制、持久化、发送方确认、TTL和死信队列

🔥个人主页: 中草药 🔥专栏:【中间件】企业级中间件剖析 一、消息确认机制 消费者确认机制确保消息被正确处理后才从队列中删除。如果消费者处理失败(如业务异常或宕机),Broker 会重新投递消息…...

C# 正则表达式

C# 正则表达式 引言 正则表达式(Regular Expression,简称Regex)是一种用于处理字符串的强大工具,在编程领域有着广泛的应用。C# 作为一种流行的编程语言,也内置了对正则表达式的支持。本文将详细介绍 C# 中的正则表达…...

第十四届蓝桥杯省赛电子类单片机学习记录(客观题)

01.一个8位的DAC转换器,供电电压为3.3V,参考电压2.4V,其ILSB产生的输出电压增量是(D)V。 A. 0.0129 B. 0.0047 C. 0.0064 D. 0.0094 解析: ILSB(最低有效位)的电压增量计算公式…...

23种设计模式-桥接(Bridge)设计模式

桥接设计模式 🚩什么是桥接设计模式?🚩桥接设计模式的特点🚩桥接设计模式的结构🚩桥接设计模式的优缺点🚩桥接设计模式的Java实现🚩代码总结🚩总结 🚩什么是桥接设计模式…...

AI重塑视觉艺术:DeepSeek与蓝耘通义万相2.1的图生视频奇迹

云边有个稻草人-CSDN博客 近年来,深度学习、计算机视觉和生成模型在多个领域取得了突破性进展。其中,DeepSeek与蓝耘通义万相2.1图生视频的结合为图像生成与视频生成技术提供了新的发展方向。DeepSeek作为一个图像和视频生成的工具,能够利用深…...

mac怎么安装pycharm?

安装步骤:1、打开PyCharm官网,在官网首页点击“下载”按钮,选择“MacOS”版本进行下载;2、双击打开安装包,将PyCharm拖动到应用程序文件夹中;3、根据提示进行安装,在第一次运行PyCharm时&#x…...

HTML应用指南:利用POST请求获取城市肯德基门店位置信息

随着新零售业态的快速发展,门店位置信息的获取变得越来越重要。作为快餐服务行业的先锋,肯德基不仅在服务质量上持续领先,还积极构建广泛的门店网络,以支持其不断增长的用户群体。为了更好地理解和利用这些数据,本篇文…...

Java主流开发框架之请求响应常用注释

1.RestController 标记一个类为 REST 控制器,处理 HTTP 请求并直接返回数据(如 JSON/XML),而不是视图(如 HTML),一般是放在类的上边 RestController public class UserController {GetMapping…...

go的参数传递都是值传递,但切片需要注意

根据之前学习python和java的经验,每次学习一门新语言时,一定要搞清楚方法的参数传递是值传递,引用传递还是指针传递。 主要原因就是需要知道,某种类型的数据传递给某个方法后,方法里面对它的修改是否会影响到这个数据本…...

C++菜鸟教程 - 从入门到精通 第五节

一.各种排序 接下来,让我们开始学习排序! 1.选择排序 a.原理简介 选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思想是每次从未排序的部分中选择最小(或最大)的元素,将其放到已排序部分的末尾&#xff…...

同一个局域网的话 如何访问另一台电脑的ip

在局域网内访问另一台电脑,可以通过以下几种常见的方法来实现: ‌直接通过IP地址访问‌: 首先,确保两台电脑都连接在同一个局域网内。获取目标电脑的IP地址,这可以通过在目标电脑上打开命令提示符(Windows系…...

[学习笔记]攻防世界-bug

打开场景,提示我们需要登陆 我们先注册一下 注册成功 我们登陆进去 我们点击Manage他提示我们admin才能进入 我们刷新抓包一下试试 Cookie里面除了PHPSESSID,多出来了一个user,看上去是md5加密的,我们尝试解密 这里尝试了好几个网…...

[250324] Kafka 4.0.0 版本发布:告别 ZooKeeper,拥抱 KRaft!| Wine 10.4 发布!

目录 Kafka 4.0.0 版本发布:告别 ZooKeeper,拥抱 KRaft!Wine 10.4 发布! Kafka 4.0.0 版本发布:告别 ZooKeeper,拥抱 KRaft! 近日,Apache Kafka 4.0.0 正式发布!这是一个…...

【赵渝强老师】达梦数据库MPP集群的架构

为了支持海量数据存储和处理等方面的需求,为高端数据仓库提供解决方案,达梦数据库提供了大规模并行处理MPP架构,以极低的成本代价,提供高性能的并行计算。通过使用MPP可以解决以下问题: 需要较高的系统性能支持以支持…...

JWT 鉴权常见知识点及参考答案

JWT 鉴权常见知识点及参考答案 最近在 Go Web 项目当中使用到了 JWT 进行鉴权,因此通过这篇文章对 JWT 的原理及相关的知识点进行总结。 文章目录 JWT 鉴权常见知识点及参考答案JWT 签名算法的详细工作流程一. 签名的生成过程二. 签名的验证过程 1. 什么是 JWT&am…...

洛谷题单入门4-P5729 【深基5.例7】工艺品制作-python

输入格式 第一行三个正整数 w,x,h。 第二行一个正整数 q。 接下来 q 行,每行六个整数 输出格式 输出一个整数表示答案。 三维数组直接标记 class Solution:staticmethoddef oi_input():"""从标准输入读取数据"""w, x, h map(…...

【C语言】内存函数详解

个人主页 文章目录 🏠一、memcpy函数1.函数形式以及功能介绍2.函数的使用3.模拟实现 🚀二、memmove函数1.函数形式以及功能介绍2.函数的使用3.模拟实现 🎡三、memset函数1.函数形式以及功能介绍2.函数的使用 🎉四、memcmp1.函数形…...

使用Python开发自动驾驶技术:车道线检测模型

友友们好! 我是Echo_Wish,我的的新专栏《Python进阶》以及《Python!实战!》正式启动啦!这是专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会…...

HTTP代理的全面解读:什么是HTTP代理?HTTP代理的工作原理

在互联网大潮中,每一个请求和返回数据的背后,都离不开传输协议的支持,而HTTP协议无疑是最熟悉的网络通信基础之一。当我们谈到HTTP代理时,它不仅让浏览网络变得更高效,也为数据采集以及全球性远程任务提供了解决方案。…...

DeepSeek底层揭秘——deepEP

1. 什么是 deepEP? (1) 定义 deepEP (DeepSeek EndPoint) 是 DeepSeek 开源的一款高性能、低延迟的分布式通信库,专为大规模深度学习训练和推理场景设计。它旨在优化分布式计算环境中的通信效率,特别是在节点间数据交换、梯度同步、模型分发…...

内网渗透(CSMSF) 构建内网代理的全面指南:Cobalt Strike 与 Metasploit Framework 深度解析

目录 1. Cobalt Strike 在什么情况下会构建内网代理? 2. Cobalt Strike 构建内网代理的主要作用和目的是什么? 3. Cobalt Strike 如何构建内网代理?需要什么条件和参数? 条件 步骤 参数 4. Cobalt Strike 内网代理能获取什…...

【redis】哨兵:人工恢复主节点故障和哨兵自动恢复主节点故障

文章目录 基本概念人工恢复主节点故障操作流程 哨兵自动恢复主节点故障哨兵集 Redis 的主从复制模式下,⼀旦主节点由于故障不能提供服务,需要⼈⼯进⾏主从切换,同时⼤量的客⼾端需要被通知切换到新的主节点上,对于上了⼀定规模的应…...

【Go 】异常处理

1. Go 语言错误处理基础 Go 语言尽量避免使用异常,推荐使用 返回错误 让调用者处理。Go 语言标准库提供 error 接口:type error interface {Error() string }errors.New("错误信息") 创建错误对象。 package mainimport ("errors"…...

微软纳德拉最新一期访谈

萨提亚纳德拉: 微软的AGI计划与量子突破| 2025.2.20 【文章核心预览:】 1、纳德拉回应AI价格战:效率提升将重塑需求,但关键是能否带动GDP增长至10% 2、微软AI收入130亿美元,4年后目标1300亿,但提醒"…...

WebSocket接入SSL证书

目录 碎碎念解决方法创建 HTTPS WebSocket 服务器创建系统服务启动服务 碎碎念 在访问网站时,使用 HTTPS 非常重要。HTTPS 协议不仅可以确保数据传输的安全性,还可以防止中间人攻击和数据篡改等安全问题。任何没有 SSL 证书的内容都可能会被拒绝访问。因…...

蓝桥杯——嵌入式学习日记

因为lED和LCD共用PC8~PC15引脚,要通过锁存(LE)和(GPIOC->ODR)来避免LED和LCD引脚冲突 修改点: main.c中,GPIO初始化引脚后,LE(PD2引脚低电平锁存,退出透明模式&…...

第七课:Python基础排序算法与比较排序原理深度解析

比较排序算法是算法领域中的经典内容,其核心思想通过元素间的比较操作确定相对顺序。本文将深入探讨冒泡排序的优化策略、选择排序的变种实现、插入排序的典型应用场景,并通过统计比较次数直观展示算法效率差异。 一、冒泡排序的优化策略 传统冒泡排序存…...

项目流程中关键节点的测试类型

一、全流程测试框架图 #mermaid-svg-LmUdhLObstSpThwP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LmUdhLObstSpThwP .error-icon{fill:#552222;}#mermaid-svg-LmUdhLObstSpThwP .error-text{fill:#552222;strok…...

EasyRTC嵌入式音视频通信SDK:WebRTC技术下的硬件与软件协同演进,开启通信新时代

在当今数字化时代,智能设备的普及和人们对实时通信需求的不断增长,推动了嵌入式音视频通信技术的快速发。EasyRTC嵌入式音视频通信SDK凭借其独特的技术特点和应用优势,在嵌入式设备和多平台实时通信领域脱颖而出。 1、轻量级设计与高性能 Ea…...

机器视觉工程师如何看机器视觉展会,有些机器视觉兄弟参加机器视觉展会,真的是参加了?重在参与?

作为机器视觉工程师,参加机器视觉展会不仅是了解行业前沿技术的窗口,也是拓展专业网络、寻找解决方案的重要机会。以下是结合展会信息和工程师视角的综合建议: 一、聚焦技术趋势与创新应用 参与技术论坛与研讨会 展会同期的技术论坛是获取行业洞见的核心渠道。例如: 上海展…...

重温Ubuntu 24.04 LTS

用户调整 # 创建新用户 sudo adduser newusername # 设置新用户的密码 sudo passwd newusername # 将新用户添加到 sudo 组 sudo usermod -aG sudo newusername # 修改ssh访问权限 sudo nano /etc/ssh/sshd_config # 将新用户加入,此时root将无法访问 AllowUsers n…...

新版 eslintrc 文件弃用 .eslintignore已弃用 替代方案

1.进入eslint.config.mjs文件 2.import { defineConfig, globalIgnores } from "eslint/config"; 引入globalIgnores 3.配置 defineConfig([ ... globalIgnores([ "config/*", ".husky", ".local", "public/*", ".…...

优化 SQL 语句方向和提升性能技巧

优化 SQL 语句是提升 MySQL 性能的关键步骤之一。通过优化 SQL 语句,可以减少查询时间、降低服务器负载、提高系统吞吐量。以下是优化 SQL 语句的方法、策略和技巧: 一、优化 SQL 语句的方法 1. 使用 EXPLAIN 分析查询 作用:查看 SQL 语句的执行计划,了解查询是如何执行的…...

数据可视化革命!「图表狐」五大行业新范式:从科研论文到商业决策的AI进化论

图表狐 - AI图表生成工具,在线数据可视化 一、学术研究:突破传统制图范式 案例1 基因测序热图 用户输入: "绘制差异表达基因热图,行标签为GeneA/B/C,列包含正常组5例、癌症组7例,红色标记上调基因(f…...

Jenkins集成Trivy安全漏洞检查指南

要将Jenkins与Trivy集成以实现制品的安全漏洞检查,可以按照以下步骤操作: 安装Trivy 在Jenkins服务器或构建节点上安装Trivy # 使用包管理器(如Debian/Ubuntu) sudo apt-get install -y wget apt-transport-https gnupg lsb-rel…...

git使用钩子文件出现错误

git的钩子文件出现错误 问题打印&#xff1a;解决办法1.删除本地钩子文件2. 恢复commit-msg钩子3.重新提交工程 问题打印&#xff1a; 无法commit 1 个文件: .git/hooks/commit-msg: 行 1: 未预期的符号 < 附近有语法错误 .git/hooks/commit-msg: 行 1: Your browse does …...

SpringBoot 第二课(Ⅱ)配置嵌入式服务器

目录 一、封装类解读 二、注册Servlet三大组件&#xff08;Servlet、Filter、Listener&#xff09; 自定义这三个组件 WebConfig MyFilter MyListener HelloController hello1.html hello2.html 三、使用外置的Servlet容器 1.一定要确保打包方式是war包 2.将…...

Python学习笔记(6)

Python学习笔记&#xff08;6&#xff09; 第13节课 函数基础1.函数定义与调用2.函数的返回值3.局部变量与全局变量 第13节课 函数基础 对于任何一个知识点&#xff0c;必须讨论的三个问题&#xff1a; &#xff08;1&#xff09;它是啥 &#xff08;2&#xff09;为啥有它 …...

HarmonyOS Next应用架构设计与模块化开发详解

引言 在HarmonyOS Next开发中&#xff0c;合理的应用架构设计和模块化开发是构建高效、可维护应用的关键。本文将深入探讨HarmonyOS Next应用的架构设计思路&#xff0c;并通过实际代码示例展示如何实现模块化开发。 应用架构设计 HarmonyOS Next应用通常采用分层架构设计&…...

batman-adv 优化:基于信号强度(RSSI)选择链路

batman-adv 优化&#xff1a;基于信号强度&#xff08;RSSI&#xff09;选择链路 1. 背景介绍 batman-adv&#xff08;Better Approach To Mobile Ad-hoc Networking Advanced&#xff09; 是一种用于无线 Mesh 网络的路由协议。它主要基于 ETX&#xff08;Expected Transmis…...

计算机二级:函数基础题

函数基础题 第一题 rinput("请输入半径&#xff1a;") c3.1415926*r*2 print("{:.0f}".format(c))输出&#xff1a; Type Error第二题 a7 b2 print(a%2)输出 1第三题 ab4 def my_ab(ab,xy):abpow(ab,xy)print(ab,end"\n") my_ab(ab,2)prin…...

系统思考与心智模式

“问题不是出在我们做了多少&#xff0c;而是出在我们做了什么。” — 赫尔曼凯恩 “一分耕耘一分收获”&#xff0c;这似乎是我们脑海中根深蒂固的心智模式。今天&#xff0c;我在一家餐厅用餐&#xff0c;店员告诉我&#xff0c;打卡收藏可以获得一份小食。没过多久&#xf…...

高考志愿填报管理系统基于Spring Boot SSM

目录 摘要 ‌一、系统需求分析‌&#xff1a; 1.1用户主体分析 1.2 功能需求分析 1.3、非功能需求分析 二、‌技术实现‌&#xff1a; ‌三、结论‌&#xff1a; 摘要 该系统主要实现了&#xff1a;学生信息管理、院校信息查询、专业信息展示、志愿填报模拟、智能推荐管…...

[深度学习]图像分类项目-食物分类

图像分类项目-食物分类(监督学习和半监督学习) 文章目录 图像分类项目-食物分类(监督学习和半监督学习)项目介绍数据处理设定随机种子读取文件内容图像增广定义Dataset类 模型定义迁移学习 定义超参Adam和AdamW 训练过程半监督学习定义Dataset类模型定义定义超参训练过程 项目介…...

Qt在ARM中,如何使用drmModeObjectSetProperty 设置 Plane 的 zpos 值

在 Qt 中直接使用 drmModeObjectSetProperty 设置 Plane 的 zpos 值需要结合 Linux DRM/KMS API 和 Qt 的底层窗口系统&#xff08;如 eglfs 平台插件&#xff09;。以下是详细步骤和代码示例&#xff1a; 1. 原理说明 DRM/KMS 基础&#xff1a; Plane&#xff1a;负责图层合成…...

springboot milvus search向量相似度查询 踩坑使用经验

1.前提提要&#xff1a;java的pom 版本为&#xff1a;2.4.9 milvus 版本是&#xff1a;2.4.13-hotfix 2.先来工具类方法 /*** 向量搜索* param client* param query* return*/public SearchResp search(NonNull MilvusClientV2 client, NonNull VectorCondition query) {final …...