Javascript 如何防止功能区/路径出现“错误”;跨越;在d3中?
我正在使用以下逻辑将功能区从外部饼图创建为内部饼图:Javascript 如何防止功能区/路径出现“错误”;跨越;在d3中?,javascript,math,d3.js,svg,intersection,Javascript,Math,D3.js,Svg,Intersection,我正在使用以下逻辑将功能区从外部饼图创建为内部饼图: 从外部饼图开始。开始角度并绘制一条圆弧到外部饼图。结束角度(跟踪外部饼图的内部圆弧) 在内部饼图上绘制一条贝塞尔曲线。使用2个控制点结束角度 第一个控制点与起点相同(即“无弯曲”) 第二个控制点是一个比内部饼图半径长的恒定半径(我们称之为cp_2) 在内部饼图上画一条圆弧。开始角度(跟踪内部饼图的外部圆弧) 最后,将最终的贝塞尔曲线绘制到外部饼图。开始角度(步骤1中的起点)有2个控制点 第一个控制点与步骤4相同(我们称之为cp\u 1) 第二
内部饼图上绘制一条贝塞尔曲线。使用2个控制点结束角度
cp_2
)内部饼图上画一条圆弧。开始角度(跟踪内部饼图的外部圆弧)
外部饼图。开始角度
(步骤1中的起点)有2个控制点cp\u 1
)cp_1
和cp_2
都是常量,功能区“交叉”取决于以下值:
pie\u外部。开始角度
pie_-outer.end_-angle
pie_outer.r
pie\u内部。开始角度
pie_内部。end_角度
pie_inner.r
pie_inner.cx
pie_inner.cy
cp_1
和cp_2
,直到色带不交叉,看起来“漂亮”
请注意,内部饼图将始终位于外部饼图的内部
问题是:
没问题: