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

Three.js 直线拐角自动圆角化(圆弧转弯)

目录

前言 

计算圆心坐标

计算两条直线的角平分线

计算dir1 dir2的夹角

计算圆心到直线交点的距离

计算圆心

计算从正X轴算起曲线开始、终止的角度

计算垂足与两直线交点距离

计算垂足

 计算垂线

计算两垂线与x轴的夹角

​编辑 计算圆弧是否按照顺时针方向来绘制

 成功画弧线

多个圆弧的应用


前言 

圆弧使用 ArcCurve 绘制,那么需要以下参数

我们拿3个点制作一个圆弧

计算圆心坐标

由 p1 - p2和p3 - p2构成两个向量dir1 dir2  这三个点构成的两条线的方向,        

计算两条直线的角平分线

dir1 dir2 向量相加得到两条向量的角平分线

计算dir1 dir2的夹角

通过点乘计算两向量的余弦值,然后通过反余弦得到夹角

计算圆心到直线交点的距离

设圆弧半径为R,设圆心到直线交点距离为L,R = L * Sin(夹角/2)  ==> L = R / Sin(夹角/2)

计算圆心

角平分线方向知道了,两向量交点到圆心的距离L知道了,那么圆心坐标就等于 起点+角平分线方向*L

计算从正X轴算起曲线开始、终止的角度

计算垂足与两直线交点距离

计算垂足

垂足向量等于p2起点+各方向*垂足到两直线交点距离

 

 计算垂线

计算两垂线与x轴的夹角

设x轴向量为(1, 0, 0)。

这里需要注意点乘的操作是基于180度有效的,也就是余弦在180度内有效为一个周期,如果垂线的y小于0,需要一个圆周 减去 点乘所算的夹角,如下图示意,点乘算的是黑色弧度角,但真正的垂线与x轴夹角是彩色弧度

 计算圆弧是否按照顺时针方向来绘制

根据WebGL右手螺旋定则,dir1 叉乘 dir2 得到的法线向量,判断这个向量的方向是否大于0

 成功画弧线

多个圆弧的应用

逻辑和单个圆弧是一样的,需要注意的是,如果多个点之间并不存在弧度,就不需要做弧度处理,可以用两直线向量叉乘计算,如果叉乘结果是0向量(正弦值为0,两向量相反即夹角180度)则说明两条直线没有夹角。

 

 

相关文章:

  • electron开发百度桌面应用demo及如何打包应用
  • LabVIEW双光子荧光成像软件开发
  • 智能指针的使用及原理
  • 大模型-高通性能测试工具介绍-1
  • 基本面高股息策略
  • ros2--串口通信
  • Java开发经验——阿里巴巴编码规范实践解析4
  • 封装一个小程序选择器(可多选、单选、搜索)
  • windows安装启动elasticsearch
  • 数据拟合实验
  • TechCrunch 最新文章 (2025-05-28)
  • 【Halcon】 affine_trans_image 算子详解
  • 构建安全高效的邮件网关ngx_mail_ssl_module
  • 【iOS】源码阅读(五)——类类的结构分析
  • 数字孪生赋能智能制造:某汽车发动机产线优化实践
  • SQL中各个子句的执行顺序
  • 亚远景-ISO 21434标准:汽车网络安全实践的落地指南
  • DBus总线详解
  • c++ 拷贝构造函数
  • vue 中的ref属性
  • 如何做一个免费的网站/seo排名技巧
  • 如何查看网站的流量/公司品牌宣传方案
  • 淘宝网站短链接怎么做/seo外链推广员
  • 淘宝下载安装/贵州萝岗seo整站优化
  • 网站制作文件/如何自己做一个网址
  • 做网站优化公司/网络推广的方式