Mva.218 2021-12-23 22:31 采纳率: 0%
浏览 16

Matlab几何问题

对于一个凸多边形,怎么求出他的每个内角(不是内角和),或者怎么找出某一个顶点的两个邻点?

  • 写回答

1条回答 默认 最新

  • 熊太二 2021-12-24 01:44
    关注

    我理解的题意是从一张图上面读取每个内角的角度,所以我就利用matlab中的ginput函数获取坐标,求边长,然后利用三边长求角度的公式求出夹角,将角度在坐标后面标出来。获取每个内角的话可以对每一个角重复一次操作。
    代码如下,将imread('五边形.png')中的名称改成绝对地址或者改成matla路径下的相对地址就可运行。

    close all;
    clear; clc;
    pic=imread('五边形.png');
    
    I=imshow(pic);%显示图片
    
    loc_points=zeros(3,2);%设一个三行两列的全零矩阵
    
    %[x,y]=getpts;
    for i=1:1:3%循环三次,分别获取三个点的坐标
        
    hold on;  
    [x, y]=ginput(1);
    
    hold on;
    plot(x,y,'r.')%将点在其中标记出来
    
    loc_points(i,1) = x;
    loc_points(i,2) = y;%将坐标存入数组
    
    str=['  X:' num2str(x') ', Y:' num2str(y')];
    text(x,y,cellstr(str))
    
    end
    %计算三边长
    a=sqrt((loc_points(1,1)-loc_points(2,1))^2+(loc_points(1,2)-loc_points(2,2))^2)
    b=sqrt((loc_points(2,1)-loc_points(3,1))^2+(loc_points(2,2)-loc_points(3,2))^2)
    c=sqrt((loc_points(1,1)-loc_points(3,1))^2+(loc_points(1,2)-loc_points(3,2))^2)
    %求夹角的余弦值
    cosC=(b^2+a^2-c^2)/(2*b*a)
    sigma3=acos(cosC)/pi*180
    %将角度标在点坐标的后面
    str=[', \alpha:' num2str(sigma3'),'\circ'];
    text(loc_points(2,1)+100,loc_points(2,2),cellstr(str))
    

    结果就是下面这张图的样子

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月23日