已知矩形的宽和高以及与x轴夹角,求对边的两条边的中心坐标

目录

问题描述:

解决方案:

编程测试


问题描述:

问题描述:矩形的一个顶点在原点,已知矩形的宽度W以及高度H,以及矩形和X轴方向的夹角角度angle,求离原点较远的两条边的中心坐标点。P(x,y)以及Q(x,y),如下图所示。

解决方案:

求矩形边的中心坐标点,最简单的方法就是将其余三个顶点的坐标全部求出来,只要将两个顶点的坐标点相加除2就是中心点的坐标。Point1和Point3直接利用三角函数求即可。Point2作一条辅助线,找到和point1的关系即可。

x2 + sin(弧度)*h = x1

y1 + cos(弧度)*h = y2

就能得出如下关系

	P.x_ = (2 * cos(angle) * width - sin(angle) * hight) / 2;
	P.y_ = (2 * sin(angle) * width + cos(angle) * hight) / 2;
	Q.x_ = (cos(angle) * width - 2 * sin(angle) * hight) / 2;
	Q.y_ = (sin(angle) * width + 2 * cos(angle) * hight) / 2;

编程测试

设长度和高度都是根号2,角度为45度,将程序计算结果和实际结果对比一下即可。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.141592

typedef struct {
	float x_;
	float y_;
}PointSturuct;

int main() {
	float width = sqrt(2);
	float hight = sqrt(2);
	float angle = 45 * (PI/180); //角度换成弧度制  三角函数入參是弧度值
	PointSturuct P, Q;
	P.x_ = (2 * cos(angle) * width - sin(angle) * hight) / 2;
	P.y_ = (2 * sin(angle) * width + cos(angle) * hight) / 2;
	Q.x_ = (cos(angle) * width - 2 * sin(angle) * hight) / 2;
	Q.y_ = (sin(angle) * width + 2 * cos(angle) * hight) / 2;
	printf("P(x,y) = (%f,%f)\r\n",P.x_,P.y_);
	printf("Q(x,y) = (%f,%f)\r\n",Q.x_,Q.y_);
	//float x = sin(angle);
	//float y = cos(angle);
	//printf("sin(angle) = %f\r\ncos(angle) = %f\r\n", x,y);
    system("pause");
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值