几何算法——7.Blending(倒角)的调研、设计及算法

news2024/11/16 2:50:53

几何算法——7.Blending(倒角)的调研、设计及算法

  • 1 Parasolid的Blending
    • 1.1 关于Parasolid的BlendSurface
    • 1.2 Edge Blending
      • 1.2.1 Rolling-ball blends
      • 1.2.2 Variable rolling-ball blends
      • 1.2.3 Chamfers
        • 1.2.3.1 face offset chamfers
        • 1.2.3.2 apex-range chamfer blends
        • 1.2.3.3 第三种 chamfer blends
    • 1.3 Face-Face Blending
    • 1.4 Three-Face Blending
  • 2 Acis的Blending
  • 3 其他
  • 4 Blending的算法设计

1 Parasolid的Blending

Parasolid提供了三种形式的blending:

  • Edge Blending
  • Face-Face Blending
  • Three-Face Blending
    Edge Blending和Face-Face Blending不应该被认为是替代方案,而是两种强有力地互补的方法,因为它们的优点和缺点是互补的。Three-Face Blending是Face-Face Blending的一种特殊情况,因为其混合是在三组面(而不是两组)之间创建的。

1.1 关于Parasolid的BlendSurface

Rolling-ball blend
A rolling-ball blend has a parametric representation of the form:
R ( u , v ) = C ( u ) + r ∗ X ( u ) c o s ( v ∗ a ( u ) ) + r Y ( u ) s i n ( v ∗ a ( u ) ) R(u,v) = C(u) + r*X(u)cos(v*a(u)) + r Y(u)sin(v*a(u)) R(u,v)=C(u)+rX(u)cos(va(u))+rY(u)sin(va(u))
where:

  • C(u) is the spine curve, which is the locus of the centre of the rolling ball,
  • r is the blend radius,
  • X(u) and Y(u) are unit vectors such that d C ( u ) / d u , dC(u)/du, dC(u)/du, X(u) and Y(u) form an orthogonal set and X(u) is in the direction R(u,0) - C(u),
  • a(u) is the angle subtended by points on the boundary curves at the spine,
  • X, Y and a are expressed as functions of u, as their values change with u.
  • R(u,0) and R(u,1) are the curves where the blendsf meets the supporting geometries.
    在这里插入图片描述

1.2 Edge Blending

Edge Blending有三种类型:

  • Rolling-ball blends
  • Variable rolling-ball blends
  • Chamfers
    如下图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    You can create each type of edge blend on general bodies, so long as the body is locally manifold in the area of the blend.

Rolling-ball blends

Variable rolling-ball blends
可变滚动球共混物是指那些共混物的尺寸(例如,在具有圆形截面的共混物的情况下,共混半径)沿被混合的边链变化的共混物,如图73-3所示。可变滚动球共混物可以有圆形、圆锥或曲率连续的截面。
Chamfers
有两种类型的倒角混合物:面偏移倒角和顶点范围倒角。
面偏移倒角混合可以通过使用PK_EDGE_set_blend_chamfer中的range_1和range_2参数或PK_EDGE_set_blend_chain中的选项定义的偏移面之间的交集来确定。
顶点范围倒角提供了另一种控制倒角混合边界的方法,可以使用PK_EDGE_set_blend_chain中的选项来创建。

1.2.1 Rolling-ball blends

In particular it is often difficult to avoid falling over the illegal overlap/intersection type errors caused by choosing too large blend radii. However, the following rules and tips are worth considering but always remember that it is best to make and fix blends in small groups:
原文档中讲到,有以下一些rules and tips对于blend值得考虑:
Blending one edge at a vertex
If more than three edges meet at a vertex it is usually possible to blend one of them providing
that:
 The ranges must be sufficiently small and the configuration such that the sides of the blend
end on other edges at the same vertex.
 It is possible to cap the end of the blend with existing faces, extending at most two of the
adjoining faces.
Blending two edges at a three-edge vertex
You can successfully blend two of the edges at a three-edge vertex in the following situations:
 If any two of the three edges A, B, and C, are of the same convexity, they can be blended
(see Figure 73–8 (a)).
 If edges A and B are of one convexity, and edge C is of opposite convexity, you can blend
A and C or B and C only if the blend on edge C is of constant radius (see Figure 73–8 (b)).
在这里插入图片描述
Blending three edges at a three-edge vertex
When all three edges of a three-edge vertex are blended simultaneously (put them on and fix
them as a group), an extra blend face is added to smooth out the vertex.
Blending two edges at a four-edge vertex
When blending two edges of a four-edge vertex with a rolling-ball blend, the following constraints
are applied:
 the other pair, i.e. non-blended edges, are tangent or do not share a face and are of the
same convexity
 the convexity of the blend does not change at the vertex of the two blended edges
在这里插入图片描述

1.2.2 Variable rolling-ball blends

The positions array (and its corresponding n_positions option), lets you specify a list of vectors along the blend chain at which to apply blend parameters specified in the call to PK_EDGE_set_blend_chain.

For a simple blend, you just need to apply controls at the start and end of the blend, you should therefore specify at least two vectors in positions : the start and end of the blend chain (regardless of the number of edges in the chain). Thus, n_positions must be at least 2.
For more complex blends, you might need to apply controls at other points along the blend chain, in which case you can just add additional vectors to the positions array that represent the positions at which you need to place those controls.

An important use of the positions array is to indicate points in the chain where the parameters change instantaneously.

Specifying blend ranges
You use the primary_sizes and secondary_sizes options to specify a range of offset values for a variable radius blend. These are both arrays whose values correspond to entries in the positions array.
Figure 74-4 shows how the blend is defined for a given value, X, in the positions array. The corresponding offsets from the primary_sizes and secondary_sizes arrays are used to create a point on the blend spine, as well as contact points for the blend boundary.
在这里插入图片描述
从这张图中的解释,我们可以看出,它说Blend spine at intersection of offset surfaces说明这个spine是两个offset surface的交线。同时,他说constact points create by projecting。这也符合rolling ball的定义和offset的定义。
从这个地方,可以推断出,这个spine可能确实是两个offset surface求交得到的。(这和我当时做倒角的时候一样)。至于offset surface就比较好说了,是从原来的face的surface做一个offset得到的。但是这个地方要注意的是,对于变半径的倒角,能或者应该如何定义它关联的offset surface?但我觉得,对于变半径的的blending surface的计算,应该不是用的这种计算方法,而可能是沿着blending edge,在上面取点然后用project计算在两face上的contact point,从而生成曲面的?
在这里插入图片描述
The shape of the blend cross-section depends on the nature of the supplied primary_sizes and secondary_sizes :(具体详情在parasolid文档“74.2.2.4 Controlling cross section shape中”有详细分类介绍)
If corresponding values in primary_sizes and secondary_sizes for each entry in positions along the blend chain are equal, and the rho values array is PK_ENTITY_null or all rho values are zero , the blend has a circular cross-section.
If only primary_sizes are specified, and the rho values array is PK_ENTITY_null or all rho values are zero, then Parasolid uses the same values for the corresponding secondary_sizes for each entry in positions , and the blend has a circular cross-section.
If corresponding values in primary_sizes and secondary_sizes for each entry in positions along the blend chain are different, and the rho values array is PK_ENTITY_null or all rho values are zero, the blend has a an elliptical cross-section. // 椭圆截面的blend
在这里插入图片描述
If you define an elliptical blend, you need to use the primary_fins option to specify which way round the resulting asymmetrical cross-section should be applied.
在这里插入图片描述

1.2.3 Chamfers

1.2.3.1 face offset chamfers

Face offset chamfer blends can be determined by the intersection between offset surfaces that are defined using the range_1 and range_2 arguments in PK_EDGE_set_blend_chamfer. The effect of these arguments on the position and size of the chamfer is shown in Figure 74-11.
在这里插入图片描述
The resulting chamfer depends on both the angle between the faces on either side of the specified edges, and the relative sizes of range_1 and range_2 . Figure 74-12 shows some examples。
在这里插入图片描述
从上图也可以看出,这个定义的chamfer也是用和倒圆角一样的方法,先用两个曲面的offset surface求交得到中心脊线,然后再分别投影到两个surface上得到对应的contact points。

1.2.3.2 apex-range chamfer blends

This section describes options that are specifically available to PK_EDGE_set_blend_chain for controlling apex-range chamfers.
The apex is a point where the tangents from two underlying faces at the contact points cross as shown in Figure 74-13. The apex range is the distance between the contact points and the apex.
Figure 74-13 Definition of apex-range chamfer

1.2.3.3 第三种 chamfer blends

PK_blend_size_angle_c控制的。与前两种chamfer对比如下表:
The primary_size_type and secondary_size_type options indicate how the values of primary_sizes and secondary_sizes should be interpreted as follows:

ValueDescription
PK_blend_size_face_offset_cThe size represents the distance of the face offset. If both primary_size_type and secondary_size_type options are set to this value, a face offset chamfer blend is produced.This is the default
PK_blend_size_apex_range_cThe size represents the range to the apex of the blend.
PK_blend_size_angle_cThe size represents the angle made by the chord between the contact points and the tangent plane of the contact point on the other side of the blend.

Figure 74-14 shows the results of creating an apex-range chamfer when the primary_size_type and secondary_size_type options are set to the same values.

Figure 74-15 shows the result when primary_size_type is set to PK_blend_size_angle_c and secondary_size_type is set to PK_blend_size_apex_range_c.
在这里插入图片描述

(未完待续)

1.3 Face-Face Blending

In addition to edge blending, Parasolid provides functionality to create blends between two sets of (not necessarily connected) faces. This operation is known as face-face blending.

Figure 76-1 shows an example where two disjoint sheet bodies have been joined together by creating a face-face blend between them.
在这里插入图片描述
Face-face blending differs from edge blending as follows:

  • The sets of faces to be blended do not need to be adjacent, or even in the same body.
  • Face-face blends are created and fixed in a single operation. There is no such thing as an unfixed face-face blend.

(未完待续,持续更新中)

1.4 Three-Face Blending

2 Acis的Blending

3 其他

4 Blending的算法设计

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

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

相关文章

自学黑客/网络渗透,一般人我劝你还是算了

写在开篇 笔者本人 17 年就读于一所普通的本科学校,20 年 6 月在三年经验的时候顺利通过校招实习面试进入大厂,现就职于某大厂安全实验室。 我为啥说自学黑客,一般人我还是劝你算了吧。因为我就是那个不一般的人。 首先我谈下对黑客&…

AMBA总线协议AXI——学习笔记

文章目录 前言一、AXI(Advanced eXtensible Interface)1、定义2、信号2.1 全局信号2.2 写数据通路2.3 写地址通道2.4 写回复通道2.5 读数据通道2.6 读地址通道2.7 低功耗接口信号 3、AXI-Lite协议特点4、读写时序图4.1 读burst4.2 读重叠burst4.3 写burs…

Baklib母公司探码科技荣获甲子光年:2023中国AI数据平台创新企业

4月25日,由中国科技产业智库「甲子光年」主办、上海市信息服务业行业协会支持的「共赴山海2023甲子引力X智能新世代」峰会在上海召开。峰会上为了表彰在AI领域中取得卓越成就的公司,甲子光年在峰会现场颁布了星辰20:创新企业,表彰…

鹏程·盘古

鹏程盘古模型基于 1.1 TB 高质量中文训练数据,采用全场景人工智能计算框架 MindSpore 自动并行技术实现了五维并行训练策略,从而可将训练任务高效扩展到 4 096 个处理器上。 对比实验表明,在少样本或零样本情况下,鹏程盘古模型在…

Mysql高级知识-------索引

mysql索引的创建,新增,删除 查询索引: 语法: show index from 表 主要参数: 新建表中添加索引 ① 普通索引 create table t_dept( no int not null primary key, name varchar(20) null, sex varchar(2) null, inf…

讯飞星火大模型申请及测试:诚意满满

“ 大家好,我是可夫小子,关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加:keeepdance,备注:chatgpt,拉你进群。 最近国产大模型跟下饺子似,隔几天就发布一个。厂家发布得起劲&#xf…

ArduPilot之posHoldRTL实测

ArduPilot之posHold&RTL实测 1. 源由2. 模式配置3. 测试步骤4. 飞行实测5. 总结6. 参考资料7. 附录-关于QGC 暂不支持MAVLink2 signing Protocol问题7.1 问题描述7.2 硬件配置7.3 逻辑分析7.4 配置Signature7.5 总结(QGC目前尚不支持MAVLink2 Signature&#xf…

算法——分布式——一致性哈希、一致性hash图解动画

分布式算法——一致性哈希、一致性Hash 概述传统Hash算法算法步骤生成Hash环定位服务器定位数据和映射服务器 服务器变更Hash环倾斜虚拟节点总结 概述 一致性哈希算法在1997年由麻省理工学院提出,是一种特殊的哈希算法,目的是解决分布式缓存的问题。在移…

使用bert4keras出现的问题(Process finished with exit code -1073741819 (0xC0000005))

1、环境 python 3.7.12 tensorflow 1.15 keras 2.3.1 bert4keras 0.9.7 protobuf 3.19.0 numpy 1.16.5 2、出现问题 numpy版本不兼容问题所以你就直接按照我的版本就可以了(numpy 1.16.5) Process finished with exit code -1073741819 (0xC0000005) …

关于储存器的笔记

存储器是许多存储单元的集合,按单元号顺序排列。每个单元由若干二进制位构成,以表示存储单元中存放的数值,通常由数组描述存储器。 存储器可分为主存储器(简称主存或内存)和辅助存储器(简称辅存或外存)两大类。和CPU直接交换信息的是主存。 …

HDCTF KEEP ON

Index KEEP ONChecksec & IDA漏洞分析完整EXP KEEP ON Checksec & IDA __int64 vuln() {char s[80]; // [rsp0h] [rbp-50h] BYREFmemset(s, 0, sizeof(s));puts("please show me your name: ");read(0, s, 0x48uLL);printf("hello,");printf(s);p…

2.5 习题分析

类型一、 通过收敛阶的定义分析迭代方法的收敛速度 例6 分析简单迭代法与牛顿迭代法的收敛速度 我的答案: 一、信息 1.分析简单迭代 2.分析牛顿迭代 3.二者的收敛速度 二、分析 条件1和条件2:告诉我此次分析的目标 条件3告诉我分析的方向即为收…

剑指 Offer 67. 把字符串转换成整数及复制带随机指针的链表

文章目录 一、剑指 Offer 67. 把字符串转换成整数二、Leetcode 138. 复制带随机指针的链表 一、剑指 Offer 67. 把字符串转换成整数 题目是这样的 字符串转换为整数,是连续的数字字符转换,如果数字字符不连续,只转换最前面连续的那部分 其实…

Axios的介绍与使用

Axios的介绍 get请求 Axios配置对象 创建实例发送请求 取消请求 Axios的介绍 目前前端最流行的 ajax 请求库 、react/vue 官方都推荐使用 axios 发 ajax 请求 特点: 基于 xhr promise 的异步 ajax 请求库浏览器端/node 端都可以使用支持请求/…

20.Java序列化

Java序列化 一、序列化和反序列化 序列化:指堆内存中的java对象数据,通过某种方式把对存储到磁盘文件中,或者传递给其他网络节点(网络传输)。这个过程称为序列化,通常是指将数据结构或对象转化成二进制的…

IPC行业信息汇总

IPC:“网络摄像机”,是IP Camera的简称。它是在前一代模拟摄像机的基础上,集成了编码模块后的摄像机。它和模拟摄像机的区别,就是在新增的“编码模块”上。 模拟摄像机,顾名思义,输出的是模拟视频信号。模拟…

大数据系列——Spark理论

概述 Apache Spark,全称伯克利数据分析栈,是一个开源的基于内存的通用分布式计算引擎,内部集成大量的通用算法,包括通用计算、机器学习、图计算等,用于处理大数据应用。 主要由下面几个核心构件组成,具体包…

C++、STL标准模板库和泛型编程 ——适配器、补充(侯捷)

C、STL标准模板库和泛型编程 ——适配器 (侯捷)--- 持续更新 适配器(Adapters)容器适配器(Container Adapters)仿函数适配器(Functor Adapters)bind2nd(绑定第二实参&…

Tomcat源码:Pipeline与Valve

参考资料: 《Tomcat组成与工作原理》 《Tomcat - Container的管道机制:责任链模式》 《Tomcat源码解析系列 Pipeline 与 Valve》 前文: 《Tomcat源码:启动类Bootstrap与Catalina的加载》 《Tomcat源码:容器的生命…

Mybatis源码01-Executor

前言 为了方便公司业务排查问题,要求打印执行的sql,以及执行时间。编写了一个Mybatis的拦截器,此前从未看过mybatis的源码,在调试的过程中不断阅读源码,后边想更深刻了解一下,看了鲁班大叔的视频&#xff…