Java 沿Path.quadTo bezier曲线查找Y坐标
给定一个X值(或百分比),我需要沿着二次贝塞尔曲线找到点的Y坐标 该曲线是在android中绘制的折线图的一部分,使用以下方法:Java 沿Path.quadTo bezier曲线查找Y坐标,java,android,canvas,android-canvas,computational-geometry,Java,Android,Canvas,Android Canvas,Computational Geometry,给定一个X值(或百分比),我需要沿着二次贝塞尔曲线找到点的Y坐标 该曲线是在android中绘制的折线图的一部分,使用以下方法: Path.quadTo(prev.x,prev.y,(p.x+prev.x)/2,(p.y+prev.y)/2)二次贝塞尔曲线的公式为 x = (1 - t) * (1 - t) * p[0].x + 2 * (1 - t) * t * p[1].x + t * t * p[2].x; y = (1 - t) * (1 - t) * p[0].y + 2 * (1 -
Path.quadTo(prev.x,prev.y,(p.x+prev.x)/2,(p.y+prev.y)/2)代码>二次贝塞尔曲线的公式为
x = (1 - t) * (1 - t) * p[0].x + 2 * (1 - t) * t * p[1].x + t * t * p[2].x;
y = (1 - t) * (1 - t) * p[0].y + 2 * (1 - t) * t * p[1].y + t * t * p[2].y;
…但我只是在HTML画布上测试,似乎并不完全匹配。
它们可能有一个与之稍有不同的自定义实现
你必须在android上进行测试,希望这能让你走上正确的道路
var c=document.getElementById(“c”);
var ctx=c.getContext(“2d”);
函数绘制曲线(p){
ctx.beginPath();
(p[0].x,p[0].y,p[1].x,p[1].y,p[2].x,p[2].y);
ctx.stroke();
ctx.fillStyle=“红色”;
对于(var i=0;i<100;i++){
ctx.beginPath();
t=i/100;
x=(1-t)*(1-t)*p[0].x+2*(1-t)*t*p[1].x+t*t*p[2].x;
y=(1-t)*(1-t)*p[0]。y+2*(1-t)*t*p[1]。y+t*t*p[2]。y;
弧(x,y,1,0,2*Math.PI);
ctx.fill();
}
}
牵引曲线([
{x:10,y:120},
{x:340,y:120},
{x:340,y:20},
])
牵引曲线([
{x:50,y:10},
{x:180,y:150},
{x:240,y:10},
])
我在android上也遇到了同样的情况——quadTo绘制的线不像标准公式那样靠近控制点。我将只使用您的代码,节省自己的时间,使其实现不再神秘化。谢谢