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

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

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

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

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

网友提出的问题

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

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

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

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

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

试戴

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

一、旋转矩阵

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

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

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

坐标点的旋转

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

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

旋转矩阵

二、问题解答

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

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

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

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

采用旋转矩阵表示为:

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

旋转矩阵表示

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

定义M(α)

移项整理之后得到:

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

移项整理之后的表达式

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

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

最终结果

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

三 、简单示例

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

示例2222

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

在octave的在线工具的https://octave-online.net/,通过矩阵运算,如下:

format long
Ma=[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]

展开阅读全文

页面更新:2024-03-19

标签:圆心   圆弧   笛卡尔   圆心角   算法   在线   解析几何   向量   矩阵   原点   示例   终点   坐标   起点   语言   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top