javascript - 在 Canvas 上绘制三 Angular 肌曲线

标签 javascript html5-canvas curves

https://jsfiddle.net/prew217o/

正如您所看到的,我尝试将 deltoid 公式转换为代码,但为什么它不起作用?我想知道我做错了什么,因为公式与维基百科文章中的公式完全相同。

const ctx = document.getElementById("myCanvas").getContext("2d");
ctx.translate(150, 75);
var t = 0;
var a = 100;
var b = 80;

function y(t) { 
    return (b-a) * Math.cos(t) + Math.acos(((b-a) / a) * t);
}

function x(t) { 
    return (b-a) * Math.sin(t) - Math.asin(((b-a) / a) * t);
}
var nx = 0;
var ny = 0;

function animate() {
    t += 0.1;

  ctx.beginPath();
  ctx.moveTo(nx, ny);
  ctx.lineTo(x(t), y(t));
  ctx.stroke();

    nx = x(t);
  ny = y(t);
  console.log(ny)
  requestAnimationFrame(animate);
}
animate();

最佳答案

您使用的是 arcsinarccos,而不是 a * sina * cos。像这样更改代码以获得实际上看起来像三 Angular 肌曲线的曲线:

var a = 20;
var b = 3 * a;

function x(t) { 
    return (b-a) * Math.cos(t) + a * Math.cos(((b-a) / a) * t);
}

function y(t) { 
    return (b-a) * Math.sin(t) - a * Math.sin(((b-a) / a) * t);
}

链接到fiddle

PS:维基百科文章使用 b = 3 * a。 我在我的 fiddle 中使用了相同的内容。

关于javascript - 在 Canvas 上绘制三 Angular 肌曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50250093/

相关文章:

javascript - Canvas - Canvas 保存为图像后,橡皮擦在 Canvas 上绘制黑线

python - 如何将文本转换为路径?

machine-learning - 高偏差或方差? - SVM 和奇怪的学习曲线

c++ - 使用 vector 中的一组点绘制贝塞尔曲线

javascript - 如何从一系列文本区域(用户输入)中获取平均数?

javascript - 更改 ng-model 时选择不更新

javascript - 可从图像叠加层访问输入

javascript - 使用 HTML5 Canvas 进行图像处理和纹理映射?

javascript - 我想沿着特定路径制作对象的动画

javascript - 在客户端使用 Mailgun RestFUL