求助《根据一个原点,计算另一个点旋转N°后 新的坐标》 在线等!速度,谢谢。

51海派 2008-11-11 03:26:56
如题:根据一个原点,计算另一个点旋转N°后 新的坐标 :使用c#写。
...全文
380 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
51海派 2008-11-11
  • 打赏
  • 举报
回复
不好意思 没有找到怎么加分,是在抱歉,下次一定补给你们。
51海派 2008-11-11
  • 打赏
  • 举报
回复
好了 谢谢楼上的两位了。。给分。。
51海派 2008-11-11
  • 打赏
  • 举报
回复
怎么越转 原点与旋转点的距离越来越小啊?
gomoku 2008-11-11
  • 打赏
  • 举报
回复
请问 gomoku
那个原点在那设置那,可以把每步的说明加一下吗 ? 本人有点笨 呵呵。



static PointF Rotate(PointF center, PointF point, float angleInDegree)
{
System.Drawing.Drawing2D.Matrix matrix = new System.Drawing.Drawing2D.Matrix();
matrix.Rotate(angleInDegree); // 构造一个逆时针旋转的矩阵

PointF[] points = { new PointF( point.X - center.X, point.Y - center.Y) }; // 把坐标原点移到'那个原点'那里
matrix.TransformPoints( points ); // 旋转
return new PointF(center.X + points[0].X, center.Y + points[0].Y); // 把坐标原点移回去
}
51海派 2008-11-11
  • 打赏
  • 举报
回复
为什么只能旋转一半就跳回原来的位置了
myh0305 2008-11-11
  • 打赏
  • 举报
回复

// 原点
double ax = 2, ay = 5;
double bx = 10, by = 15;
// 旋转角度
double dblAngle = 30;

double dblLength = Math.Sqrt((by - ay) * (by - ay) + (bx - ax) * (bx - ax));
double k1 = (by - ay) / (bx - ax);
double angle0 = Math.Atan(k1);
dblAngle = angle0 + dblAngle * Math.PI / 180;

double dblNewX = dblLength * Math.Cos(dblAngle) + ax;
double dblNewY = dblLength * Math.Sin(dblAngle) + ay;

纯粹的数学三角知识。。。
51海派 2008-11-11
  • 打赏
  • 举报
回复
对了你是不是用的矩阵变化。。。
51海派 2008-11-11
  • 打赏
  • 举报
回复
请问 gomoku
那个原点在那设置那,可以把每步的说明加一下吗 ? 本人有点笨 呵呵。
gomoku 2008-11-11
  • 打赏
  • 举报
回复

/ X'\ / cos(N) -sin(N) \ / X \
| | = | | | |
\ Y'/ \ sin(N) cos(N) / \ Y /



static PointF Rotate(PointF point, float angleInDegree)
{
System.Drawing.Drawing2D.Matrix matrix = new System.Drawing.Drawing2D.Matrix();
matrix.Rotate(angleInDegree);

PointF[] points = { point };
matrix.TransformPoints( points );
return points[0];
}

public void Test()
{
PointF point = new PointF(1, 0);
PointF p1 = Rotate( point, 45 ); // p1 = {0.7071, 0.7071}
PointF p2 = Rotate( point, 60 ); // p2 = {0.5000, 0.8660}
}

51海派 2008-11-11
  • 打赏
  • 举报
回复
可以解决的话给加分啊!!!! 谢谢速度啊。。。。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧