Three.js - 比例模型

时间:2015-11-17 20:49:24

标签: javascript three.js

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

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

类似:

如果选中单选按钮

mesh.scale.x = 2;

如果未选中单选按钮

mesh.scale.x = 1;

我的情况很困难,我的网格的当前比例级别因其他一些因素而异。因此,可能发生x轴的比例级别不是“1”,而是例如“3.7”。

由于上述功能不起作用,我正在寻找数学上的东西,简单地在网格上加上和减去“1”。

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

我的功能问题是它在之前添加的值之上添加了值。我正在寻找在添加新内容之前减去之前值的内容。

2 个答案:

答案 0 :(得分:3)

如果你仔细想想,规模是你倍增的东西。我想让我的物体大10%或大两倍或小30%。它通常不是添加剂操作。所以我会这样做:

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

mesh.scale.x *= 0.9; // to make my mesh 10% smaller

答案 1 :(得分:1)

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

<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 = 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;
});

正如另一个答案中所提到的,您可能会错误地认为您需要添加和减去比例。所以正确的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;
});