#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
#include <cmath>using namespace std;
using namespace cv;vector<Point2d> orig_point;
vector<Point2d> control_point;
double u1 = 0.3;//这两个参数取决于中间两个点的位置
double u2 = 0.7;int main() {//1.四个贝塞尔曲线上的点orig_point.push_back(Point2d(0, 0));orig_point.push_back(Point2d(3, 5));orig_point.push_back(Point2d(7, 5));orig_point.push_back(Point2d(10, 0));Mat P(4, 2, CV_64F);//将点赋值给4*2的矩阵for (int i = 0; i < 4; i++) {P.at<double>(i, 0) = orig_point[i].x;P.at<double>(i, 1) = orig_point[i].y;}cout << "贝塞尔曲线上的四个点分别为:\n" << P << endl;//2.定义一个4*4的U矩阵,每一行对应的是四个贝塞尔曲线上的点参数Mat U = (Mat_ <double>(4, 4) << 0, 0, 0, 1, //对应第一个点,此时u=0u1 * u1 * u1, u1 * u1, u1, 1, //对应第二个点,(u1^3,u1^2,u1,1)u2 * u2 * u2, u2 * u2, u2, 1, 1, 1, 1, 1);//对应第四个点,此时u=1//3.定义好M矩阵,这个是固定的Mat M = (Mat_ <double>(4, 4) << -1, 3, -3, 1, 3, -6, 3, 0, -3, 3, 0, 0, 1, 0, 0, 0);//4.求U*M的逆Mat UM = U * M;//cout << UM.size() << endl;//cout << UM << endl;Mat UM_inv = UM.inv();//5.控制点,因为P=U*M*C,所以控制点C=UM的逆*PMat C;C = UM_inv * P;cout << endl << "求得的控制点为:\n" << C << endl;
}

结果验证,首尾两点坐标一定相同


2021年9月22日 -- add

已知贝塞尔曲线上的点求控制点相关推荐

  1. 分别已知两直线上的两点,求两直线交点

    分别已知两直线上的两点,求两直线交点 求两直线的交点是初中数学的简单问题了,在直角坐标系中直线有很多种表示方式.同时我们知道两点确定一条直线,已知两点坐标自然能求出直线坐标,已知两直线坐标自然能求出两 ...

  2. 小程序转盘抽奖,已知圆心、半径、角度求圆上点的坐标

    因公司的需求,要在小程序语音房内部迭代一个真心话大冒险的功能,也等同于幸运转盘: 业务场景: 发送一个socket,拿到响应的结果,根据返回的数值开始启动幸运转盘,由于转盘上的人数不是固定的,所以要根 ...

  3. 根据贝塞尔曲线上的点反算t值

    这是一个项目中遇到的实际需求.场景是一个智能仓库管理系统,场景里面有直线和曲线构成的环穿轨道.环穿轨道上面会有小车运动,后台推动小车的两个点位A和B,其中A和B都会在轨道上面,前端需要根据这两个推送点 ...

  4. (海伦公式)已知三角形三条边长,求面积

    (海伦公式)已知三角形三条边长,求面积 海伦公式:  S=(△)=√[p(p-a)(p-b)(p-c)]  其中p是三角形的周长的一半p=(a+b+c)/2. ----以下转自百度百科-------- ...

  5. java正方形矩阵_已知一个NxN的矩阵A,求矩阵中所有边长为m的正方形的子矩阵

    已知一个NxN的矩阵A,求矩阵中所有边长为m的正方形的子矩阵内元素的中位数.(m 例子: // m = 3 n = 5 // 01234 ݂         //  0 11357 ݂         ...

  6. Python实现“已知三角形两个直角边,求斜边”

    用Python实现"已知三角形两个直角边,求斜边" 要求:用户输入两个直角边(数值为浮点类型),若非浮点类型,则提示用户,继续输入. 思路:伪代码描述下步骤 1.-input a ...

  7. python已知两条直角边求斜边,Python实现“已知三角形两个直角边,求斜边”

    用Python实现"已知三角形两个直角边,求斜边" 要求:用户输入两个直角边(数值为浮点类型),若非浮点类型,则提示用户,继续输入. 思路:伪代码描述下步骤 1.-input a ...

  8. 二叉树:已知先序和中序求后序,已知中序和后序求先序

    树的三种遍历方式的遍历顺序: 先序遍历:根.左子树.右子树(特点:第一个元素为根) 中序遍历:左子树.根.右子树(特点:根的两边分别为左子树和右子树) 后序遍历:左子树.右子树.根(特点:最后一个元素 ...

  9. java练习题 有50枚硬币,可能包括4种类型:1元,5角,1角,5分。已知总价值为20元。求各种硬币的数量。

    问题 有50枚硬币,可能包括4种类型:1元,5角,1角,5分.已知总价值为20元.求各种硬币的数量. 解决思路 对付这一类的问题,最简单的方式莫过于暴力穷举,就是用四个循环,一个一个试,结果满足要求输 ...

最新文章

  1. 实现主成分分析和白化
  2. html5 规定input域,html5中关于input用法
  3. 利用栈将中缀表达式转化成后缀表达式
  4. vue实现鼠标悬浮 显示全部内容
  5. 【vue】跟着老马学习vue-数据双向绑定
  6. spring mvc 入门配置
  7. [JavaWeb-HTML]HTML标签_图片标签
  8. Codeforces 471 D MUH and Cube Walls
  9. 如何让caffe读取多通道图片(=4)
  10. 卸载程序_Windows 7 如何卸载或删除应用和程序,我教你
  11. 光学软件市场现状研究分析报告-
  12. 网站WEB都有哪些攻击?
  13. 多模态情感分析论文解读——CTFN模型
  14. 从零到一写一个完整的 Compose 版本的天气
  15. uni-app的安装及使用
  16. 如何扩大图片尺寸大小?图片怎么编辑大小尺寸?
  17. Windows下安装PyQt(python3.8+PyQt5)
  18. MVVM框架之avalon学习笔记(1)
  19. linux中的sh脚本语法
  20. 平台篇-八年磨一剑,重新定义 HBase——HBase 2.0阿里云 HBase 解读...

热门文章

  1. Ant-Design-Vue和Icon按需加载方案 - JeecgBoot实战
  2. Linux下安装配置Nexus
  3. JavaScript函数式编程入门经典
  4. 中文文本相似度计算工具集
  5. OpenCV参考手册之Mat类详解
  6. java开发实战经典
  7. SCOM 2012 SP1---安装SCOM 2012 SP1
  8. c#的winform调用外部exe作为子窗体
  9. SQL Server 索引结构及其使用(三)(转)
  10. Azure Services Platform