龙空技术网

已知圆弧求圆心的算法推导,以及ocata编程实现

物联网全栈开发 258

前言:

眼前同学们对“矩阵的坐标怎么求”都比较着重,各位老铁们都想要了解一些“矩阵的坐标怎么求”的相关文章。那么小编在网上搜集了一些关于“矩阵的坐标怎么求””的相关文章,希望朋友们能喜欢,同学们快快来了解一下吧!

今天看到一位网友发的微头条,提到了在CAD软件中大量使用的解析几何题:

已知一个圆弧的起点坐标是(X0, Y0),终点坐标是(XE,YE),

圆弧的圆心角是 α/4(弧度),求圆弧的圆心坐标。

网友提出的问题

我想起了几年前设计眼镜模块化软件时,

也曾经使用了诸如旋转、放缩、投影、融合等图形图像处理算法。

也曾经利用解析几何、向量、矩阵运算等知识深入研究其中的数学理论。

采用 pascal、 actionscript、 php等语言实现算法。

试戴

今天闲来无事,花点时间求解此题,活动一下大脑。

一、旋转矩阵

在笛卡尔坐标系中的某个坐标点,表示为列向量(x,y)',其绕原点旋转得到的新坐标向量。

可以由旋转矩阵乘以原向量得到。

坐标点的旋转

逆时针旋转θ的旋转矩阵为:

旋转矩阵

二、问题解答

假设圆心坐标为(XC,YC)', 以圆心为原点得到的圆弧起点和终点坐标可以表示为:

起点:(X0-XC,Y0-YC)'

终点:(XE-XC, YE-YC)'

终点由起点旋转α/4得到,

采用旋转矩阵表示为:

旋转矩阵表示

定义M(α)

移项整理之后得到:

移项整理之后的表达式

在等式的左右两边同时左乘以[E-M(α)]的逆矩阵,得到:

最终结果

然后就可以通过ocata、python、C语言等的矩阵运算函数或者库就可以轻松算出圆心坐标[XC,YC];

三 、简单示例

示例2222

如上图,起点为(2,0), 终点为(1,1),圆弧的角度为π/2。

在octave的在线工具的,通过矩阵运算,如下:

format longMa=[cos(pi/2) -sin(pi/2); sin(pi/2) cos(pi/2)];Mb=eye(2,2)-Ma;P0=[2;0];PE=[1;1];B=PE-Ma*P0;PC=inv(Mb)*B;

算得PC=[1,0]

标签: #矩阵的坐标怎么求