首页 > 其他分享 >4.1.1.1 圆近似外形

4.1.1.1 圆近似外形

时间:2024-12-01 10:29:25浏览次数:6  
标签:4.1 1.1 point 近似 let circle tolerance boundary

use fj_math::{Circle, Point};

use crate::geometry::{traits::GenPolyline, CurveBoundary, Tolerance};

/// # 近似一个圆轮廓
///
/// ## 论点
///
/// 除了一个圆,这个方法还有两个参数:
///
/// - -圆应该近似的“边界”。
/// - “公差”,指定允许近似值偏离实际圆的程度。
///
/// ## 返回值
///
/// 近似值返回所提供边界内的点。边界点本身不包括在近似值中。这为调用者(无论如何都知道边界)提供了更多如何进一步处理近似值的选项。
/// 
/// ## 决定论
///
/// 圆近似经过精心设计,可以为给定圆和公差的组合产生确定性结果,而不管边界如何。这样做是为了防止生成无效的网格。
/// I具体来说,这意味着有一组无限的点近似于一个圆(无限,因为圆的局部坐标空间是无限的)。对于给定的圆和公差组合,该集合是确定的。定义圆近似位置的边界仅以两种方式影响结果:
///
/// 1. 它控制着实际计算无限集中的哪些点。 
/// 2. 它定义了返回计算点的顺序。
///
/// 因此,无论路径的哪个范围被近似,以及被近似的次数是多少,圆近似都能保证生成可以在有效网格中组合在一起的点。
/// 
pub fn approx_circle<const D: usize>(
    circle: &Circle<D>,
    boundary: impl Into<CurveBoundary<Point<1>>>,//边界
    tolerance: impl Into<Tolerance>,//公差
) -> Vec<(Point<1>, Point<D>)> {
    let boundary = boundary.into();
    let tolerance = tolerance.into();

    let mut points = Vec::new();

    for point_curve in circle.generate_polyline(boundary, tolerance) {
        let point_global = circle.point_from_circle_coords(point_curve);
        points.push((point_curve, point_global));
    }

    points
}

标签:4.1,1.1,point,近似,let,circle,tolerance,boundary
From: https://blog.csdn.net/weixin_43219667/article/details/144019722

相关文章

  • 4.1.1.8 实心体轮廓
    //!实心体轮廓usestd::collections::BTreeSet;usecrate::{geometry::Geometry,topology::Solid};usesuper::{face::FaceApprox,Approx,ApproxCache,Tolerance};implApproxfor&Solid{typeApproximation=BTreeSet<FaceApprox>;typeCache......
  • 中国宏观经济景气指数(一致、先行、滞后、预警)月度统计数据1991.1-2022.7-社科数据
    中国宏观经济景气指数(一致、先行、滞后、预警)月度统计数据1991.1-2022.7-社科数据https://download.csdn.net/download/paofuluolijiang/90028741中国宏观经济景气指数是衡量经济运行状况和预测未来走势的重要工具。该指数基于一系列宏观统计数据,通过筛选代表性指标,构建了包......
  • 2024.11.30
    要在高亮的<em>标签中加入样式使字体变成红色,你可以直接在preTags和postTags中使用内联样式。具体做法如下:修改代码:request.source().highlighter(SearchSourceBuilder.highlight().field("name").preTags("<emstyle='color:red;'>")//......
  • 2024.11.30 周六
    2024.11.30周六Q1.1200给定x(<=107),m(<=1018),循环i:1~m,t=i^x,问t为x或m因子的数量。Q2.1400给定n个数,选择四个坐标点组成一个边平行于坐标轴的矩形,问面积最大时选的点。Q3.1600给定一数组(非负),在非零数中每次可选一个数(代价本身)/相邻2个数(代价和的2倍)。问最小......
  • 2024.11.30
    连续两天从不同的人那里听到相同的话是什么感受?昨天晚上利用导师答疑时间和童老师谈话(目前接触到的统计系的老师们都好温柔),突发奇想问了他有关未来方向选择的问题。他和我介绍了他研究的领域,统计学确实再很多领域都能发挥作用呢。不过大一就决定未来的方向有点早,老师认为要先打好......
  • 11.19
    创建表CAEATETABLE表名(字段名1数据类型1,字段名2数据类型2);删除表DROPTABLE表名修改表ALTERTABLE表名RENAMETO新的表名ALTERTABLE表名ADD列名数据类型ALTERTABLE表名MODIFY列名新数据类型DML给指定的列添加数据INSERTINTO表名(列名1,列名2,)VALUE......
  • 1.1.4 逆元
    1.1.4逆元主要内容:扩欧求逆元,快速幂求逆元,线性(递归)求逆元,同余模公式(补充),反复平方法求幂(补充)一、逆元首先给出逆元的定义:$$\begin{aligned}假设a\cdotp&\equiv1\quad(mod\quadb)\\且(a,b)&=1\quad即\quada,b互素\\则称p为a的逆元&,记作p=a^{-1}\end{aligned}$......
  • docker可用国内镜像源2024.11.30
    系统版本/proc/versionLinuxversion5.15.0-126-generic(buildd@lcy02-amd64-052)(gcc(Ubuntu9.4.0-1ubuntu1~20.04.2)9.4.0,GNUld(GNUBinutilsforUbuntu)2.34)#136~20.04.1-UbuntuSMPThuNov1416:38:05UTC2024docker版本Dockerversion27.3.1,buildc......
  • [杂题]2024.9~2024.11 杂题总结
    [杂题]2024.9~2024.11杂题总结题目做多了,不总结,和没做是一样的。ARC061B挺好的一道题。观察到三个不好做,我们想能否搞成一个牌堆去取。发现显然是可以的,我们只需要知道一个确定的取出来牌的编号序列,必然可以确定三者的牌堆分别是什么。所以,问题转换成了:有多少个序列,当\(A\)......
  • TinyPro Vue v1.1.0 正式发布:增加细粒度权限管理、页签模式、多级菜单,支持 Webpack/Vi
    你好,我是Kagol,个人公众号:前端开源星球。视频教程:https://www.bilibili.com/video/BV1SUBRYGECg/为了提升前端开发效率,OpenTiny提供了一个跨平台的前端工程化CLI工具TinyCLI,为开发者提供一系列开发套件及工程插件,覆盖前端开发的整个链路,保证团队开发过程的一致性和可复制性......