【发布时间】:2016-01-18 06:38:23
【问题描述】:
我编写了一个计算机程序来支持我的微积分知识。可以看网页here
接下来我要做的是在用户将鼠标悬停在曲线上时显示曲线的切线。
当这种情况发生时,我确切地知道鼠标的坐标,我可以得到导数,在这种情况下是 2x -2 所以如果点在 (1, 1) 那么梯度就是 0。
如果我是用笔和纸画的,那么我会将方程重新排列为 y2-y1 = m(x2 -x1)。
虽然我不完全确定如何使用代码来做到这一点。
我尝试获取 y 截距和 x 截距,但切线看起来不对:
function getYIntercept(vertex, slope) {
return vertex.y - (slope * vertex.x);
}
const yIntercept = getYIntercept(point, gradient);
const xIntercept = - yIntercept / (gradient);
g.append('line')
.style('stroke', 'red')
.attr('class', 'tangent')
.attr('x1', xScale(point.x))
.attr('y1', yScale(point.y))
.attr('x2', xScale(xIntercept))
.attr('y2', yScale(yIntercept));
};
根据我掌握的信息,我如何更好地绘制这条线?
【问题讨论】:
-
d f(x) / dx = 2*x - 2如果我没记错的话。不是2x。 -
@BitTickler 你是对的,我已经更新了这个问题,但这只是我的一个错字。代码运行正常
-
在d3geometry.com/functions 网站上,您似乎已经缩小了整个代码...您能给我一个小提琴吗?
-
对于 (1,1) -> x = 1, m = 2 * 1 - 2 = 0,而不是 2 ;)(您可能还想更正)
-
This 可能会有所帮助。