- 博客(255)
- 收藏
- 关注
原创 【TeamFlow】4.2 Yew库详细介绍
Yew 是一个用于构建高效、交互式前端 Web 应用程序的现代 Rust 框架,它借鉴了 React 和 Elm 等框架的设计理念,同时充分利用 Rust 的语言特性。
2025-04-21 20:53:12
319
原创 【TeamFlow】4.1 Git使用指南
通过以上步骤,你已在 Windows 系统上完成 Git 的配置和基础使用。如需更复杂的工作流(如分支管理、标签发布),可进一步学习 git branch 和 git tag 命令。成功后显示:Initialized empty Git repository in E:/path/to/your/project/.git/选择 Use Git from Git Bash only(推荐)打开 Git Bash(推荐)或 CMD/PowerShell。频繁提交:小步提交,保持提交记录的原子性。
2025-04-21 20:37:43
614
原创 【TeamFlow】4 团队管理系统
这是一个基于Rust和Yew框架构建的专业团队与用户管理Web应用,采用现代WebAssembly技术实现高效性能。系统提供完整的团队层级结构管理、用户管理以及团队-用户多对多关系管理功能,具有清晰的数据模型和响应式用户界面。└── src/├── lib.rs└── utils/├── mod.rs更换存储后端:修改src/services/storage.rs实现新的存储适配器:配置API端点:# .env文件配置。
2025-04-20 21:10:17
729
原创 【TeamFlow】3 Rust 与 WebAssembly (Wasm) 深度应用指南
WebAssembly 是一种低级的类汇编语言,能在现代浏览器中高效执行。Rust 因其无 GC、内存安全和卓越性能,成为编译到 Wasm 的理想语言。
2025-04-20 15:09:45
623
原创 【TeamFlow】 2 TeamFlow 代码结构
模块解耦:可通过Cargo feature flag按需编译组件。扩展便捷:插件式架构支持工业协议扩展(如OPC UA)安全边界:关键操作隔离在独立pallet中。分层清晰:符合领域驱动设计(DDD)原则。提交关键版本(commit)发送CRDT操作(op1)3.2 凭证管理合约。4.2 工业合规服务。
2025-04-18 13:42:20
1001
原创 【TeamFlow】 1 TeamFlow 去中心化生产协同系统架构
pulldown-cmark + syntect(带工业文档语法扩展)opencascade-rs(STEP文件处理)全流程符合IATF 16949质量体系要求。automerge-rs(CRDT实现)parry3d(工业级碰撞检测)GB级STEP文件秒级差异同步。wgpu(GPU加速渲染)lyon(2D路径处理)200+节点并发协同设计。2.2 CAD协同设计。2.3 规范验证模块。
2025-04-18 13:21:03
683
原创 【euclid】10.7 2D变换模块(transform2d.rs)与其它类型的转换
这段代码是 Rust 语言中为 Transform2D 类型实现的一系列方法,主要用于处理二维变换矩阵。下面我会逐步解释这些方法的作用:结构体和方法概述Transform2D<T, Src, Dst> 是一个表示二维变换的泛型结构体,其中:T 是矩阵元素的类型,需要实现 Copy traitSrc 和 Dst 是表示源和目标坐标系的类型参数。
2025-04-17 19:13:49
255
原创 【euclid】10.6 2D变换模块(transform2d.rs)构造函数 new、approx_eq、approx_eq_eps
Transform2D 是一个泛型结构体,有三个泛型参数:T:表示变换矩阵中元素的类型(通常是浮点数类型,如 f32 或 f64)。Src 和 Dst:表示变换的源坐标系和目标坐标系,用于类型安全地处理不同坐标系之间的转换。构造函数 newm11, m12,m21, m22,m31, m32,这是一个构造函数,用于创建一个 Transform2D 实例。m31 和 m32 是平移分量(tx 和 ty)。
2025-04-17 19:00:52
323
原创 【euclid】10.5 2D变换模块(transform2d.rs)Copy、Clone、Eq 和 PartialEq Hash trait
这段代码为 Transform2D 结构体实现了基本的类型 trait:Copy/Clone:允许值被复制/克隆PartialEq/Eq:允许值被比较相等性所有这些实现都依赖于类型参数 T 是否实现了相应的 trait(Copy、Clone、PartialEq 或 Eq)。Src 和 Dst 是标记类型参数,不影响这些 trait 的行为。这种模式在 Rust 中很常见,通过为泛型类型有条件地实现 trait,可以确保类型只在内部类型满足特定约束时才有某些功能。
2025-04-16 18:50:27
322
原创 【euclid】10.4 2D变换模块(transform2d.rs)Pod trait
这段代码为 Transform2D 类型启用了 bytemuck 的 Pod 支持,允许它在启用 bytemuck feature 时安全地进行底层字节操作,前提是其泛型参数 T 也满足 Pod,且 Src/Dst 不引入非静态生命周期。
2025-04-16 18:38:39
804
原创 【euclid】10.3 2D变换模块(transform2d.rs)bytemuck trait
这段代码是一个 Rust 的 unsafe trait 实现,用于标记 Transform2D 类型在特定条件下可以安全地被视为由全零字节组成的有效实例。让我们详细解释每个部分:这是一个条件编译属性,表示只有当 bytemuck feature 被启用时,下面的代码才会被编译。bytemuck 是一个 Rust crate,提供了一些 trait 和工具,用于安全地在类型和原始字节之间进行转换。
2025-04-15 19:06:54
947
原创 【euclid】10.2 2D变换模块(transform2d.rs)Arbitrary trait
这段代码使得 Transform2D 类型能够:在启用 arbitrary feature 时从其元素类型 T 也是 Arbitrary 的前提下随机生成一个 2D 变换矩阵用于基于属性的测试(property-based testing)这种实现特别适用于快速检查代码在不同输入下的行为是否符合预期,是 Rust 生态中常见的测试实践。
2025-04-15 18:05:14
239
原创 【euclid】10.1 2D变换模块(transform2d.rs)结构体定义核心解读及个人代码参照优化
/ 矩阵元素(列主序)pub m11: T, pub m12: T, // 第一列:线性变换部分pub m21: T, pub m22: T, // 第二列:线性变换部分pub m31: T, pub m32: T, // 第三列:平移分量// 类型标记(零大小类型)
2025-04-14 13:20:14
1378
原创 【Raqote】 1.3.1 着色器SolidShader结构体(blitter.rs)
定义了一个公开的结构体 SolidShader包含一个公开字段 color,类型为 u32(无符号32位整数)这个color字段通常表示ARGB格式的颜色值(Alpha, Red, Green, Blue各占8位)
2025-04-14 00:15:00
352
原创 【Raqote】 1.2.2 路径填充 MaskBlitter结构体(blitter.rs)
MaskBlitter 结构是一个简化的光栅化器,用于处理不透明图形的光栅化,与之前看到的 MaskSuperBlitter 不同,它不支持抗锯齿处理。
2025-04-13 04:00:00
453
原创 【Raqote】 1.2.1 路径填充 MaskSuperBlitter结构体(blitter.rs)
/ 采样精度位数(默认2,表示4x子像素)// 缩放因子(4)// 子像素掩码(3)// 同MASK。
2025-04-13 02:00:00
192
原创 【远程工具】1.2 公历日期处理库完整实现与解析(datetime库lib.rs)
该库通过创新的月份重组算法和周期折叠技术,实现了高效准确的公历日期计算,可处理从公元前到公元后的超大时间跨度的日期运算。400年周期:每400年恰好有146097天(365*400 + 100 - 4 + 1)周期折叠:利用400年周期将大数计算转为有限范围。预计算表:使用M_DAYS数组存储每月起始天数。惰性计算:直到需要时才进行完整日期解析。位运算优化:所有除法采用整数运算。闰年2月有29天,全年366天。世纪年份:必须能被400整除。4/6/9/11月:30天。普通年份:能被4整除。
2025-04-12 05:53:33
409
原创 【远程工具】1.1 时间处理设计与实现(datetime库lib.rs)
该实现提供了精确、类型安全的时间处理基础,可根据具体需求进行扩展,适合需要可靠时间计算的各类应用场景。支持大时间跨度(±9,223,372,036,854,775,807秒≈±2920亿年)PartialEq/Ord:允许比较运算。单位转换:所有方法保持秒为基本单位。溢出处理:依赖i64的自动溢出检查。日程管理:天数/小时级别的计划安排。运算限制:仅允许有意义的时间运算。科学计算:需要整数精度的时间运算。全整数运算:避免浮点数精度问题。计时系统:精确到秒的计时器。游戏开发:游戏时间系统。
2025-04-12 00:15:00
416
原创 【Raqote】 1.1.5 路径填充 ShaderBlendBlitter结构体(blitter.rs)
pub x: i32, // 目标区域的起始x坐标pub y: i32, // 目标区域的起始y坐标pub shader: &'a dyn Shader, // 着色器引用pub tmp: Vec<u32>, // 临时像素缓冲区pub dest: &'a mut [u32], // 目标像素缓冲区pub dest_stride: i32, // 目标缓冲区行跨度pub blend_fn: fn(&[u32], &mut [u32]), // 纯混合函数(无mask参数)
2025-04-11 01:30:00
403
原创 【Raqote】 1.1.4 路径填充ShaderBlendMaskBlitter结构体(blitter.rs)
pub x: i32, // 目标区域的起始x坐标pub y: i32, // 目标区域的起始y坐标pub shader: &'a dyn Shader, // 着色器引用,用于生成像素颜色pub tmp: Vec<u32>, // 临时缓冲区,存储着色器生成的像素pub dest: &'a mut [u32], // 目标像素缓冲区pub dest_stride: i32, // 目标缓冲区的行跨度(每行的像素数)
2025-04-11 00:30:00
191
原创 【Raqote】 1.1.3 路径填充ShaderClipBlendMaskBlitter结构体(blitter.rs)
pub x: i32, // 目标区域的起始 x 坐标pub y: i32, // 目标区域的起始 y 坐标pub shader: &'a dyn Shader, // 着色器,用于生成像素颜色pub tmp: Vec<u32>, // 临时缓冲区,存储着色器生成的像素pub dest: &'a mut [u32], // 目标像素缓冲区(帧缓冲区)pub dest_stride: i32, // 目标缓冲区的行跨度(每行的像素数)
2025-04-10 19:56:08
322
原创 【Raqote】 1.1.2 路径填充ShaderClipMaskBlitter结构体(blitter.rs)
pub x: i32, // 目标区域的起始 x 坐标pub y: i32, // 目标区域的起始 y 坐标pub shader: &'a dyn Shader, // 着色器引用,用于生成像素颜色pub tmp: Vec<u32>, // 临时缓冲区,存储着色器生成的像素pub dest: &'a mut [u32], // 目标像素缓冲区(通常是帧缓冲区)pub dest_stride: i32, // 目标缓冲区的行跨度(每行的像素数)
2025-04-10 18:19:27
454
原创 【Raqote】 1.1.1 路径填充ShaderMaskBlitter 结构体(blitter.rs)
pub x: i32, // 目标区域的起始x坐标pub y: i32, // 目标区域的起始y坐标pub shader: &'a dyn Shader, // 着色器引用,用于生成像素颜色pub tmp: Vec<u32>, // 临时缓冲区,存储着色器生成的像素pub dest: &'a mut [u32], // 目标像素缓冲区pub dest_stride: i32, // 目标缓冲区的行跨度(每行的像素数)
2025-04-10 17:33:56
292
原创 【远程工具】0 std::process::Command 介绍
std::process::Command 是 Rust 标准库中用于创建和配置子进程的主要类型。它允许你启动新的进程、设置其参数和环境变量、重定向输入/输出等。
2025-04-09 16:31:44
690
原创 【学Rust写CAD】39 over_in_in 函数(alpha256补充方法)
实现了公式:result = src * (self * clip) + dst * (256 - (self * clip * src_alpha))over_in_in 是 over_in 函数的扩展版本,增加了额外的裁剪 alpha 值 (clip) 参数,用于更精细地控制合成操作。这个函数特别适合需要多层 alpha 控制的复杂合成场景,如带遮罩的图形渲染或 UI 元素的渐进显示效果。考虑了源图像的 alpha 通道 (src.alpha_t())clip:额外的裁剪 alpha 值。
2025-04-09 00:15:00
601
原创 【学Rust写CAD】38 over_in 函数(alpha256补充方法)
这个函数实现了带alpha混合的"over"合成操作,即源图像(src)在目标图像(dst)上的合成,使用了一种优化的近似计算方法。基本遵循标准alpha合成公式:result = src * alpha + dst * (1 - src_alpha)这个函数是图形合成中的核心操作,其优化对渲染性能有重要影响,特别是在需要大量混合操作的场景下。使用除以256代替精确的除以255(因为除以256可以通过位运算快速实现)使用self作为额外的alpha因子来控制源的整体不透明度。
2025-04-08 10:25:44
424
原创 【学Rust写CAD】37 premultiply 函数(argb.rs补充方法)
div255(x) 是一个快速除以255的优化函数,因为 (x * a) / 255 是预乘的标准公式。这种预乘后的颜色格式称为"premultiplied alpha",广泛应用于图形渲染和图像处理中。这个函数实现了颜色预乘(premultiply)操作,主要用于图像处理中的alpha合成。当alpha=255时,预乘不会改变颜色值,所以直接返回原值可以节省计算。将ARGB颜色值的RGB通道乘以alpha通道值(即预乘alpha)如果alpha已经是255(完全不透明),则直接返回原值。
2025-04-08 09:53:26
427
原创 【学Rust写CAD】36 颜色插值函数(alpha256.rs补充方法)
alpha_lerp 是一个高效的透明度混合函数,结合了 alpha_mul_256 和 lerp,适用于图形渲染、颜色混合等场景。它通过整数运算避免了浮点计算,同时保持较高的精度。
2025-04-07 16:00:47
906
原创 【学Rust写CAD】35 alpha_mul_256(alpha256.rs补充方法)
这个函数用高效的整数运算(乘法和位移)近似计算了 (value * alpha256) / 255,避免了昂贵的除法操作,适合性能敏感的图形计算场景。虽然结果可能有微小误差,但在大多数情况下可以接受。
2025-04-07 15:40:40
688
原创 【学Rust写CAD】34 精确 Alpha 混合函数(argb.rs补充方法)
这段代码实现了一个精确的 Alpha 混合(“over” 操作)函数,使用除以 255 的精确计算,并处理了超亮像素的饱和问题。使用 (x * a + 0x80) >> 8 近似 (x * a) / 255(带四舍五入)精确除法:使用 +0x80 技巧实现四舍五入的除以 255(而不是近似除以 256)0x80_00_80 是实现四舍五入除以255的技巧(相当于加0.5后取整)饱和处理:确保混合结果不会超过最大颜色值(255)饱和处理确保任何超过255的值会被截断为255。处理方式与红蓝通道相同。
2025-04-06 22:12:25
340
原创 【学Rust写CAD】33 近似 Alpha 混合函数(argb.rs补充方法)
这段代码实现了一个近似 Alpha 混合(“over” 操作)的函数,用于将一个半透明的颜色(self)覆盖在目标颜色(dst)之上。rb = (dst.rb() * a) >> 8:对红蓝通道分量进行乘法并右移(近似除以 256)ag = dst.ag() * a:对 Alpha 和绿通道分量进行乘法(注意这里没有右移)使用除以 256 的近似方法(通过右移 8 位实现)而不是更精确的除以 255。dst:目标颜色(带 Alpha 通道的 ARGB 颜色)最后将源颜色与处理后的目标颜色组合起来。
2025-04-06 21:52:40
306
原创 【学Rust写CAD】32 div255函数(div255.rs)
这个函数通过移位和加法高效地近似计算 a / 255 并四舍五入,避免了昂贵的除法运算,是一种经典的位操作优化方法。
2025-04-05 21:59:59
332
原创 【学Rust写CAD】31 muldiv255函数(muldiv255.rs,已经取消)
这个函数巧妙地利用移位和加法来近似计算 (a * b) / 255 并四舍五入,避免了昂贵的除法运算,是一种高效的位操作优化方法。
2025-04-05 21:48:12
595
原创 【学Rust写CAD】30 Argb结构乘Alpha256(Argb.rs 乘法重载)
例如,x & mask 得到 0x00RR00BB,(x >> 8) & mask 得到 0x00AA00GG。src_ag &!mask:保留 A 和 G 通道的高 8 位(0xAA00GG00)。x >> 8:右移 8 位,使 A 和 G 通道对齐到低位(0x00AA00GG)。src_rb & mask:保留 R 和 B 通道(0x00RR00BB)。用于提取 红色(R) 和 蓝色(B) 通道(0x00RR00BB 格式)。x & mask:提取 R 和 B 分量(0x00RR00BB)。
2025-04-04 20:33:48
458
原创 【学Rust写CAD】29 Alpha256结构体(alpha256.rs)
右移 8 位(>> 8)相当于除以 256,因此最终结果为 (prod * 257) / 65536 ≈ prod / 254.98(接近 prod / 255)。误差分析:对于 prod = 255 * 256,真实值为 256,而计算结果为 (65280 + 255) >> 8 = 255(误差 1/256)。prod + (prod >> 8) 近似于 prod * (1 + 1/256),即 prod * 257/256。self.0:范围 [1, 256] 的 alpha 值(由构造函数保证)。
2025-04-04 20:17:39
1247
原创 【学Rust写CAD】28 带 Alpha 通道的双线性插值函数(bilinear_interpolation_alpha.rs)
这个函数是前一个双线性插值函数的扩展版本,增加了对 Alpha 通道(透明度)的支持。这个函数适用于需要透明度混合的图像处理场景,如半透明图层叠加、渐变效果等。通过额外的 alpha 参数,可以灵活控制插值结果的透明度。alpha: 一个额外的透明度参数(Alpha256 类型),范围应该是 0-256,用于控制最终结果的透明度。Alpha 值范围是 0-256(而不是传统的 0-255),这可能是为了优化计算效率。仍然使用 wrapping 运算防止溢出。保持了高效的颜色通道分离处理方式。
2025-04-03 06:34:59
668
原创 【学Rust写CAD】27 双线性插值函数(bilinear_interpolation.rs)
这个函数实现了双线性插值算法,用于在四个已知像素点(tl, tr, bl, br)之间插值计算一个新的像素值。将输入的distx和disty从BILINEAR_INTERPOLATION_BITS精度调整到4位精度(0-15)。hi: 处理绿色(低8位)和alpha(高8位)通道。br: 右下(bottom-right)像素值。lo: 处理蓝色(低8位)和红色(高8位)通道。bl: 左下(bottom-left)像素值。tr: 右上(top-right)像素值。tl: 左上(top-left)像素值。
2025-04-03 06:23:46
627
原创 【学Rust写CAD】26 图形像素获取(pixel_fetch.rs)
用途: 安全地获取图像像素,避免因越界访问导致 panic 或内存不安全。策略: 越界时返回最近的边界像素值(类似“边缘填充”效果)。适用场景: 图像处理中需要处理边界条件的操作(如卷积滤波、缩放等)。如果需要其他边界处理方式(如镜像、重复等),可以定义新的结构体并实现 PixelFetch trait。
2025-04-02 21:06:55
572
原创 【学Rust写CAD】25 变量类(variable.rs)
这段代码的主要目的是:定义一个通用的数值包装类型 Variable为包装类型实现基本算术运算支持 Fixed 类型与浮点数的混合运算这种设计常用于需要统一处理多种数值类型的场景,比如元素类型为泛型的矩阵计算等数学工具时。
2025-04-02 13:06:53
526
原创 【学Rust写CAD】24 扫描渐变(sweep_gradient.rs)
这段代码实现了扫描渐变效果,它通过计算每个像素相对于中心点的角度来确定其在渐变中的位置,然后从预计算的颜色查找表中获取对应的颜色值。这段代码实现了一个扫描渐变(Sweep Gradient)的数据结构和计算方法。扫描渐变是一种颜色沿着圆周方向渐变的着色效果。渐变可以定义为一系列圆的族 ((1-t)·c₁ + t·(c₂), (1-t)·r₁ + t·r₂),排除那些半径小于0的圆。颜色查找表(LUT)有256个条目,对应256种可能的渐变位置。使用 spread 方法处理超出范围的 t 值。
2025-04-01 15:25:28
449
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人