gpt4 book ai didi

javascript - 动力学.js : Rotating image on touch

转载 作者:行者123 更新时间:2023-12-02 18:59:28 27 4
gpt4 key购买 nike

我有这个 fiddle :

http://jsfiddle.net/WDjpx/2/

图像旋转不正确。我使用的代码是:

var stage = new Kinetic.Stage({
container: 'd',
width: 300,
height: 300
});

var layer = new Kinetic.Layer();
var isDragging = false;
var refRotation = null;

var rect = new Kinetic.Rect({
x: 150,
y: 150,
width: 100,
height: 100,
fill: 'green',
stroke: 'black',
strokeWidth: 4,
offset: [50, 50],
dragOnTop: true,
draggable: true,
dragBoundFunc: function (pos) {

var xd = 150 - pos.x ;
var yd = 150 - pos.y ;
var theta = Math.atan2(yd, xd);
var deg = theta * 180 / Math.PI;

if (!isDragging) {
isDragging = true;
refRotation = deg;
} else {
var rotate = deg - refRotation;
rect.setRotationDeg(deg);
}

return {
x: this.getAbsolutePosition().x,
y: this.getAbsolutePosition().y
}
}
});

图层.add(矩形);stage.add(层);

有人知道我的数学出了什么问题吗???

--- 编辑 ---

我想要的新东西: http://jsfiddle.net/zk9cn/

最佳答案

不知道Math.atan2,但似乎x和y的计算对我来说不正确。我会从中心扣除位置,而不是从位置扣除中心。 http://jsfiddle.net/bighostkim/qZDcg/

    var x = 150 - pos.x;
var y = 150 - pos.y;
var radian = Math.PI + Math.atan(y/x);
this.setRotation(radian);

另一件事,我还看到你的变量没有被使用; isDragging、refRotate 和旋转。

-----编辑----

如果你想通过拾取 Angular 来旋转矩形,可以使用以下代码。当你拾取 Angular 点时,按中心位置计算的度数已经是45。这就是为什么你不能正确拾取 Angular 点。调整45看起来是对的,但是当你拿起直线时,又会出错。除非是故意的,否则您的要求似乎有缺陷。 http://jsfiddle.net/bighostkim/7Q5Hd/

    var pos = stage.getMousePosition();
var xd = 150 - pos.x ;
var yd = 150 - pos.y ;
var theta = Math.atan2(yd, xd);
var degree = theta / (Math.PI / 180) - 45;
this.setRotationDeg(degree);

关于javascript - 动力学.js : Rotating image on touch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14949628/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com