Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 沿Path.quadTo bezier曲线查找Y坐标_Java_Android_Canvas_Android Canvas_Computational Geometry - Fatal编程技术网

Java 沿Path.quadTo bezier曲线查找Y坐标

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 -

给定一个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 - 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绘制的线不像标准公式那样靠近控制点。我将只使用您的代码,节省自己的时间,使其实现不再神秘化。谢谢