matlab 三角形区域,matlab在20*20的区域里随机产生三个点,并以这三个点为顶点构成三角形,在此三角形区域里随机生成一点,...

共回答了16个问题采纳率:93.8%

基本解决了你的问题.

思路是这样的

首先生成3*2个0~20的随机数,以此为坐标建立三角形(这里假设三个随机点共线的概率是0),然后随机生成要求节点P在该三角形中的面积坐标,最后通过求解方程组,求解节点P坐标.代码如下,其中x0,y0为要求解的P点坐标

close all

xy=20*rand(3,2);

xy(4,:)=xy(1,:);

figure

axis([0,20,0,20])

hold on

plot(xy(:,1),xy(:,2));

A=zeros(1,3); %三角形面积坐标,要保证三个坐标之和为1

A(1)=rand();

A(2)=rand()*(1-A(1));

A(3)=1-A(1)-A(2);

%由上述面积坐标建立方程组求解节点P

x1=xy(1,1);x2=xy(2,1);x3=xy(3,1);

y1=xy(1,2);y2=xy(2,2);y3=xy(3,2);

s=sign((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1));%原三角形的转向

Area=s*((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1));%原三角形面积

%构造方程组左端项

syms x0 y0 L1 L2 L3

L1=s*((x2-x0)*(y3-y0)-(y2-y0)*(x3-x0));%三角形PJK面积

L2=s*((x0-x1)*(y3-y1)-(y0-y1)*(x3-x1));%三角形PIK面积

%%L3=s*((x2-x1)*(y0-y1)-(y2-y1)*(x0-x1));%三角形PIJ面积

eq1=[char(L1),'=',num2str(Area*A(1))];

eq2=[char(L2),'=',num2str(Area*A(2))];

[x0,y0]=solve(eq1,eq2,'x0','y0');

x0=double(x0);y0=double(y0);

plot(x0,y0,'r*')

1年前

5

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值