【发布时间】:2015-07-14 08:02:38
【问题描述】:
我正在使用 javascript 和画布绘制数学设计的刻度(用于测量扭矩,它包括牛顿米和英尺磅)。我一直在使用三角法定位我的刻度,并使用arc 绘制弧线,很自然。当他们需要排队时,问题就来了,但出现了一些奇怪的失真。然后我画了一个非常大的圆圈并将其与 GIMP 中的圆形选择进行比较,结果出现了变形。这些圆在圆周围每 45 度是一致的,但在这些节点之间,画布绘制的圆向外偏离,就像一个八边形,可以向外圆得太远而无法近似圆。
为什么会出现这些扭曲?如何在画布上绘制一个真正的圆形?
这是我用来生成扭曲圆圈的代码。
<!DOCTYPE html>
<html>
<body>
<canvas width=8000 height=8000 id='myCanvas'></canvas>
<script>
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
context.beginPath();
context.arc(4000, 4000, 3200, 0, Math.PI*2, false);
context.lineWidth = 1;
context.strokeStyle = '#ff0000';
context.lineCap = 'square';
context.stroke();
</script>
</body>
</html>
这可能不是最小的,我不知道context.lineCap 的相关性,但它是它所基于的代码的遗迹。
以下截图显示了 GIMP 绘制的圆和 Chrome 绘制的圆的区别
【问题讨论】:
-
你有示例代码吗?
-
@JonSaw 当然。我将添加用于生成我的圈子的代码。
-
在 Safari (8.0.6)、Chrome (43.0.2357.132) 和 Firefox (36.0.4) 上运行您的代码——在我的身上看起来不错。 JS斌here。只是出于好奇,您使用的是什么浏览器?
-
Chrome 42.0.2311.135
-
也许我对平滑圆的定义可能与您的不同。如果可以的话,也许是您想要实现的目标的屏幕截图?
标签: javascript html canvas