[英]Three.js - Scale model
基本上,如果選中單選按鈕,我希望將網格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;
}
});
我的函數存在的問題是它將值添加到先前添加的值之上。 我正在尋找可以在添加新值之前將其減去的值。
如果您考慮一下,規模就是您要乘以的東西。 我想使我的對象大10%,或兩倍於其大小,或小30%。 它通常不是加法運算。 所以我會做:
mesh.scale.x *= 1.1; // to make my mesh 10% bigger
要么
mesh.scale.x *= 0.9; // to make my mesh 10% smaller
您可以將比例因子附加到單選按鈕元素,如下所示:
<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;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.