Arc 打断拆分成多个线段

news2025/1/20 3:55:00

公司插件的梁齐斜板功能更新,设计师提出需求可以拆分弧梁,并能对齐到板顶。

本文只讨论拆分弧梁,椭圆再后续更新。

  1. 首先看以下弧形的创建api在这里插入图片描述
    API中提供了三种方法
    第一种时指定起点与终点,最后选择顶点形成的弧形
    第二种是指定面,半径,起点角度与终点角度
    第三种则是弧形中心点,半径,起点角度,终点角度,x向量,y向量

  2. 拆分弧形,意思就是如果遇到板边界需要拆分,需要将此弧形按照板边界划分成两个弧形,第一种办法肯定无法实现,后两种的化就需要了解什么是起点角度与终点角度,并如何计算

  3. 下面是我的理解,后面彻底完成后再继续补充,可能有些混乱,怕后面忘记(所有的弧形是逆时针旋转)

    • 弧形内部有三个参数(xDir,yDir,normal),这三个参数代表横向向量,纵向向量,和法向量
    • 下面是两个相反的值比较,可以发现法向量在俩面决定了整个弧形方向,此处可以使用右手法则理解
      在这里插入图片描述
      在这里插入图片描述
  • 也就是说,此处如果按照常规布置,我们可以求startangle和endangle,公式如下所示:
 var dir0 = (arc.GetEndPoint(0) - arc.Center).Normalize();
                    var dir1 = (arc.GetEndPoint(1) - arc.Center).Normalize();

在这里插入图片描述

  • 从上图可以看出α代表的startAngle大于β的endAngle,整个角度大小是整相反,所以我们拆分的时候可以反方向拆分便可以获得相应的新弧线
		double endAngle = dir0.AngleOnPlaneTo(arc.XDirection, arc.Normal);
        double startAngle = dir1.AngleOnPlaneTo(arc.XDirection, arc.Normal);
        double intersectAngle = dir.AngleOnPlaneTo(arc.XDirection, arc.Normal);
  • 前文说到法向量和Y关系右手法则
  • 倒叙组合便能够形成新的arc弧形,完成拆分
var fakeNewLine = Arc.Create(arc.Center, arc.Radius, startAngle, intersectAngle, arc.XDirection,
                                -arc.YDirection);
newLine = fakeNewLine.CreateReversed();
var fakeLine = Arc.Create(arc.Center, arc.Radius, intersectAngle, endAngle, arc.XDirection,
                                -arc.YDirection);
 line = fakeLine.CreateReversed();
  • 此处还没有完成梁齐斜板,因为我们是逆时针去拆分,所以需要将整个arc倒置以下才能够完成最后的样式转换,下面是结果图
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

MyBatis Plus 插件 动态数据源实现原理与源码讲解 (dynamic-datasource-spring-boot-starter-master)

目录 1. 介绍 2. 基本原理 3. 源码介绍 3.1 使用 AOP 拦截,方法执行前获取到当前方法要用的数据源 3.2 实现自定义 DataSource 接口,实现 DataSource 接口的 getConnect 方法做动态处理 1. 介绍 多数据源即一个项目中同时存在多个不同的数据库连接…

Win11的两个实用技巧系列之关闭分屏模式方法

怎么关闭Win11电脑分屏模式?Win11关闭分屏模式方法 有用户在使用电脑的时候不小心开启了电脑的分屏模式,导致自己无法正常的进行电脑操作了,本文就为大家带来了Win11关闭分屏模式方法,一起看看吧 Win11电脑分屏模式怎么关闭?有用…

oracle杂记

rlwrap…rpm 可以在sqlplus上翻下翻 然后alias sqlplus‘rlwrap sqlplus’ alias rmanrlwrap rman 数据库是由存储部分*.dbf 和运行的process和所使用的内存区域构成 远程安装前确认是否图形化能打开 yum -y install xorg-x11-apps xclock 启动顺序: nomount 启…

Unity VR开发教程 OpenXR+XR Interaction Toolkit 番外(一)用 Grip 键, Trigger 键和摇杆控制手部动画

文章目录 📕制作手部动画📕设置 Animation Controller📕添加触摸摇杆的 Input Action📕代码部分 在大部分 VR 游戏中,手部的动画通常是由手柄的三个按键来控制的。比如 Grip 键控制中指、无名指、小拇指的弯曲&#xf…

城际铁路列车控制系统

城际铁路列控系统在CTCS-2级列控系统基础上,应具备站间自动运行、车站定点停车及车站通过、折返作业、列车运行自动调整、车门/站台门(安全门或屏蔽门)防护及联动控制、列车运行节能控制等自动运行相关功能。 1、车载设备工作模式 城际铁路…

Access Specifier Manipulation解决方案

解释:AccessibleObject API 允许程序员绕过由 Java 访问说明符提供的 access control 检查。特别是它让程序员能够允许反映对象绕过 Java access control,并反过来更改私有字段或调用私有方法、行为,这些通常情况下都是不允许的 在面向对象编…

【微信小程序】微信支付接入全流程

一. 前置条件 接入支付首先得需要有企业资质&#xff0c;并开通企业对公户注册微信支付并进行对公户打款认证 二. 开始接入 1. 下载微信支付的AP证书 2. 服务端接入微信支付 2.1 引入相关maven配置 <dependency><groupId>com.github.binarywang</groupId&…

Nginx内存池(二)——小块内存分配

内存分配源代码&#xff1a; void * ngx_palloc(ngx_pool_t *pool, size_t size) { #if !(NGX_DEBUG_PALLOC)if (size < pool->max) { // 用内存池分配内存return ngx_palloc_small(pool, size, 1);} #endif// mallocreturn ngx_palloc_large(pool, size); }static ngx_…

对话风变科技 CTO|从线上教育服务商到教育资源供给平台,风变背后的第二增长曲线思维

Authing 是用户中心团队&#xff0c;我们是业务系统&#xff0c;大家冲刺一个目标、再做合并&#xff0c;然后让基于多租户的 B 端产品成功上线。那个阶段刚好有个客户卡在当时的时间点&#xff0c;一定要赶着上线&#xff0c;最后 Authing 的协作让我们赢得了客户信任&#xf…

基于scrapy+mongodb的校园数据获取

Scrapy以及MongoDB介绍&#xff1a; Scrapy: Scrapy是一个Python编写的开源网络爬虫框架&#xff0c;可以帮助开发人员高效、快速地从互联网上抓取、提取和处理数据。Scrapy拥有强大的可扩展性&#xff0c;可以通过定制管道、中间件和Spider来自定义爬虫行为&#xff0c;同时它…

( 位运算 ) 371. 两整数之和 ——【Leetcode每日一题】

❓371. 两整数之和 难度&#xff1a;中等 给你两个整数 a 和 b &#xff0c;不使用 运算符 和 - ​​​​​​​&#xff0c;计算并返回两整数之和。 示例 1&#xff1a; 输入&#xff1a;a 1, b 2 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;a 2, b 3 输出…

源码解读guava cache get接口的秘密

guava cache是谷歌开源的一种本地缓存&#xff0c;实现原理类似于ConcurrentHashMap&#xff0c;使用segments分段锁&#xff0c;保证线程安全&#xff0c;支持高并发场景。同时支持多种类型的缓存清理策略&#xff0c;包括基于容量的清理、基于时间的清理、基于引用的清理等。…

WPF基础使用

wpfwindows presentation foundation 官方文档 https://learn.microsoft.com/zh-cn/dotnet/api/?viewnet-7.0 一&#xff1a;WPF窗口设置为透明 在wpf中要将窗口设置为透明&#xff0c;除了将窗口背景色的Alpha分量设置为0以外&#xff0c;你还必须将窗口的AllowsTransparency…

STM32串口编程基础知识讲解

文章目录 前言一、串行通信和并行通信二、全双工&#xff0c;半双工&#xff0c;单工传输三、同步通信和异步通信四、波特率总结 前言 本篇文章给大家介绍一下串口的基础编程知识&#xff0c;这些知识是属于串口的理论知识&#xff0c;在开始学习编写代码的时候必须要掌握这些…

消息队列中间件 - RabbitMQ消息的持久化、确认机制、死信队列

持久化和应答机制Ack 消息队列中间件系列的最后一篇了&#xff0c;RabbitMQ消息的持久化、确认机制、死信队列、负载均衡等一系列进行说明。 消息持久化 当RabbitMq重启以后&#xff0c;未消费的消息&#xff0c;可以在服务重启后继续消费&#xff0c;不会丢失。 应答机制A…

nodejs处理xlsx文件生成json文件

nodejs处理xlsx文件有好几种方式&#xff0c;这里用的是js-xlsx库&#xff1b; 需求 有一个 xlsx 的文件&#xff0c;里面有几个不同的 sheet&#xff0c;需要读取这个表格中不同 sheet 的数据&#xff0c;并且为每个 sheet 生成对应的 json 文件。 例如有一个名为 template…

草根测试员的涨薪之路:我是如何从0到月薪20K的?(仅供借鉴)

我是一名转IT测试人&#xff0c;我的专业是化学&#xff0c;去化工厂实习才发现这专业的坑人之处&#xff0c;化学试剂害人不浅&#xff0c;有毒&#xff0c;易燃易爆&#xff0c;实验室经常用丙酮&#xff0c;甲醇&#xff0c;四氯化碳&#xff0c;接触多了&#xff0c;吃个饭…

网络安全:Hydra 端口爆破工具.(九头蛇)

网络安全&#xff1a;Hydra 端口爆破工具.&#xff08;九头蛇&#xff09; Hydra 也叫九头蛇&#xff0c;是一款开源的暴力PJ工具&#xff0c;集成在kali当中。可以对多种服务的账号和密码进行爆破&#xff0c;包括 Web 登录、数据库、SSH、FTP 等服务. 目录&#xff1a; 网络…

内网渗透—域防火墙策略同步、不出网隧道上线

内网渗透—域防火墙策略同步、不出网隧道上线 1. 前言2. 域防火墙2.1. 域控开启防火墙同步测试2.1.1. 查看域主机防火墙策略2.1.2. 域控防火墙策略下发同步2.1.2.1. 创建组策略2.1.2.2. 编辑组策略2.1.2.3. 编辑防火墙2.1.2.4. 同步防火墙策略 2.2. 域控出入站规则同步2.2.1. 查…

【数据结构】队列及其实现

目录 &#x1f60e;前言 认识队列 队列的初始化 队列判空 数据队尾入队 数据队头出队 取队头数据 取队尾数据 队列数据的个数 队列销毁 总结 &#x1f60e;前言 上次我们学习了栈及其实现&#xff0c;当然也少不它的好兄弟队列啦&#xff0c;今天我们开始队列的学习队…