螺丝工厂vtk ThreadFactory(1)

news2024/12/23 15:08:20

螺丝工厂vtkThreadFactory (1)

缘起

几年前的探索在Python里应用Openscad实现3D建模之3D螺纹建模初探3

新的参考:

  • generating nice threads in openscad
  • vtkRotationalExtrusionFilter

辅助AI: coze

笔记📒:

openscad 代码分析

// 半径缩放函数,用于生成起始和结束段的锥度过度效果
function lilo_taper(x, N, tapered_fraction) = 
    // 计算最小值,确保缩放值在适当范围内,用于生成平滑过渡的Higbee 倒角效果 
    min(min(1, (1.0 / tapered_fraction) * (x / N)), (1 / tapered_fraction) * (1 - x / N));
// 模块定义: 生成一个具有 Higbee 倒角的螺旋螺纹,可以附着到一个圆柱表面
module straight_thread(section_profile, pitch = 4, turns = 3, r = 10, higbee_arc = 45, fn = 120)
{
    // 设置细分精度
    $fn = fn;
    // 计算步数:总圈数 * 每圈细分数
    steps = turns * $fn;

    // 生成螺旋造型的主逻辑
    thing = [ for (i = [0:steps])
        transform(
            // 每步的旋转角度,减90度使之始终与X方向对齐
            rotation([0, 0, 360 * i / $fn - 90]) *
            // 逐步上升,在半径r处具体位置,模型随i上升
            translation([0, r, pitch * i / $fn]) *
            // 将截面旋转90度使其竖直
            rotation([90, 0, 0]) *
            // 沿Z轴方向解旋转
            rotation([0, 90, 0]) *
            // 使用缩放以实现Higbee 倒角效应,初始化缩放是0.01~1之间
            scaling([0.01 + 0.99 * lilo_taper(i / turns, steps / turns, (higbee_arc / 360) / turns), 1, 1]),
            // 使用定义的截面轮廓
            section_profile
        )
    ];

    // 将转换后的点集皮肤成一个连续的形状
    skin(thing);
}

function lilo_taper 详细说明:

  • 输入参数:
    x: 当前点的标识(通常是步进值)。
    N: 总标识数量(通常是总步数)。
    tapered_fraction: 反映锥度部分的比例,即起始和结束段的锥度部分占整个长度的比例。
  • 内部表达式:
    min(min(1, (1.0 / tapered_fraction) * (x / N)), (1 / tapered_fraction) * (1 - x / N)):
    (1.0 / tapered_fraction) * (x / N):
    这里的 (x / N) 表示当前点在整个长度中的位置占比。
    将占比乘以 (1.0 / tapered_fraction),计算缩放比。
    (1 / tapered_fraction) * (1 - x / N):
    这里的 (1 - x / N) 表示当前点距离结束的比例(从结束点向起始点反向计算)。
    同样,将这个比例乘以 (1.0 / tapered_fraction),计算缩放比。
    min(1, (1.0 / tapered_fraction) * (x / N)):
    取1和计算出的缩放比中的最小值,确保缩放比不会超过1。
    min( ..., (1 / tapered_fraction) * (1 - x / N)):
    最后通过再取一次最小值,确保当前点的缩放系数位于合理范围内,平滑生成锥度效果。
  • 应用场景
    用于螺纹的起始和结束锥形设计:
    确保螺纹的起始和结束部分平滑变化,避免突然的截断或锐边。
    即形成 Higbee 倒角,这种倒角的目的是消除螺纹齿的尖端,以便更平稳地开始和终止螺纹的啮合。
  • 关键点
    缩放过程:
    x: 当前步进的计数。
    N: 总步数。
    tapered_fraction: 锥度比例,影响螺纹的起始和结束部分的平滑度。
    min 函数用来确保缩放系数合适,不会出现过大或过小的情况,导致意外的几何形变。
    通过这段代码,可以实现对螺纹起始和结束部分的锥度缩放,保证这部分的几何形状平滑过渡,提高螺纹啮合的效果和质量。

在这里插入图片描述
在这里插入图片描述

vtk + python 代码分析:

应用vtkRotationalExtrusionFilter, 可以实现类似的螺旋堆叠:
如:

在这里插入图片描述
代码参见

未完待续…

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

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

相关文章

国货骄傲精亿内存条颠覆游戏战场,推出超强DDR5 7200玄武系列电竞内存

随着科技的迅猛发展,对高性能电脑的需求不断增长,特别是在电竞领域。认识到这一点,国货知名品牌精亿(JINGYI)推出了其全新一代DDR5 7200 RGB电竞内存条,并命名系列为象征中国上古四大神兽的玄武-系列。这款产品凭借其卓越性能和令人印象深刻的海力士A-DIE颗粒配置,正在迅速成为…

环信beta版鸿蒙IM SDK发布!深度适配HarmonyOS NEXT系统

环信beta版鸿蒙IM SDK已正式发布!欢迎有需求开发者体验集成! 版本亮点 提供原生鸿蒙 SDK,支持原生 ArkTS 语言,全面拥抱鸿蒙生态提供鸿蒙系统上单聊、群聊、会话等能力和服务覆盖消息管理、用户属性、群租管理、离线推送.多设备…

【C++】认识STL

【C】认识STL STL的概念STL的版本STL的六大组件STL的三个境界STL的缺陷 STL的概念 SLT(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个保罗数据结构与算法的软件框架。 STL的版本 原…

深入学习html的步骤

推荐的学习步骤&#xff1a; 1. 深入了解HTML基础标签 列表 HTML提供有序列表(<ol>)和无序列表(<ul>)。 <h2>无序列表</h2> <ul><li>项目一</li><li>项目二</li><li>项目三</li> </ul><h2>…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 火星字符串(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

函数的一点点习题

1、利用递归计算0-n的和 #include <stdio.h> #include <string.h> #include <stdlib.h> int rec(int n) {if(n0)return 0;elsereturn nrec(n-1); } int main(int argc, const char *argv[]) {int n0;printf("please enter n:");scanf("%d&quo…

Ollama:本地部署大模型 + LobeChat:聊天界面 = 自己的ChatGPT

本地部署大模型 在本地部署大模型有多种方式&#xff0c;其中Ollama方式是最简单的&#xff0c;但是其也有一定的局限性&#xff0c;比如大模型没有其支持的GGUF二进制格式&#xff0c;就无法使用Ollama方式部署。 GGUF旨在实现快速加载和保存大语言模型&#xff0c;并易于阅读…

服务器新硬盘分区、格式化和挂载

文章目录 参考文献查看了一下起点现状分区(base) ~ sudo parted /dev/sdcmklabel gpt&#xff08;设置分区类型&#xff09;增加分区 格式化需要先退出quit&#xff08;可以&#xff09;(base) / sudo mkfs.xfs /dev/sdc/sdc1&#xff08;失败&#xff09;sudo mkfs.xfs /dev/s…

走近科学之《netty 的秘密》

Approaching science《the secret of netty》 IO 相关概念、五种 IO 模型、BIO NIO AIO 特点及区别、NIO 设计原理及核心组件、netty 简介及应用场景、netty 线程模型&#xff08;Reactor 线程模型&#xff09;、netty 设计原理及核心组件、netty 常用技巧实现&#xff08;心跳…

数据结构进阶——AVL树

数据结构进阶——AVL树 0. 前言1. AVL树的概念2. AVL树节点&#xff0c;和树的定义3. AVL树的插入4. AVL树的旋转5. AVL树的验证6. AVL树的删除&#xff08;了解&#xff09;7. AVL树实现完整代码8. AVL树的性能 0. 前言 学习本章&#xff0c;需要大家先掌握搜索二叉树&#xf…

04 远程访问及控制

目录 4.1 SSH远程管理 4.1.1 配置OpenSSH服务器 1. 服务监听选项 2. 用户登录控制 3. 登录验证方式 4.1.2 使用SSH客户端程序 1. 命令程序ssh、scp、sftp 1. ssh远程登录 2. scp远程复制 3. sftp安全FTP 2. 图形工具Xshell 4.1.3 构建密钥对验证的SSH体系 1. 在客户端创建密钥…

Hive笔记-3

3.2.2 查看表 1) 展示所有表 (1) 语法: 语法: SHOW TABLES [IN database_name] LIKE [identifier_with_wildcards]; In database_name 写的是查哪个数据库,一般不写默认是当前数据库 Like 后面跟通配符表达式 (2) 案例: 查看在 db_hive1 数据库里有没有以 stu 开头的表 …

实用软件下载:UltraEditUEStudio最新安装包及详细安装教程

​UEStudio简介&#xff1a;UEStudio建立在上文本编辑器UltraEdit的功能基础上&#xff0c;并为团队和开发人员提供了其他功能&#xff0c;例如深度Git集成&#xff0c;您可以直接在UEStudio中克隆&#xff0c;签出&#xff0c;更新&#xff0c;提交&#xff0c;推入/拉入等操作…

FPGA - 滤波器 - IIR滤波器设计

一&#xff0c;IIR滤波器 在FPGA - 滤波器 - FIR滤波器设计中可知&#xff0c;数字滤波器是一个时域离散系统。任何一个时域离散系统都可以用一个N阶差分方程来表示&#xff0c;即&#xff1a; 式中&#xff0c;x(n)和y(n)分别是系统的输入序列和输出序列&#xff1b;aj和bi均为…

Sermant标签路由能力在同城双活场景的应用

作者&#xff1a;聂子雄 华为云高级软件工程师 摘要&#xff1a;目前应用上云已成为趋势&#xff0c;用户也对应用在云上的高可靠方案有更高追求&#xff0c;目前同城双活场景作为应用高可靠方案中的一种常见实践方案&#xff0c;对微服务流量提出了数据中心亲和性的要求&…

Java_JDK下载与环境变量配置

目录 一、JDK下载安装 二、安装后配置环境变量 三、在编辑器里使用JDK 一、JDK下载安装 JDK 是Java开发工具包&#xff0c;它提供了用于开发和运行Java程序所需的工具和库。JDK包括Java编译器、Java虚拟机、Java标准库等。在IDEA中使用Java语言编写代码时&#xff0c;需要安…

海康视觉算法平台VisionMaster 4.3.0 C# 二次开发01 加载方案并获取结果

前言 第一次使用海康视觉算法平台VisionMaster 4.3.0&#xff0c;项目中要使用这个平台进行视觉处理并获取结果。 运行效果 开发环境 C#&#xff0c; WPF&#xff0c; vs2022, 海康视觉算法平台VisionMaster 4.3.0 基本概念 上图这些.sol为后缀的是vm的方案文件。 打开方案文…

[element-ui]el-select多选选择器选中其中一个选项,不可删除

背景&#xff1a; 产品真的很多奇奇怪怪的需求&#xff0c;一边吐槽一边实现。 前提&#xff1a;选择器作为表格的筛选项&#xff0c;提供三个选项值。 要求&#xff1a;默认选中其中一个值&#xff0c;这个值不可删除。 如图&#xff1a; 小声吐槽&#xff1a;搞这些有什么…

LSS算法核心原理详细解读,一看就懂,不懂请打我!

目录 核心整体流程分步阐述backbone几何关系&#xff08;创建视锥&#xff09;和视锥投影到egoVoxel PoolingHead 总结 核心 将2D图像特征转换到BEV feature特征 该算法是BEV领域中的一大基石 整体流程 流程步骤 &#xff08;1&#xff09;利用backbone获得环视图像&#xf…

Vue路由讲解-05

这里的路由并不是指我们平时所说的硬件路由器&#xff0c;这里的路由就是SPA&#xff08;single page application单页应用&#xff09;的路径管理器。再通俗的说&#xff0c;vue-router就是WebApp的链接路径管理系统。 vue-router是Vue.js官方的路由插件&#xff0c;它和vue.j…