Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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
Android 画布绘制、贝塞尔曲线、圆弧最高点_Android_Canvas_Path_Curve - Fatal编程技术网

Android 画布绘制、贝塞尔曲线、圆弧最高点

Android 画布绘制、贝塞尔曲线、圆弧最高点,android,canvas,path,curve,Android,Canvas,Path,Curve,我正在努力完成一些数学方面的工作,我有一条贝塞尔曲线,我试图在它的最高峰上画一个圆,当它是一条直的水平线时,很好,但一旦我弯曲这条线(cubicTo)并使用PathMeasure.getPosTan(…),它就会离开最高峰。请参阅下面所附的图片和代码 还有画圆圈的部分 arcPathMeasure.getPosTan(mArcPeakX, positionArray, null) canvas.drawCircle(0f, height.toFloat(), 10f, paint) can

我正在努力完成一些数学方面的工作,我有一条贝塞尔曲线,我试图在它的最高峰上画一个圆,当它是一条直的水平线时,很好,但一旦我弯曲这条线(cubicTo)并使用PathMeasure.getPosTan(…),它就会离开最高峰。请参阅下面所附的图片和代码

还有画圆圈的部分

arcPathMeasure.getPosTan(mArcPeakX, positionArray, null)

canvas.drawCircle(0f, height.toFloat(), 10f, paint)
canvas.drawCircle(positionArray[0],  positionArray[1], 10f, paint)
canvas.drawCircle(width.toFloat(), height.toFloat(), 10f, paint)

我不知道我遗漏了什么数学知识,但一旦直线弯曲,圆圈就会前进,并且不会绘制在圆弧/曲线的顶点上

哦,我的。。。我不知道从哪里开始。但无论如何,我会尝试,或者我会尝试找到一些示例代码,其中有一条曲线,并且在cubicor的每个(x,y)上绘制一个形状,如果你需要一些数学,那么请看,你真的需要数学,在这里。您需要通过查找贝塞尔函数导数的根来找到曲线的最大值。谢天谢地,贝塞尔函数实际上是愚蠢的项和,求导数基本上是零功()。找到导数为零的时间值(注意可能不止一个),基本上就完成了。
arcPathMeasure.getPosTan(mArcPeakX, positionArray, null)

canvas.drawCircle(0f, height.toFloat(), 10f, paint)
canvas.drawCircle(positionArray[0],  positionArray[1], 10f, paint)
canvas.drawCircle(width.toFloat(), height.toFloat(), 10f, paint)