【问题标题】:dynamically move arc (canvas)动态移动弧(画布)
【发布时间】:2014-07-21 03:07:56
【问题描述】:

在弧(Canvas html)上工作我已经使用 Canvas 创建了弧现在我想将弧从 0 移动到 100% 我已经创建了变量名称调用 linevalue=“0”如果我输入的线值为 40% 它有如果我将值输入为 20%,则要再次相应地移动,它必须下降。

我在 myCurve() 中添加了 linevalue。

但我仍然没有得到结果

谁能推荐我这个

var canvas = document.getElementById('myCanvas');
 var context = canvas.getContext('2d');  
function myCurve(x,y,linevalue){  
 context.translate(x,y);
 context.beginPath();
 context.moveTo(0,0,linevalue);
 context.quadraticCurveTo(85,18,120,0);
 context.lineWidth = 2;
 context.strokeStyle = 'Orange';
 context.stroke();
 context.translate(-x,-y);
} 

这是我在小提琴中的全部代码

Fiddle Link

提前致谢 马哈迪文

【问题讨论】:

    标签: jquery html canvas html5-canvas


    【解决方案1】:

    看起来您的项目严重依赖于一些简单的三角函数。所以是时候复习一下你的三角函数了。

    二次曲线的深度由它的control point决定。

    以下是数学计算控制点的方法:

    • 从二次曲线起点和终点之间的假想线开始(称为 lineSE)。

    • 使用 Math.atan2 计算 lineSE 的角度。

    • 使用线性插值计算 lineSE 的中点。

    • 您的四曲线控制点位于中点与 lineSE 相切的直线上。切线角度为 lineSE 角度 + Math.PI/2。

    • 控制点越接近 lineSE,二次曲线变得越浅。在 0% 时,曲线是平的——它变成了 lineSE。

    • 您的设计决定了弧线的大小必须为 100%,但您的控制点将始终将弧线的大小设置为您确定的任何百分比。

    【讨论】:

    • 嗨@mar​​kE你能帮我解决这个问题吗?我很挣扎,我没有得到结果
    • 您似乎在苦苦挣扎,因为您需要研究使您的项目有效的数学。查看有关三角学和几何学的快速在线教程。当您有这种理解时,我上面的回答应该会有所帮助。祝您学习和项目顺利!
    • 嗨,markE 我试过阅读三角函数,但说真的,直到现在我什么都没得到,请你帮我看看
    • 这是我在代码中使用的答案。但坦率地说,如果您还没有学习一些基本的三角学和几何学,那么它可能与您无关:jsfiddle.net/m1erickson/ExcC8
    • hi markE 非常感谢你,我会尝试在我的项目中应用代码来上下移动曲线
    猜你喜欢
    • 2011-11-19
    • 1970-01-01
    • 2012-01-22
    • 2014-02-27
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    相关资源
    最近更新 更多