c++ 绕点旋转坐标 实例

x33g5p2x  于2022-03-03 转载在 C/C++  
字(1.1k)|赞(0)|评价(0)|浏览(592)

c++ 一个点绕任点旋转θ度后的坐标

注意,代码中的三角函数都是弧度,不是大家说的角度,需要转弧度进行运算。

插曲:c++ opencv旋转图片:

opencv 旋转_jacke121的专栏-CSDN博客_opencv旋转方向

一个点(x,y)绕任意点(dx,dy)顺时针旋转a度后的坐标

#include <math.h>

#define PI acos(-1)

float angle=80;

float angle_radian=angle*PI/180;
xx= (x - dx)*cos(-angle_radian) - (y - dy)*sin(-angle_radian) + dx ;

yy= (x - dx)*sin(-angle_radian) + (y - dy)*cos(-angle_radian) +dy ;

平面中,一个点(x,y)绕任意点(dx,dy)逆时针旋转a度后的坐标

#include <math.h>

#define PI acos(-1)

float angle=80;

float angle_radian=angle*PI/180;
xx= (x - dx)*cos(-angle_radian) - (y - dy)*sin(-angle_radian) + dx ;

yy= (x - dx)*sin(-angle_radian) + (y - dy)*cos(-angle_radian) +dy ;

代码测试

#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <stdio.h>
#define PI                      3.141592654
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
	int x = 1, y = 2;//旋转的点
	int dx = 1, dy = 1;//被绕着旋转的点
	for (int i = 0; i <= 8; i++)
	{
		//int angle = 45 * i;//逆时针
		int angle = -45 * i;//顺时针
		double xx = (x - dx)*cos(angle * PI / 180) - (y-dy)*sin(angle * PI / 180) + dx;
		double yy = (y-dy)*cos(angle * PI / 180) + (x-dx)*sin(angle * PI / 180) + dy;
		cout << xx <<'\t'<< yy << endl;
	}
	return 0;
}

以上内容转自:

平面中,一个点绕任意点旋转θ度后的坐标(C实现)_kevin_org-CSDN博客_c 点旋转

相关文章

最新文章

更多