Javascript 对齐外环';s导航到内圈';s选定的导航

Javascript 对齐外环';s导航到内圈';s选定的导航,javascript,geometry,wheelnav.js,Javascript,Geometry,Wheelnav.js,这是我的代码,用于演示 这就是我想要实现的: 如果我单击内圈,我希望外圈的可见导航项目以内圈的导航项目为中心。到目前为止,我可以成功且一致地让外圈导航项目从内圈导航项目开始。我使用内圈navitem的基准角+外圈可见的navItems度数来适当排列外圈 let wheelSliceAngle = 360 / this.wheel.navItemCount; let text_labels = (mod_options.length) + 1; let subWheelSliceAngle =

这是我的代码,用于演示

这就是我想要实现的: 如果我单击内圈,我希望外圈的可见导航项目以内圈的导航项目为中心。到目前为止,我可以成功且一致地让外圈导航项目从内圈导航项目开始。我使用内圈navitem的基准角+外圈可见的navItems度数来适当排列外圈

let wheelSliceAngle = 360 / this.wheel.navItemCount;
let text_labels = (mod_options.length) + 1;
let subWheelSliceAngle = 360 / (sub_wheel_labels.length);
let labels_length = sub_wheel_labels.length
let non_text_labels = non_text_labels_length
let x  = (subWheelSliceAngle * non_text_labels);
let y = (subWheelSliceAngle * text_labels);
for (let portion of this.wheel.navItems) {
    console.log('portion baseAngle',portion)
    let sub_wheel_var = y
    let wheel_var = portion.baseAngle
    let angle = wheel_var + sub_wheel_var
    portion.sub_wheel = initSubWheel(this.wheel, angle);
    portion.sub_wheel.hide()
    let wheel_nav = portion;
    let _that = this;
    let old_refresh = wheel_nav.refreshNavItem;
    //     console.log(portion);
    wheel_nav.refreshNavItem = function() {
        old_refresh.apply(this, arguments);
    };
    wheel_nav.navigateFunction = function() {
        resetMarkers()
        this.wheelnav.hideSubMenus();
        full_portion_sub_wheel.hide()
        this.sub_wheel.show();
        setTimeout(() => {
            this.sub_wheel.navItems.map(x => x.selected = false);
            this.sub_wheel.navItems.forEach((v, i) => { v.setSelected() })
            this.refreshNavItem();
        }, 0)
    }
}
如果我从以下位置调整变量
sub_wheel_var
wheel_var

let y = (subWheelSliceAngle * text_labels);
let sub_wheel_var = y
let wheel_var = portion.baseAngle
let angle = wheel_var + sub_wheel_var
致:

我可以在ICNI的中间启动OuterCircleNav

我真正想做的是让OCN的中段与ICNI的中段相匹配

这样做:

let y = (subWheelSliceAngle * text_labels);
let sub_wheel_var = y/2
let wheel_var = portion.navAngle
let angle = wheel_var + sub_wheel_var
让我接近。问题是它不太准确!!!!不管我做什么,我都不能让它成为死点

为了更轻松地处理代码,我还添加了变量
sections
extras
,以便分别更轻松地添加额外的部分或额外的外部导航元素。我发现,如果我能为一个部分和额外部分的组合找到工作,那么另一个组合就会出现偏差。我知道答案在于我如何计算
y
,或
subwheelsiceangle
,或
subwheel\u var

您可以在此处再次查看代码:

我将非常感谢任何和所有的帮助


非常感谢。

您必须使用
initSubWheel
中的
navItemsContinuous
属性

  sub_wheel.navAngle = nav_angle-30;
  sub_wheel.sliceAngle = 30;
  sub_wheel.navItemsContinuous = true; 
这是我修改过的垃圾箱:

  sub_wheel.navAngle = nav_angle-30;
  sub_wheel.sliceAngle = 30;
  sub_wheel.navItemsContinuous = true;