/**
* 原点坐标
* @property {number} x
* @property {number} y
*/
export interface OriginPoint{
x: number;
y: number;
}
/**
* 已知某一点坐标,旋转角度,长度,求另一点坐标
* @param originPoint 原点坐标
* @param {number} degree 旋转角度
* @param {number} len 长度
* @return {OriginPoint} 另一点坐标
*/
export const calculateCoordinatePoint = (originPoint: OriginPoint, degree: number, len: number): OriginPoint => {
let rotate: number = (degree - 90 + 360) % 360; //这里是因为一开始以y轴下方为0度的
let point: OriginPoint = {
x: len,
y: 0
};
//计算某一点旋转后的坐标点,这里假设传入的点为原点
let relativeOriginPoint: OriginPoint = calculateRotate(point, rotate);
//计算相对坐标系的坐标
return calculateCoordinateRelativePoint(originPoint, relativeOriginPoint);
};
/**
* 计算某一点旋转后的坐标点
* @param {OriginPoint} point 原点坐标
* @param {number} degree 旋转角度
* @return {OriginPoint}
*/
export const calculateRotate = (point: OriginPoint, degree: number): OriginPoint => {
let x: number = point.x * Math.cos(degree * Math.PI / 180) + point.y * Math.sin(degree * Math.PI / 180);
let y: number = -point.x * Math.sin(degree * Math.PI / 180) + point.y * Math.cos(degree * Math.PI / 180);
return {
x: Math.round(x * 100) / 100,
y: Math.round(y * 100) / 100
};
};
/**
* 计算相对坐标系的坐标
* @param {OriginPoint} origin 原点坐标
* @param {OriginPoint} relativeOriginPoint 相对原点坐标
*/
export const calculateCoordinateRelativePoint = (origin, relativeOriginPoint): OriginPoint => {
let x = relativeOriginPoint.x + origin.x;
let y = relativeOriginPoint.y + origin.y;
return {
x: Math.round(x * 100) / 100,
y: Math.round(y * 100) / 100
};
};
js屏幕坐标转换
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- ScreenPointToLocalPointInRectangle public static bool Scr...
- 这几天一直忙着整百度地图, 这个项目主要是完全模仿摩拜,ofo 等一类的共享单车类, 遇到过的一些坑点, 百度一...
- 一直没太搞懂这个方法,但是最近又要使用,网上又查找不到相关的资料。 官方文档感觉根本没描述清楚,只有自己慢慢尝试。...
- 博客对Unity内坐标系的转换和API进行一个总结和原理推测解析 Unity内的坐标系组成 世界坐标 将游戏内的游...