首页 > 编程语言 >【C#】对一个坐标点按照一个中心进行旋转

【C#】对一个坐标点按照一个中心进行旋转

时间:2024-08-28 08:56:49浏览次数:10  
标签:angleHude C# double 旋转 originalPoint 坐标 centerPoint Math

/// <summary>
/// 对一个坐标点按照一个中心进行旋转 
/// </summary>
/// <param name="x">坐标x</param>
/// <param name="y">坐标y</param>
/// <param name="angle">旋转角度</param>
/// <param name="tmpX">返回坐标x</param>
/// <param name="tmpY">返回坐标y</param>
/// <param name="centerX">中心点x(默认0)</param>
/// <param name="centerY">中心点y(默认0)</param>
public static void RotateCenter(double x, double y, double angle, out double tmpX, out double tmpY, double centerX = 0, double centerY = 0)
{
    tmpX = 0;
    tmpY = 0;
    try
    {
        double angleHude = angle * Math.PI / 180;/*角度变成弧度*/
        double x1 = (x - centerX) * Math.Cos(angleHude) + (y - centerY) * Math.Sin(angleHude) + centerX;
        double y1 = -(x - centerX) * Math.Sin(angleHude) + (y - centerY) * Math.Cos(angleHude) + centerY;
        tmpX = x1;
        tmpY = y1;
    }
    catch (Exception ex)
    {
       
    }
   
}

/// <summary>
/// 对一个坐标点按照一个中心进行旋转
/// </summary>
/// <param name="originalPoint">原坐标</param>
/// <param name="angle">旋转角度</param>
/// <param name="centerPoint">中心坐标</param>
/// <returns></returns>
public static Point RotateCenter(Point originalPoint, double angle, Point centerPoint)
{
    Point tmpPoint = new Point(0,0);
    try
    {
        double angleHude = angle * Math.PI / 180;/*角度变成弧度*/
        double x1 = (originalPoint.X - centerPoint.X) * Math.Cos(angleHude) + (originalPoint.Y - centerPoint.Y) * Math.Sin(angleHude) + centerPoint.X;
        double y1 = -(originalPoint.X - centerPoint.X) * Math.Sin(angleHude) + (originalPoint.Y - centerPoint.Y) * Math.Cos(angleHude) + centerPoint.Y;
        tmpPoint.X = (int)x1;
        tmpPoint.Y = (int)y1;
    }
    catch (Exception ex)
    {
        
    }
    return tmpPoint;
}

标签:angleHude,C#,double,旋转,originalPoint,坐标,centerPoint,Math
From: https://www.cnblogs.com/qiutian-hao/p/18383885

相关文章

  • 【C#】Bitmap图像实现背景透明
    ///<summary>///背景透明化///</summary>///<paramname="img">原图</param>///<returns></returns>publicstaticBitmapConverImageBackTransparent(Bitmapimg){Bitmapbg=newBitmap(img.Width,img.Height);......
  • 南沙C++陈老师讲题:1078:求分数序列和
    ​【题目描述】【输入】输入有一行,包含一个正整数n(n≤30)n(n≤30)。【输出】输出有一行,包含一个浮点数,表示分数序列前nn项的和,精确到小数点后44位。【输入样例】2【输出样例】3.5000#include<iostream>#include<stdio.h>usingnamespacestd;intmain()......
  • 使用Navicat导入
    启动小皮中的mysql服务和apache2、找到小皮的这个目录,在文件地址栏输入cmd,进入命令行 3、在命令行中输入完整命令:mysqldump-h192.168.0.156-uroot-pkucun>123.sql其中192.168.0.156是我的ip地址,root是用户名,kucun是我的数据库名。 4、回到文件,我们可......
  • C:回调函数的介绍-学习笔记
    前言:本篇文章我们将继续指针相关知识:回调函数希望大家在看完后能够有所收获!回调函数 定义与概念回调函数是一个通过指针调用的函数。如果把函数指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数,回调函数不是有该函数的实现方......
  • TypeScript 中的类型注解:代码的“说明书”
    ......
  • TypeScript 泛型:编写可复用代码的利器
    ......
  • 数据结构链表(C语言版)
    链表定义链表是一种常见的基础数据结构,它由一系列节点(Node)组成,每个节点包含数据域和指向列表中下一个节点的指针(在双向链表中还会有指向前一个节点的指针)。链表的一个优点是它允许有效地在序列中插入和删除元素。节点(Node)一个节点通常包含两个部分:数据域(DataField):存储实......
  • CSS调试 (1)
    https://www.bilibili.com/video/BV1KM4y1G7EF/内容转自【浏览器调试工具精讲】ChromeDevTools精讲,前端必看!     橙色:外边距蓝色:本体。 绿色:内边距。  CTRL+F可以搜索 输入某一个string或者css,section#someidxpath: //section/p  ......
  • 多线程四-Lock锁及其原理分析
    JUC是什么可能有些不太关注底层代码,会不太理解juc是啥,比如之前的我,只知道是跟并发相关。juc其实就是并发包路径的缩写,java.util.concurrent.而Lock是其中锁的接口,有比如重入锁,读锁,写锁等一些具体实现。这部分源码理解起来还是有些难度,暂时先理解其大概思路,对于实现有一个印象,比......
  • prescan中的Road Segment以及常见路面摩擦系数
    参考文章:轮胎摩擦系数-汽车之家(autohome.com.cn)一、点击Settings->Preferences->RoadSegments进入1、Road Segment参数描述单位Lanewidth车道的默认宽度。[m]Numberoflanes一个路段的默认车道数。[-]Asphalttype默认的沥青类型{标准的沥......