【绘制矩形】已知二维平面矩形的对角线两点坐标,如何确定四个点的坐标

3 篇文章 0 订阅

O--------------------------------------------------->X

|

|

|

|

↓Y

在Windows Form中,坐标系的定义如上图所示,有时我们要在窗口中绘制矩形,能够方便得到的是起始点的坐标和终点的坐标,而如何计算四个点的坐标方式也是很多的。

起始点为start, 终点为end, pointLT, pointLB, pointRT, pointRB分别为左上角,左下角,右上角,右下角

方法一:(很复杂不推荐)

将end.X, end.Y 分别与start.X, start.Y作比较,一共四类情况,赋值的时候非常复杂,写代码麻烦

            if (start.X < end.X && start.Y < end.Y)
            {
                /*
                 S.....................
                 * ....................
                 * ....................
                 * ....................E
                 */
                pointLT = start;
                pointLB.X = start.X; pointLB.Y = end.Y;
                pointRB = end;
                pointRT.X = end.X; pointRT.Y = start.Y;
            }
            else if (start.X > end.X && start.Y > end.Y)
            {
                 /*
                 E.....................
                 * ....................
                 * ....................
                 * ....................S
                 */

……

方法二(代码书写方便)

左上角是start与end两者坐标的较小值,利用这个思想确定四点坐标

            pointLT.X = (start.X <= end.X) ? start.X : end.X;
            pointLT.Y = (start.Y <= end.Y) ? start.Y : end.Y;
            
            pointRB.X = (start.X >= end.X) ? start.X : end.X;
            pointRB.Y = (start.Y >= end.Y) ? start.Y : end.Y;
            
            pointRT.X = pointRB.X;
            pointRT.Y = pointLT.Y;


            pointLB.X = pointLT.X;
            pointLB.Y = pointRB.Y;

显然方法二的思路明确,代码清晰,书写方便~


在MATLAB中,如果已知矩形内与边平行的两个,以及矩形四边的边长,可以通过几何关系来确定矩形四个坐标。假设我们有矩形的两个对角线上的A和B,以及矩形的边长分别是w(宽度)和h(高度)。 步骤如下: 1. 确定A和B的位置关系。假设A在矩形内的位置为(x1, y1),B在矩形内的位置为(x2, y2)。 2. 假设A到矩形的一个顶的水平距离为w1,垂直距离为h1;B到矩形另一个顶的水平距离为w2,垂直距离为h2。 3. 由于A和B位于矩形对角线上,所以w1 + w2 应该等于矩形的宽度w,h1 + h2 应该等于矩形的高度h。 4. 通过A和B,我们可以确定矩形的一个顶。例如,如果A在矩形的左上角,则其对角线上的另一个顶(右下角)的坐标可以表示为(x1 + w, y1 - h)。 5. 利用A或B的位置以及矩形的边长信息,可以确定矩形的其他三个顶。 具体的MATLAB代码实现会依赖于A和B的具体位置关系以及矩形边长信息。这里提供一个简化的示例代码: ```matlab % 假设A和B的位置分别是A(x1, y1)和B(x2, y2),矩形的宽度w和高度h已知 x1 = ...; y1 = ...; % A的坐标 x2 = ...; y2 = ...; % B的坐标 w = ...; % 矩形的宽度 h = ...; % 矩形的高度 % 根据A和B的位置确定矩形的一个顶 % 假设A在左上角,B在右下角 if x1 > x2 % A在B的左侧,所以A是左上角 x_top_left = x1; y_top_left = y1; x_bottom_right = x1 + w; y_bottom_right = y2; else % B在A的左侧,所以B是左上角 x_top_left = x2; y_top_left = y2; x_bottom_right = x2 + w; y_bottom_right = y1; end % 根据矩形的边长确定其他两个顶 x_top_right = x_top_left + w; y_top_right = y_top_left; x_bottom_left = x_top_left; y_bottom_left = y_top_left - h; % 输出四个角的坐标 top_left = [x_top_left, y_top_left]; top_right = [x_top_right, y_top_right]; bottom_right = [x_bottom_right, y_bottom_right]; bottom_left = [x_bottom_left, y_bottom_left]; % 显示结果 disp('矩形四个角的坐标:'); disp('左上角:', top_left); disp('右上角:', top_right); disp('右下角:', bottom_right); disp('左下角:', bottom_left); ``` 请根据实际情况调整上述代码中的变量和条件判断,以确保正确地确定矩形四个坐标
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值