坐标点计算 圆内正切三角形坐标点计算.已知圆心位置(x,y),半径(r),如何計算出三角形的各個坐標點?或者:如何根据角度计算坐标? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /// <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); // 把坐标原点移回去 }我工程里用的,你参考一下 圆内正切三角形是什么东东?public Point FindPoint(double a){return new Point(x+r*Math.Cos(a),y+r*Math.Sin(a));} RDLC报表能绑定单个对象作为数据源吗? 怎么将这种数据写个循环。。。。。。。。。。。 怎么把一个string转化成符合命名规则的string 急急!!!.net 请问messagebox可否指定大小. datagridview中添加查询的功能 C# 怎样将DataGridView中的更改保存到数据库 ComboBox右边的小箭头按钮可以隐藏掉,只在用到的时候才显示吗? .Net的 AppDomain 没有达到MS所宣传的核心功能:“使用应用程序域隔离可能终止进程的任务。” ;难道是我错了? 有请Stdotleo近来拿分 急,急,sql问题? webbrowser自动填表问题
/// 通过点坐标算得到角度
/// </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); // 把坐标原点移回去
}
我工程里用的,你参考一下
{
return new Point(x+r*Math.Cos(a),y+r*Math.Sin(a));
}