我在2D中有三个点,我想绘制一条穿过它们的二次贝塞尔曲线.如何计算中间控制点(x1和y1quadTo一样)?我知道大学的线性代数但需要一些简单的帮助.
如何计算中间控制点以使曲线也通过它?
我正在d3.js中创建一个折线图,如下所示:
var line = d3.svg.line()
.interpolate("basis")
.x(function(d) { return x(d.date); })
.y(function(d) { return y(d.temperature); });
Run Code Online (Sandbox Code Playgroud)
然后我想在这些行数据点上加点:
var points = svg.selectAll(".point")
.data(cities1[0].values)
.enter().append("svg:circle")
.attr("stroke", "black")
.attr("fill", function(d, i) { return "black" })
.attr("cx", function(d, i) { return x(d.date) })
.attr("cy", function(d, i) { return y(d.temperature) })
.attr("r", function(d, i) { return 3 });
Run Code Online (Sandbox Code Playgroud)
结果不是我所期望的:

然后我改变插值("基础")到插值("基数")并获得我想要的东西:

为什么我的基础错误?我怎么能用基础绘制准确的分数呢?
编辑:类似(未答复)的问题.看看这个jsfiddle.它仅在将插值从基础更改为基数(或其他)模式时才有效.但Cardinal有一个问题,它不尊重图的最大高度.我正在寻找的是解释为什么一些插值模式阻止将点放在正确的位置(以及为什么基数不尊重最大高度).