已知贝塞尔曲线上的点求控制点
#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
已知贝塞尔曲线上的点求控制点相关推荐
- 分别已知两直线上的两点,求两直线交点
分别已知两直线上的两点,求两直线交点 求两直线的交点是初中数学的简单问题了,在直角坐标系中直线有很多种表示方式.同时我们知道两点确定一条直线,已知两点坐标自然能求出直线坐标,已知两直线坐标自然能求出两 ...
- 小程序转盘抽奖,已知圆心、半径、角度求圆上点的坐标
因公司的需求,要在小程序语音房内部迭代一个真心话大冒险的功能,也等同于幸运转盘: 业务场景: 发送一个socket,拿到响应的结果,根据返回的数值开始启动幸运转盘,由于转盘上的人数不是固定的,所以要根 ...
- 根据贝塞尔曲线上的点反算t值
这是一个项目中遇到的实际需求.场景是一个智能仓库管理系统,场景里面有直线和曲线构成的环穿轨道.环穿轨道上面会有小车运动,后台推动小车的两个点位A和B,其中A和B都会在轨道上面,前端需要根据这两个推送点 ...
- (海伦公式)已知三角形三条边长,求面积
(海伦公式)已知三角形三条边长,求面积 海伦公式: S=(△)=√[p(p-a)(p-b)(p-c)] 其中p是三角形的周长的一半p=(a+b+c)/2. ----以下转自百度百科-------- ...
- java正方形矩阵_已知一个NxN的矩阵A,求矩阵中所有边长为m的正方形的子矩阵
已知一个NxN的矩阵A,求矩阵中所有边长为m的正方形的子矩阵内元素的中位数.(m 例子: // m = 3 n = 5 // 01234 ݂ // 0 11357 ݂ ...
- Python实现“已知三角形两个直角边,求斜边”
用Python实现"已知三角形两个直角边,求斜边" 要求:用户输入两个直角边(数值为浮点类型),若非浮点类型,则提示用户,继续输入. 思路:伪代码描述下步骤 1.-input a ...
- python已知两条直角边求斜边,Python实现“已知三角形两个直角边,求斜边”
用Python实现"已知三角形两个直角边,求斜边" 要求:用户输入两个直角边(数值为浮点类型),若非浮点类型,则提示用户,继续输入. 思路:伪代码描述下步骤 1.-input a ...
- 二叉树:已知先序和中序求后序,已知中序和后序求先序
树的三种遍历方式的遍历顺序: 先序遍历:根.左子树.右子树(特点:第一个元素为根) 中序遍历:左子树.根.右子树(特点:根的两边分别为左子树和右子树) 后序遍历:左子树.右子树.根(特点:最后一个元素 ...
- java练习题 有50枚硬币,可能包括4种类型:1元,5角,1角,5分。已知总价值为20元。求各种硬币的数量。
问题 有50枚硬币,可能包括4种类型:1元,5角,1角,5分.已知总价值为20元.求各种硬币的数量. 解决思路 对付这一类的问题,最简单的方式莫过于暴力穷举,就是用四个循环,一个一个试,结果满足要求输 ...
最新文章
- 实现主成分分析和白化
- html5 规定input域,html5中关于input用法
- 利用栈将中缀表达式转化成后缀表达式
- vue实现鼠标悬浮 显示全部内容
- 【vue】跟着老马学习vue-数据双向绑定
- spring mvc 入门配置
- [JavaWeb-HTML]HTML标签_图片标签
- Codeforces 471 D MUH and Cube Walls
- 如何让caffe读取多通道图片(=4)
- 卸载程序_Windows 7 如何卸载或删除应用和程序,我教你
- 光学软件市场现状研究分析报告-
- 网站WEB都有哪些攻击?
- 多模态情感分析论文解读——CTFN模型
- 从零到一写一个完整的 Compose 版本的天气
- uni-app的安装及使用
- 如何扩大图片尺寸大小?图片怎么编辑大小尺寸?
- Windows下安装PyQt(python3.8+PyQt5)
- MVVM框架之avalon学习笔记(1)
- linux中的sh脚本语法
- 平台篇-八年磨一剑,重新定义 HBase——HBase 2.0阿里云 HBase 解读...