输入N个点的坐标,由程序判断该N个点是否能构成一个凸多边形。(VB)

这篇博客介绍了一种使用VB编写的方法,通过输入N个点的坐标来判断这些点是否能构成一个凸多边形。程序利用直线方程和点的位置关系,通过计算每个点在直线方程中的值来确定点的位置,进而判断是否为凸多边形。如果所有点在同一侧,则可能构成凸多边形,否则不能。
摘要由CSDN通过智能技术生成

输入N个点的坐标,由程序判断该N个点是否能构成一个凸多边形。

解题思路:

用两点式推导直线一般方程(设已知的两点坐标分别为(x1,y1),(x2,y2),得x*(y1-y2)-y*(x1-x2)+(x1-x2)*y2-x1*(y1-y2)=0,令a=y1-y2,b=x1-x2,c=(x1-x2)*y2-x1*(y1-y2)。即ax+by+c=0。

对于任一条直线ax+by+c=0 (a,b不同时为0),则其余非构成直线的点的坐标(x,y)代入直线方程,若ax+by+c>0,则该点在直线右侧;若ax+by+c<0,则点在直线左侧;若ax+by+c=0,则在直线上。

例:有一直线5x-6y+3=0,一点(5,0)代入直线方程,则方程左式>0所以点(5,0)在直线右侧。

程序中用set(n,2)来记录各点坐标,顺时针或逆时针依次输入.用total(n)来记录坐标在直线方程中的值.用s和m分别记录点代入方程值正或负的点的个数.若是凸多边形,则应全为正或全为负,即s>0和m>0不同时成立.若是凹多边形,则s>0和m>0同时成立.而其中若s=0和m=0同时成立,则不能构成多边形.

以下为程序清单:
DEFINT A-Z
DO
INPUT "please input n (n>2)"; n    '输入N
LOOP UNTIL n > 2
DIM set(n, 2): DIM total(n)        '定义数组
FOR i = 1 TO n
PRINT "please input n("; i; ") set:"
INPUT "(x,y)"; set(i, 1), set(i, 2) '用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值