Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 3.js-比例模型_Javascript_Three.js - Fatal编程技术网

Javascript 3.js-比例模型

Javascript 3.js-比例模型,javascript,three.js,Javascript,Three.js,基本上,如果选中单选按钮,我喜欢将网格x轴的大小增加“1”。如果单选按钮取消选中,我想将其反转 通常,我只需设置x轴的大小即可: 类似于: 如果选中单选按钮 如果单选按钮未选中 在我的例子中,困难在于网格的当前比例级别会因其他一些因素而变化。因此,x轴的刻度级别可能不是“1”,而是例如“3.7” 由于上面的函数不起作用,我正在寻找一些数学上的东西,简单地在网格上加上和减去“1” $('input').change(function () { if ($('#radio1').is(":c

基本上,如果选中单选按钮,我喜欢将网格x轴的大小增加“1”。如果单选按钮取消选中,我想将其反转

通常,我只需设置x轴的大小即可:

类似于:

如果选中单选按钮

如果单选按钮未选中

在我的例子中,困难在于网格的当前比例级别会因其他一些因素而变化。因此,x轴的刻度级别可能不是“1”,而是例如“3.7”

由于上面的函数不起作用,我正在寻找一些数学上的东西,简单地在网格上加上和减去“1”

$('input').change(function () {
    if ($('#radio1').is(":checked")) {
        mesh.scale.x = +1;
    }
    if ($('#radio2').is(":checked")) {
        mesh.scale.x = +2;
    }
});

我的函数的问题是,它在先前添加的值之上添加值。我正在寻找在添加新值之前减去先前值的值。

您可以将比例因子附加到单选按钮元素,如下所示:

<input type="radio" value="2" name="scalers" />
<input type="radio" value="1.4" name="scalers" />
<input type="radio" value="3.7" name="scalers" />
正如在另一个答案中提到的,您可能会错误地认为您需要添加和减去刻度。因此,正确的JS可能是:

var current_scale = 1;
$("input[name=scalers]").change(function() {
   var new_scale = parseFloat($("input[name=scalers]:checked").val());
   mesh.scale.x /= current_scale;
   mesh.scale.x *= new_scale;
   current_scale = new_scale;
});

如果你仔细想想,尺度就是你乘以的东西。我想把我的物体放大10%,或者是它的两倍,或者缩小30%。它通常不是加法运算。因此,我会:

mesh.scale.x *= 1.1; // to make my mesh 10% bigger


在这种情况下,它更容易:mesh.scale.x+=new_scale;
var current_scale = 0;
$("input[name=scalers]").change(function() {
   var new_scale = parseFloat($("input[name=scalers]:checked").val());
   mesh.scale.x -= current_scale;
   mesh.scale.x += new_scale;
   current_scale = new_scale;
});
var current_scale = 1;
$("input[name=scalers]").change(function() {
   var new_scale = parseFloat($("input[name=scalers]:checked").val());
   mesh.scale.x /= current_scale;
   mesh.scale.x *= new_scale;
   current_scale = new_scale;
});
mesh.scale.x *= 1.1; // to make my mesh 10% bigger
mesh.scale.x *= 0.9; // to make my mesh 10% smaller