qt - creating a curved path using N points
我正在开发一个模拟器 gui,其中用户单击地图的不同点,程序将这些点相互连接,但是连接应该以某种方式弯曲(但最好曲线应该从给定点通过)我找不到合适的方法来实现这一点。
一个我想不通的类似解决方案
我见过类似的问题,通常使用
任何帮助将不胜感激,
提前谢谢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | void Beziertest::Bezier2D(QList<QPoint> points) { QImage area(600,700,QImage::Format_RGB32); int n=points.length()-1; for(double u = 0.0 ; u <= 1.0 ; u += 0.001) { //calculate x coordinate double xu=0.0; for (int i = n; i >= 0; i--) { xu+=points[i].x()*((factorial(n)/(factorial(i)*factorial((n-i))))*pow(u,i)*pow((1-u),(n-i))); } //calculate y coordinate double yu=0.0; for (int i = n; i >= 0; i--) { yu+=points[i].y()*((factorial(n)/(factorial(i)*factorial((n-i))))*pow(u,i)*pow((1-u),(n-i))); } area.setPixel((int)xu , (int)yu , deger); setPixmap(QPixmap::fromImage(res));//set image to label } } |
三次B??zier 曲线由4 个点组成:Start、End、Control1 和Control2。根据两个控制点,曲线可以具有不同的形状。由于您没有控制点,您应该以某种方式计算它们。
如果您只知道曲线上的起点、终点和另一个点,这很好地说明了如何计算控制点。在您的情况下,曲线上的点可能是起点和终点之间的中点。