Snap.svg从斜率中获得旋转点差

时间:2015-07-21 03:50:27

标签: javascript svg snap.svg

我正在制作动画,我需要让这架飞机沿着给定的路径前进,并且看起来像是在“绕地球”盘旋。 Here is the codePen,你可以看到它非常简单。

Picture

我的问题在于角度,我试图通过计算两个点的斜率并将其转换为度数,在旋转路径时我应该旋转多少。

即使我已经添加了一个epsilon来安全检查各点之间的一致差异以及其他所有安全检查,但是当它接近+ -90度时,它会改变符号,而不是传递到另一个象限120度等

我可以理解这是由formula

引起的

您可以在中间点的控制台中看到这种情况(显示:$('#editAvailability').html('<%= escape_javascript(render :partial => 'editForm') %>'); )。

Console

为了解决这个问题,我使用@availability作为参数重复<%= simple_form_for @availability, method: :put, remote: true do |f| %> ... 。它以正确的值(CodePen here)开始。但它仍然是一个时髦的轮换。

这是代码(我没有发布SVG图像,因为它非常大):

JS

slope, arctangent, degrees

你能帮帮我吗,谢谢你

1 个答案:

答案 0 :(得分:3)

我不确定你所追求的全部效果,如果它纯粹的2d角度,Snap已经内置了(沿点线返回角度),所以不需要太努力...... < / p>

element.getPointAtLength()返回角度alpha,因此可以使用movePoint.alpha ......

下面的相关行,以及其他计算行已删除。

Test

codepen