为什么使用余弦来计算x值并正弦弧值?
-
28-09-2019 - |
题
我试图理解这个raphael.js演示上的数学:
结帐扇区方法:
function sector(cx, cy, r, startAngle, endAngle, params) {
var x1 = cx + r * Math.cos(-startAngle * rad),
x2 = cx + r * Math.cos(-endAngle * rad),
y1 = cy + r * Math.sin(-startAngle * rad),
y2 = cy + r * Math.sin(-endAngle * rad);
return paper.path(["M", cx, cy, "L", x1, y1, "A", r, r, 0, +(endAngle - startAngle > 180), 0, x2, y2, "z"]).attr(params);
}
这是实际的演示:http://raphaeljs.com/pie.html
我的数学有点生锈,我正在尝试理解扇区函数 - 鉴于起始人和危害参数(每个启动点和终点值在0和360之间绘制ARC),为什么此函数起作用?
解决方案
这完全取决于您如何对待 startAngle
和 endAngle
. 。看来这将它们视为从水平到右侧(即0的角度向东)开始,然后沿钟形(因此,一个45度的角度指向东南。
通常在数学中,我们会考虑从水平到右侧开始的角度,但是逆时针增加...但是,如果您要求非数学家绘制一个角度,他们可能会从垂直上(即北)进行顺时针方向增加。这看起来像是混合的:)这里没有真正的“错误”或“正确”的答案 - 这都是定义问题。
由于图片很受欢迎,这是我描述的三个系统,每个系统都假设该行长度很长 r
:
正常数学:X轴的逆时针
(来源: Arachsys.com)
要求街上的男人绘制一个角度(顺时针从Y轴循环)
此代码使用的角度(x轴顺时针)
其他提示
因为与中心(CX,CY)和半径r的圆周的任意点具有以下坐标(它直接遵循COS和SIN几何定义 - 相应的心理和斜边的长度之间的比率):
x = cx + R*cos(a)
y = cy + R*sin(a) for 0 <= a < 2π
因此,将角度a设置限制A您可以定义任意弧。
如果您将0°作为水平升高,x增加,垂直升高,垂直升高,y升高,则为:
cos(0) = 1
sin(0) = 0
cos(90) = 0
sin(90) = 1
您可以通过将X值乘以余弦来改变X值,并通过将其乘以正弦来改变Y值。
不隶属于 StackOverflow