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

螺丝工厂vtk ThreadFactory(1)

螺丝工厂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, 可以实现类似的螺旋堆叠:
如:

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

未完待续…

相关文章:

螺丝工厂vtk ThreadFactory(1)

螺丝工厂vtkThreadFactory (1) 缘起 几年前的探索在Python里应用Openscad实现3D建模之3D螺纹建模初探3 新的参考: generating nice threads in openscadvtkRotationalExtrusionFilter 辅助AI: coze 笔记📒: openscad 代码分析 // 半径缩放函数,用…...

Android13 蓝牙协议属性配置详解

Android13 蓝牙协议属性配置详解 文章目录 Android13 蓝牙协议属性配置详解一、前言二、Android13 蓝牙协议属性配置1、Profile 属性和暴露接口的定义2、蓝牙协议属性定义3、系统代码中判断蓝牙协议是否使能的代码 三、其他1、adb 窗口中查看蓝牙协议属性2、动态设置蓝牙prop协…...

南通国际高中有哪些?南通惠立学校高中部校长见面日重磅来袭

惠灵顿(中国)自2011年成立以来,一直坚持深耕国际与双语教育,拥有丰厚的办学经验。依托于集团化的深厚经验南通惠立学校于2024-2025学年开设9-11年级,这所南通国际高中为高中学生搭建一个集卓越升学成果、强大师资、纯正…...

Al智能图像处理APP,安卓手机专用一键优化工具资源合集下载

### 标题:Al智能图像处理APP,安卓手机专用一键优化工具资源合集下载 随着科技的进步,图像处理技术也在不断提升。为了满足用户对图像处理日益增长的需求,我们隆重推出了一款功能强大的图像处理工具——Al智能图像处理APP。这款安…...

Kettle根据分类实现Excel文件拆分——kettle开发31

将整理好的一份供应商付款明细Excel文件,按供应商拆分成多个Excel文件。 实现思路 本文我们首先将供应商付款明细表,按照“名称”拆分成多份Excel文件。拆分Excel文件打算用两个转换实现,一个用来将Excel数据读取到参数中,另外一…...

merkle tree中文

Merkle tree merkle tree中文文档英文文档 #include <cstdlib> #include <string> #include <bitcoin/bitcoin.hpp>BC_USE_LIBBITCOIN_MAINusing namespace bc;bc::hash_digest calculate_merkle_root(bc::hash_list &merkle);int bc::main(int argc, …...

制作自己的 @OnClick、@OnLongClick(告别 setOnClickListener,使用注解、反射和动态代理)

前言 前面我们说过 ButterKnife 这个库&#xff0c;这个库实现不仅实现了 View 的绑定&#xff0c;而且还提供了大量的注解如 BindView、OnClick、OnLongClick 等来简化开发过程中事件绑定。而这些功能的实现是通过 APT 也就是注解处理器&#xff0c;在编译期间生成 Java 代码…...

Android基础-RecyclerView的优点

一、引言 在Android开发中&#xff0c;RecyclerView是一个强大而灵活的控件&#xff0c;用于展示大量数据集合的视图。相比于传统的ListView和GridView&#xff0c;RecyclerView提供了更高的性能、更多的布局选择和更丰富的交互体验。本文将详细阐述RecyclerView的功能作用以及…...

C# Winform 用户控件,扩展控件,自定义控件综合实例

Control类是Windows窗体控件的基类&#xff0c;它提供了在 Windows 窗体应用程序中进行可视显示所需的基础结构&#xff0c;可以通过继承来扩展熟悉的用户控件和现有控件的功能。本列介绍三种不同自定义控件以及怎么创建他们。 自定义控件分类 用户控件&#xff1a;基本控件的…...

经济学和金融学有什么区别?

中文版 金融学和经济学是两个密切相关但有所不同的学科&#xff0c;它们各自侧重于不同的研究领域和方法。 经济学 (Economics) 经济学是研究如何配置有限资源以满足人类无限需求的学科。它可以分为两个主要分支&#xff1a; 宏观经济学 (Macroeconomics): 研究经济整体的行…...

Java课程设计:基于swing的学生信息管理系统

文章目录 一、项目介绍二、项目展示三、源码展示四、源码获取 一、项目介绍 这款Java swing实现的学生信息管理系统和jsp版本的功能很相似&#xff0c;简单的实现了班级信息的增删改查&#xff0c;学生信息的增删改查&#xff0c;数据库采用的是mysql&#xff0c;jdk版本不限&…...

【代码】3d->video

mesh->video import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotlib.animation import FuncAnimation import matplotlib.animation as animation from pywavefront import Wavefront import osnamedog # 读取OBJ文…...

算法01 递推算法及相关问题详解【C++实现】

目录 递推的概念 训练&#xff1a;斐波那契数列 解析 参考代码 训练&#xff1a;上台阶 参考代码 训练&#xff1a;信封 解析 参考代码 递推的概念 递推是一种处理问题的重要方法。 递推通过对问题的分析&#xff0c;找到问题相邻项之间的关系&#xff08;递推式&a…...

自动化测试火狐下载文件

本篇文章介绍selenium中火狐浏览器如何下载文件。比如我想把这个MP4的视频文件下载下来。 点击之后查看下载的类型是video/mp4 指定使用火狐浏览器 profile webdriver.FirefoxOptions() # 设置firefox默认的下载路径&#xff0c;0表示桌面&#xff0c;1表示我的下载&#xf…...

基于JSP技术的定西扶贫惠农推介系统

开头语&#xff1a;你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a;JSP 数据库&#xff1a;MySQL 技术&#xff1a;B/S架构、JSP技术 工具&#xff1a;Eclipse、MySQL、Tomcat 系统展示 首…...

Linux 终端窗口设置为透明

Linux 终端窗口设置为透明 打开终端 右键鼠标 选择Profile Preferences 点击Background 选择 Transparent background 拖动滑条调整透明度 完成。...

MySQL 中 Varchar(50) 和 varchar(500) 区别是什么?

一. 问题描述 我们在设计表结构的时候&#xff0c;设计规范里面有一条如下规则: 对于可变长度的字段&#xff0c;在满足条件的前提下&#xff0c;尽可能使用较短的变长字段长度。 为什么这么规定&#xff1f;我在网上查了一下&#xff0c;主要基于两个方面 基于存储空间的考…...

强化RAG:微调Embedding还是LLM?

为什么我们需要微调&#xff1f; 微调有利于提高模型的效率和有效性。它可以减少训练时间和成本&#xff0c;因为它不需要从头开始。此外&#xff0c;微调可以通过利用预训练模型的功能和知识来提高性能和准确性。它还提供对原本无法访问的任务和领域的访问&#xff0c;因为它…...

提取 Excel单元格文本下的超链接

在Excel中&#xff0c;可以使用内置的函数来提取单元格中的超链接地址。如果你有一个包含超链接的单元格&#xff0c;例如B1&#xff0c;你可以使用以下步骤来提取这个超链接&#xff1a; 在一个新的单元格&#xff08;例如C1&#xff09;中&#xff0c;输入以下公式&#xff…...

一键安全体检!亚信安全携手鼎捷软件推出企业安全体检活动 正式上线

亚信安全联合鼎捷软件股份有限公司&#xff08;以下简称“鼎捷软件”&#xff09;正式推出“一键安全体检”服务。亚信安全网络安全专家将携手鼎捷软件数据安全专家&#xff0c;围绕企业的数智安全状况&#xff0c;进行问题探索与治愈、新问题预测与预警&#xff0c;在全面筛查…...

零基础入门Python爬虫:借助快马AI生成你的第一个可运行爬虫脚本

今天想和大家分享一下我作为Python爬虫新手的学习经历。刚开始接触爬虫时&#xff0c;面对各种库和概念真的有点懵&#xff0c;直到发现了InsCode(快马)平台&#xff0c;它让我用自然语言描述需求就能生成可运行的代码&#xff0c;大大降低了入门门槛。 爬虫的基本原理 爬虫就像…...

提升效率:用快马AI一键生成windows18-hd19风格的CSS组件库

提升效率&#xff1a;用快马AI一键生成windows18-hd19风格的CSS组件库 最近在做一个需要windows18-hd19设计风格的项目&#xff0c;这种风格的界面元素特别多&#xff0c;手动编写样式简直让人头大。光是调色板、阴影效果这些基础样式就要折腾半天&#xff0c;更别说那些复杂的…...

用快马AI一键生成数据库管理原型,告别navicat手工建表写接口

用快马AI一键生成数据库管理原型&#xff0c;告别navicat手工建表写接口 最近在开发一个员工信息管理系统时&#xff0c;我深刻体会到传统数据库管理工具的局限性。虽然navicat这类工具能帮我们可视化操作数据库&#xff0c;但每次新建项目都要手动建表、写接口&#xff0c;重…...

从选型到焊接:一份给嵌入式新手的晶振避坑指南(含32.768KHz实例)

从选型到焊接&#xff1a;嵌入式开发者的晶振实战避坑手册 第一次点亮自己设计的电路板时&#xff0c;那颗小小的晶振就像电子世界的心跳起搏器。记得三年前我为一个智能家居项目调试STM32时&#xff0c;连续三天卡在"晶振不起振"的问题上——电路图反复检查无误&…...

PX4固件二次开发入门:从源码结构到第一个自定义模块(基于v1.11版本)

PX4固件二次开发实战&#xff1a;从源码解析到自定义模块开发&#xff08;v1.11版本&#xff09; 当你第一次打开PX4的源码仓库&#xff0c;面对数十个文件夹和数千个文件时&#xff0c;那种扑面而来的压迫感我深有体会。作为过来人&#xff0c;我想分享一套系统性的二次开发方…...

iOS设备支持文件管理指南:让Xcode兼容新旧iOS系统的实用方案

iOS设备支持文件管理指南&#xff1a;让Xcode兼容新旧iOS系统的实用方案 【免费下载链接】iOSDeviceSupport All versions of iOS Device Support 项目地址: https://gitcode.com/gh_mirrors/ios/iOSDeviceSupport 开发困境突破&#xff1a;iOS版本与Xcode的兼容性挑战 …...

GG3M 项目贝叶斯更新与决策数学的具体落地应用

GG3M贝叶斯决策体系&#xff1a;基于贾子公理的跨领域反熵增智慧决策应用摘要&#xff1a; GG3M项目以贾子公理体系为底层支撑&#xff0c;独创“事实层-模型层-元模型层”层级化贝叶斯架构&#xff0c;实现了从参数优化到认知框架迭代的范式突破。该体系以系统长期反熵增演化为…...

BP算法在SAR成像中的高效实现与优化策略

1. BP算法在SAR成像中的核心原理 BP&#xff08;Back Projection&#xff09;算法是合成孔径雷达&#xff08;SAR&#xff09;成像中最直观的时域处理方法。我第一次接触这个算法时&#xff0c;就被它那种"暴力美学"式的计算逻辑震撼到了——它不需要任何傅里叶变换的…...

Topgrade性能优化技巧:提升大规模更新效率的5种方法

Topgrade性能优化技巧&#xff1a;提升大规模更新效率的5种方法 【免费下载链接】topgrade Upgrade all the things 项目地址: https://gitcode.com/gh_mirrors/top/topgrade Topgrade是一款强大的系统更新工具&#xff0c;它能自动检测并升级系统中的所有包管理器、编程…...

IDK slgA:无创检测,便捷采样

在人体的防御体系中&#xff0c;免疫系统扮演着至关重要的角色。而其中&#xff0c;黏膜免疫系统则是抵御外界病原体的第一道防线。在众多免疫成分中&#xff0c;分泌型免疫球蛋白A&#xff08;Secretory Immunoglobulin A, 简称sIgA&#xff09;以其独特的功能和广泛的存在形式…...