坐标点计算

yuchongjike 2009-01-07 01:03:38
圆内正切三角形坐标点计算.
已知圆心位置(x,y),半径(r),如何計算出三角形的各個坐標點?


或者:如何根据角度计算坐标?
...全文
129 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lunat 2009-01-07
  • 打赏
  • 举报
回复
圆内正切三角形是什么东东?

public Point FindPoint(double a)
{
return new Point(x+r*Math.Cos(a),y+r*Math.Sin(a));
}
asksomeone 2009-01-07
  • 打赏
  • 举报
回复
/// <summary>
/// 通过点坐标算得到角度
/// </summary>
/// <param name="xy">图边上的某点坐标</param>
/// <param name="origin">原心坐标</param>
/// <returns></returns>
private float XYToDegrees(Point xy, Point origin)
{
double angle = 0.0;

if (xy.Y < origin.Y)
{
if (xy.X > origin.X)
{
angle = (double)(xy.X - origin.X) / (double)(origin.Y - xy.Y);
angle = Math.Atan(angle);
angle = 90.0 - angle * 180.0 / Math.PI;
}
else if (xy.X < origin.X)
{
angle = (double)(origin.X - xy.X) / (double)(origin.Y - xy.Y);
angle = Math.Atan(-angle);
angle = 90.0 - angle * 180.0 / Math.PI;
}
}
else if (xy.Y > origin.Y)
{
if (xy.X > origin.X)
{
angle = (double)(xy.X - origin.X) / (double)(xy.Y - origin.Y);
angle = Math.Atan(-angle);
angle = 270.0 - angle * 180.0 / Math.PI;
}
else if (xy.X < origin.X)
{
angle = (double)(origin.X - xy.X) / (double)(xy.Y - origin.Y);
angle = Math.Atan(angle);
angle = 270.0 - angle * 180.0 / Math.PI;
}
}

if (angle > 180) angle -= 360; //Optional. Keeps values between -180 and 180
return (float)angle;
}

/// <summary>
/// 通过点坐标计算得到新的坐标
/// </summary>
/// <param name="center">以哪一点为坐标原点</param>
/// <param name="point">转前的坐标</param>
/// <param name="angleInDegree">转的角度</param>
/// <returns></returns>
public static Point 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); // 旋转
int x = (int)(center.X + points[0].X);
int y = (int)(center.Y + points[0].Y);
return new Point(x, y); // 把坐标原点移回去
}
我工程里用的,你参考一下

111,130

社区成员

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

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

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